| OLD | NEW |
| (Empty) |
| 1 package db | |
| 2 | |
| 3 import ( | |
| 4 "testing" | |
| 5 "time" | |
| 6 | |
| 7 assert "github.com/stretchr/testify/require" | |
| 8 | |
| 9 "go.skia.org/infra/go/testutils" | |
| 10 ) | |
| 11 | |
| 12 func TestModifiedTasks(t *testing.T) { | |
| 13 m := ModifiedTasks{} | |
| 14 | |
| 15 _, err := m.GetModifiedTasks("dummy-id") | |
| 16 assert.True(t, IsUnknownId(err)) | |
| 17 | |
| 18 id, err := m.StartTrackingModifiedTasks() | |
| 19 assert.NoError(t, err) | |
| 20 | |
| 21 tasks, err := m.GetModifiedTasks(id) | |
| 22 assert.NoError(t, err) | |
| 23 assert.Equal(t, 0, len(tasks)) | |
| 24 | |
| 25 t1 := makeTask(time.Unix(0, 1470674132000000), []string{"a", "b", "c", "
d"}) | |
| 26 t1.Id = "1" | |
| 27 | |
| 28 // Insert the task. | |
| 29 m.TrackModifiedTask(t1) | |
| 30 | |
| 31 // Ensure that the task shows up in the modified list. | |
| 32 tasks, err = m.GetModifiedTasks(id) | |
| 33 assert.NoError(t, err) | |
| 34 testutils.AssertDeepEqual(t, []*Task{t1}, tasks) | |
| 35 | |
| 36 // Insert two more tasks. | |
| 37 t2 := makeTask(time.Unix(0, 1470674376000000), []string{"e", "f"}) | |
| 38 t2.Id = "2" | |
| 39 m.TrackModifiedTask(t2) | |
| 40 t3 := makeTask(time.Unix(0, 1470674884000000), []string{"g", "h"}) | |
| 41 t3.Id = "3" | |
| 42 m.TrackModifiedTask(t3) | |
| 43 | |
| 44 // Ensure that both tasks show up in the modified list. | |
| 45 tasks, err = m.GetModifiedTasks(id) | |
| 46 assert.NoError(t, err) | |
| 47 testutils.AssertDeepEqual(t, []*Task{t2, t3}, tasks) | |
| 48 | |
| 49 // Check StopTrackingModifiedTasks. | |
| 50 m.StopTrackingModifiedTasks(id) | |
| 51 _, err = m.GetModifiedTasks(id) | |
| 52 assert.True(t, IsUnknownId(err)) | |
| 53 } | |
| 54 | |
| 55 // Test that if a Task is modified multiple times, it only appears once in the | |
| 56 // result of GetModifiedTasks. | |
| 57 func TestMultipleModifications(t *testing.T) { | |
| 58 m := ModifiedTasks{} | |
| 59 | |
| 60 id, err := m.StartTrackingModifiedTasks() | |
| 61 assert.NoError(t, err) | |
| 62 | |
| 63 t1 := makeTask(time.Unix(0, 1470674132000000), []string{"a", "b", "c", "
d"}) | |
| 64 t1.Id = "1" | |
| 65 | |
| 66 // Insert the task. | |
| 67 m.TrackModifiedTask(t1) | |
| 68 | |
| 69 // Make several more modifications. | |
| 70 t1.Status = TASK_STATUS_RUNNING | |
| 71 m.TrackModifiedTask(t1) | |
| 72 t1.Status = TASK_STATUS_SUCCESS | |
| 73 m.TrackModifiedTask(t1) | |
| 74 | |
| 75 // Ensure that the task shows up only once in the modified list. | |
| 76 tasks, err := m.GetModifiedTasks(id) | |
| 77 assert.NoError(t, err) | |
| 78 testutils.AssertDeepEqual(t, []*Task{t1}, tasks) | |
| 79 } | |
| 80 | |
| 81 func TestModifiedTasksTooManyUsers(t *testing.T) { | |
| 82 m := ModifiedTasks{} | |
| 83 | |
| 84 var oneId string | |
| 85 // Max out the number of modified-tasks users; ensure that we error out. | |
| 86 for i := 0; i < MAX_MODIFIED_TASKS_USERS; i++ { | |
| 87 id, err := m.StartTrackingModifiedTasks() | |
| 88 assert.NoError(t, err) | |
| 89 oneId = id | |
| 90 } | |
| 91 _, err := m.StartTrackingModifiedTasks() | |
| 92 assert.True(t, IsTooManyUsers(err)) | |
| 93 | |
| 94 m.StopTrackingModifiedTasks(oneId) | |
| 95 _, err = m.StartTrackingModifiedTasks() | |
| 96 assert.NoError(t, err) | |
| 97 } | |
| OLD | NEW |