Index: build_scheduler/go/db/cache_test.go |
diff --git a/build_scheduler/go/db/cache_test.go b/build_scheduler/go/db/cache_test.go |
deleted file mode 100644 |
index d490b7439497565b91d5ed395aab01b5800d0ab0..0000000000000000000000000000000000000000 |
--- a/build_scheduler/go/db/cache_test.go |
+++ /dev/null |
@@ -1,208 +0,0 @@ |
-package db |
- |
-import ( |
- "testing" |
- "time" |
- |
- assert "github.com/stretchr/testify/require" |
- "go.skia.org/infra/go/testutils" |
-) |
- |
-func testGetTasksForCommits(t *testing.T, c TaskCache, b *Task) { |
- for _, commit := range b.Commits { |
- found, err := c.GetTaskForCommit(DEFAULT_TEST_REPO, commit, b.Name) |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, b, found) |
- |
- tasks, err := c.GetTasksForCommits(DEFAULT_TEST_REPO, []string{commit}) |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, map[string]map[string]*Task{ |
- commit: map[string]*Task{ |
- b.Name: b, |
- }, |
- }, tasks) |
- } |
-} |
- |
-func TestDBCache(t *testing.T) { |
- db := NewInMemoryDB() |
- defer testutils.AssertCloses(t, db) |
- |
- // Pre-load a task into the DB. |
- startTime := time.Now().Add(-30 * time.Minute) // Arbitrary starting point. |
- t1 := makeTask(startTime, []string{"a", "b", "c", "d"}) |
- assert.NoError(t, db.PutTask(t1)) |
- |
- // Create the cache. Ensure that the existing task is present. |
- c, err := NewTaskCache(db, time.Hour) |
- assert.NoError(t, err) |
- testGetTasksForCommits(t, c, t1) |
- |
- // Bisect the first task. |
- t2 := makeTask(startTime.Add(time.Minute), []string{"c", "d"}) |
- t1.Commits = []string{"a", "b"} |
- assert.NoError(t, db.PutTasks([]*Task{t2, t1})) |
- assert.NoError(t, c.Update()) |
- |
- // Ensure that t2 (and not t1) shows up for commits "c" and "d". |
- testGetTasksForCommits(t, c, t1) |
- testGetTasksForCommits(t, c, t2) |
- |
- // Insert a task on a second bot. |
- t3 := makeTask(startTime.Add(2*time.Minute), []string{"a", "b"}) |
- t3.Name = "Another-Task" |
- assert.NoError(t, db.PutTask(t3)) |
- assert.NoError(t, c.Update()) |
- tasks, err := c.GetTasksForCommits(DEFAULT_TEST_REPO, []string{"b"}) |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, map[string]map[string]*Task{ |
- "b": map[string]*Task{ |
- t1.Name: t1, |
- t3.Name: t3, |
- }, |
- }, tasks) |
-} |
- |
-func TestDBCacheMultiRepo(t *testing.T) { |
- db := NewInMemoryDB() |
- defer testutils.AssertCloses(t, db) |
- |
- // Insert several tasks with different repos. |
- startTime := time.Now().Add(-30 * time.Minute) // Arbitrary starting point. |
- t1 := makeTask(startTime, []string{"a", "b"}) // Default Repo. |
- t2 := makeTask(startTime, []string{"a", "b"}) |
- t2.Repo = "thats-what-you.git" |
- t3 := makeTask(startTime, []string{"b", "c"}) |
- t3.Repo = "never-for.git" |
- assert.NoError(t, db.PutTasks([]*Task{t1, t2, t3})) |
- |
- // Create the cache. |
- c, err := NewTaskCache(db, time.Hour) |
- assert.NoError(t, err) |
- |
- // Check that there's no conflict among the tasks in different repos. |
- { |
- tasks, err := c.GetTasksForCommits(t1.Repo, []string{"a", "b", "c"}) |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, map[string]map[string]*Task{ |
- "a": map[string]*Task{ |
- t1.Name: t1, |
- }, |
- "b": map[string]*Task{ |
- t1.Name: t1, |
- }, |
- "c": map[string]*Task{}, |
- }, tasks) |
- } |
- |
- { |
- tasks, err := c.GetTasksForCommits(t2.Repo, []string{"a", "b", "c"}) |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, map[string]map[string]*Task{ |
- "a": map[string]*Task{ |
- t1.Name: t2, |
- }, |
- "b": map[string]*Task{ |
- t1.Name: t2, |
- }, |
- "c": map[string]*Task{}, |
- }, tasks) |
- } |
- |
- { |
- tasks, err := c.GetTasksForCommits(t3.Repo, []string{"a", "b", "c"}) |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, map[string]map[string]*Task{ |
- "a": map[string]*Task{}, |
- "b": map[string]*Task{ |
- t1.Name: t3, |
- }, |
- "c": map[string]*Task{ |
- t1.Name: t3, |
- }, |
- }, tasks) |
- } |
-} |
- |
-func TestDBCacheReset(t *testing.T) { |
- db := NewInMemoryDB() |
- defer testutils.AssertCloses(t, db) |
- |
- // Pre-load a task into the DB. |
- startTime := time.Now().Add(-30 * time.Minute) // Arbitrary starting point. |
- t1 := makeTask(startTime, []string{"a", "b", "c", "d"}) |
- assert.NoError(t, db.PutTask(t1)) |
- |
- // Create the cache. Ensure that the existing task is present. |
- c, err := NewTaskCache(db, time.Hour) |
- assert.NoError(t, err) |
- testGetTasksForCommits(t, c, t1) |
- |
- // Pretend the DB connection is lost. |
- db.StopTrackingModifiedTasks(c.(*taskCache).queryId) |
- |
- // Make an update. |
- t2 := makeTask(startTime.Add(time.Minute), []string{"c", "d"}) |
- t1.Commits = []string{"a", "b"} |
- assert.NoError(t, db.PutTasks([]*Task{t2, t1})) |
- |
- // Ensure cache gets reset. |
- assert.NoError(t, c.Update()) |
- testGetTasksForCommits(t, c, t1) |
- testGetTasksForCommits(t, c, t2) |
-} |
- |
-func TestCacheUnfinished(t *testing.T) { |
- db := NewInMemoryDB() |
- defer testutils.AssertCloses(t, db) |
- |
- // Insert a task. |
- startTime := time.Now().Add(-30 * time.Minute) |
- t1 := makeTask(startTime, []string{"a"}) |
- assert.False(t, t1.Done()) |
- assert.NoError(t, db.PutTask(t1)) |
- |
- // Create the cache. Ensure that the existing task is present. |
- c, err := NewTaskCache(db, time.Hour) |
- assert.NoError(t, err) |
- tasks, err := c.UnfinishedTasks() |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, []*Task{t1}, tasks) |
- |
- // Finish the task. Insert it, ensure that it's not unfinished. |
- t1.Status = TASK_STATUS_SUCCESS |
- assert.True(t, t1.Done()) |
- assert.NoError(t, db.PutTask(t1)) |
- assert.NoError(t, c.Update()) |
- tasks, err = c.UnfinishedTasks() |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, []*Task{}, tasks) |
- |
- // Already-finished task. |
- t2 := makeTask(time.Now(), []string{"a"}) |
- t2.Status = TASK_STATUS_MISHAP |
- assert.True(t, t2.Done()) |
- assert.NoError(t, db.PutTask(t2)) |
- assert.NoError(t, c.Update()) |
- tasks, err = c.UnfinishedTasks() |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, []*Task{}, tasks) |
- |
- // An unfinished task, created after the cache was created. |
- t3 := makeTask(time.Now(), []string{"b"}) |
- assert.False(t, t3.Done()) |
- assert.NoError(t, db.PutTask(t3)) |
- assert.NoError(t, c.Update()) |
- tasks, err = c.UnfinishedTasks() |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, []*Task{t3}, tasks) |
- |
- // Update the task. |
- t3.Commits = []string{"c", "d", "f"} |
- assert.False(t, t3.Done()) |
- assert.NoError(t, db.PutTask(t3)) |
- assert.NoError(t, c.Update()) |
- tasks, err = c.UnfinishedTasks() |
- assert.NoError(t, err) |
- testutils.AssertDeepEqual(t, []*Task{t3}, tasks) |
-} |