-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathservice_test.go
45 lines (38 loc) · 1.14 KB
/
service_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package config
import (
"math/rand"
"testing"
"time"
)
func TestNextSchedule(t *testing.T) {
svc := &ServiceConfig{}
svc.Daemon.Schedule = schedule{4, 0, 0} // 04:00:00
svc.Daemon.Jitter = duration(time.Second) // 03:59:59.5 - 04:00:00.5
rand.Seed(0)
// ref = (any) date, but 31 seconds before designated schedule
ref := time.Date(2018, time.December, 9, 3, 59, 29, 0, time.UTC)
// after i = 0, ref = 2018-12-09 03:59:34
// i = 1, ref = 2018-12-09 03:59:39
// ...
// i = 5, ref = 2018-12-09 03:59:59
for i := 0; i < 6; i++ {
ref = ref.Add(5 * time.Second)
next := svc.NextSchedule(ref)
if next.Day() != ref.Day() {
t.Errorf("a%d ref=%s, unexpected jump to %s\n",
i, ref.Format(time.RFC3339), next.Format(time.RFC3339))
}
}
// after i = 0, ref = 2018-12-09 04:00:04
// i = 1, ref = 2018-12-09 04:00:09
// ...
// i = 5, ref = 2018-12-09 04:00:29
for i := 0; i < 6; i++ {
ref = ref.Add(5 * time.Second)
next := svc.NextSchedule(ref)
if next.Day() != ref.Day()+1 {
t.Errorf("b%d ref=%s, unexpected jump to %s\n",
i, ref.Format(time.RFC3339), next.Format(time.RFC3339))
}
}
}