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 |