7 func TestNextLeaderTime(t *testing.T) {
15 wantNextLeaderTime int64
19 startTime: 1557906284061,
20 endTime: 1557906784061,
24 wantNextLeaderTime: 1557906537561,
27 desc: "best block height equals to start block height",
28 startTime: 1557906284061,
29 endTime: 1557906784061,
33 wantNextLeaderTime: 1557906284061,
36 desc: "best block height equals to start block height",
37 startTime: 1557906284061,
38 endTime: 1557906784061,
42 wantNextLeaderTime: 1557906284061 + blockNumEachNode*blockTimeInterval,
45 desc: "has no chance product block in this round of voting",
46 startTime: 1557906284061,
47 endTime: 1557906784061,
50 wantError: errHasNoChanceProductBlock,
51 wantNextLeaderTime: 0,
54 desc: "the node is producting block",
55 startTime: 1557906284061,
56 endTime: 1557906784061,
60 wantNextLeaderTime: 1557906284061,
63 desc: "the node is producting block",
64 startTime: 1557906284061,
65 endTime: 1557906784061,
69 wantNextLeaderTime: 1557906284061 + 66*blockTimeInterval,
72 desc: "first round, must exclude genesis block",
73 startTime: 1557906284061,
74 endTime: 1557906783561,
78 wantNextLeaderTime: 1557906284061 + 9*blockTimeInterval,
82 for i, c := range cases {
83 nextLeaderTime, err := nextLeaderTimeHelper(c.startTime, c.endTime, c.now, c.nodeOrder)
84 if err != c.wantError {
85 t.Fatalf("case #%d (%s) want error:%v, got error:%v", i, c.desc, c.wantError, err)
91 nextLeaderTimestamp := nextLeaderTime.UnixNano() / 1e6
92 if nextLeaderTimestamp != c.wantNextLeaderTime {
93 t.Errorf("case #%d (%s) want next leader time:%d, got next leader time:%d", i, c.desc, c.wantNextLeaderTime, nextLeaderTimestamp)