master
go 79 lines 2.32 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package chartengine
4
5 import (
6 "testing"
7
8 "github.com/stretchr/testify/assert"
9 "github.com/stretchr/testify/require"
10 )
11
12 func TestObserveBuildSuccessSeqTransitions(t *testing.T) {
13 tests := map[string]struct {
14 run func(t *testing.T)
15 }{
16 "collector mode transitions": {
17 run: func(t *testing.T) {
18 e, err := New()
19 require.NoError(t, err)
20
21 obs := e.observeBuildSuccessSeq(10)
22 assert.Equal(t, buildSeqTransitionNone, obs.transition)
23 assert.Equal(t, uint64(0), obs.previous)
24
25 obs = e.observeBuildSuccessSeq(10)
26 assert.Equal(t, buildSeqTransitionBroken, obs.transition)
27 assert.Equal(t, uint64(10), obs.previous)
28
29 obs = e.observeBuildSuccessSeq(10)
30 assert.Equal(t, buildSeqTransitionNone, obs.transition)
31 assert.Equal(t, uint64(10), obs.previous)
32
33 obs = e.observeBuildSuccessSeq(9)
34 assert.Equal(t, buildSeqTransitionNone, obs.transition)
35 assert.Equal(t, uint64(10), obs.previous)
36
37 obs = e.observeBuildSuccessSeq(11)
38 assert.Equal(t, buildSeqTransitionRecovered, obs.transition)
39 assert.Equal(t, uint64(10), obs.previous)
40
41 obs = e.observeBuildSuccessSeq(12)
42 assert.Equal(t, buildSeqTransitionNone, obs.transition)
43 assert.Equal(t, uint64(11), obs.previous)
44 },
45 },
46 "runtime mode transitions": {
47 run: func(t *testing.T) {
48 e, err := New(WithRuntimePlannerMode())
49 require.NoError(t, err)
50
51 obs := e.observeBuildSuccessSeq(10)
52 assert.Equal(t, buildSeqTransitionNone, obs.transition)
53 assert.Equal(t, uint64(0), obs.previous)
54
55 // Stable sequence is expected in runtime mode (no-write ticks).
56 obs = e.observeBuildSuccessSeq(10)
57 assert.Equal(t, buildSeqTransitionNone, obs.transition)
58 assert.Equal(t, uint64(10), obs.previous)
59
60 obs = e.observeBuildSuccessSeq(9)
61 assert.Equal(t, buildSeqTransitionBroken, obs.transition)
62 assert.Equal(t, uint64(10), obs.previous)
63
64 // Recovery is allowed once sequence catches up to previous value.
65 obs = e.observeBuildSuccessSeq(10)
66 assert.Equal(t, buildSeqTransitionRecovered, obs.transition)
67 assert.Equal(t, uint64(10), obs.previous)
68
69 obs = e.observeBuildSuccessSeq(10)
70 assert.Equal(t, buildSeqTransitionNone, obs.transition)
71 assert.Equal(t, uint64(10), obs.previous)
72 },
73 },
74 }
75
76 for name, tc := range tests {
77 t.Run(name, tc.run)
78 }
79 }