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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
package node
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestActive(t *testing.T) {
create := func() *ActiveConfigPersistence {
dir := t.TempDir()
config := NewConfigPersistence(dir + "/state")
return config
}
t.Run("SequencerStateUnsetWhenFileDoesNotExist", func(t *testing.T) {
config := create()
state, err := config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateUnset, state)
})
t.Run("PersistSequencerStarted", func(t *testing.T) {
config1 := create()
require.NoError(t, config1.SequencerStarted())
state, err := config1.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStarted, state)
config2 := NewConfigPersistence(config1.file)
state, err = config2.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStarted, state)
})
t.Run("PersistSequencerStopped", func(t *testing.T) {
config1 := create()
require.NoError(t, config1.SequencerStopped())
state, err := config1.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStopped, state)
config2 := NewConfigPersistence(config1.file)
state, err = config2.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStopped, state)
})
t.Run("PersistMultipleChanges", func(t *testing.T) {
config := create()
require.NoError(t, config.SequencerStarted())
state, err := config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStarted, state)
require.NoError(t, config.SequencerStopped())
state, err = config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStopped, state)
})
t.Run("CreateParentDirs", func(t *testing.T) {
dir := t.TempDir()
config := NewConfigPersistence(dir + "/some/dir/state")
// Should be unset before file exists
state, err := config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateUnset, state)
require.NoFileExists(t, config.file)
// Should create directories when updating
require.NoError(t, config.SequencerStarted())
require.FileExists(t, config.file)
state, err = config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateStarted, state)
})
}
func TestDisabledConfigPersistence_AlwaysUnset(t *testing.T) {
config := DisabledConfigPersistence{}
state, err := config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateUnset, state)
require.NoError(t, config.SequencerStarted())
state, err = config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateUnset, state)
require.NoError(t, config.SequencerStopped())
state, err = config.SequencerState()
require.NoError(t, err)
require.Equal(t, StateUnset, state)
}