github.com/ethereum-optimism/optimism@v1.7.2/op-node/node/config_persistence_test.go (about) 1 package node 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestActive(t *testing.T) { 10 create := func() *ActiveConfigPersistence { 11 dir := t.TempDir() 12 config := NewConfigPersistence(dir + "/state") 13 return config 14 } 15 16 t.Run("SequencerStateUnsetWhenFileDoesNotExist", func(t *testing.T) { 17 config := create() 18 state, err := config.SequencerState() 19 require.NoError(t, err) 20 require.Equal(t, StateUnset, state) 21 }) 22 23 t.Run("PersistSequencerStarted", func(t *testing.T) { 24 config1 := create() 25 require.NoError(t, config1.SequencerStarted()) 26 state, err := config1.SequencerState() 27 require.NoError(t, err) 28 require.Equal(t, StateStarted, state) 29 30 config2 := NewConfigPersistence(config1.file) 31 state, err = config2.SequencerState() 32 require.NoError(t, err) 33 require.Equal(t, StateStarted, state) 34 }) 35 36 t.Run("PersistSequencerStopped", func(t *testing.T) { 37 config1 := create() 38 require.NoError(t, config1.SequencerStopped()) 39 state, err := config1.SequencerState() 40 require.NoError(t, err) 41 require.Equal(t, StateStopped, state) 42 43 config2 := NewConfigPersistence(config1.file) 44 state, err = config2.SequencerState() 45 require.NoError(t, err) 46 require.Equal(t, StateStopped, state) 47 }) 48 49 t.Run("PersistMultipleChanges", func(t *testing.T) { 50 config := create() 51 require.NoError(t, config.SequencerStarted()) 52 state, err := config.SequencerState() 53 require.NoError(t, err) 54 require.Equal(t, StateStarted, state) 55 56 require.NoError(t, config.SequencerStopped()) 57 state, err = config.SequencerState() 58 require.NoError(t, err) 59 require.Equal(t, StateStopped, state) 60 }) 61 62 t.Run("CreateParentDirs", func(t *testing.T) { 63 dir := t.TempDir() 64 config := NewConfigPersistence(dir + "/some/dir/state") 65 66 // Should be unset before file exists 67 state, err := config.SequencerState() 68 require.NoError(t, err) 69 require.Equal(t, StateUnset, state) 70 require.NoFileExists(t, config.file) 71 72 // Should create directories when updating 73 require.NoError(t, config.SequencerStarted()) 74 require.FileExists(t, config.file) 75 state, err = config.SequencerState() 76 require.NoError(t, err) 77 require.Equal(t, StateStarted, state) 78 }) 79 } 80 81 func TestDisabledConfigPersistence_AlwaysUnset(t *testing.T) { 82 config := DisabledConfigPersistence{} 83 state, err := config.SequencerState() 84 require.NoError(t, err) 85 require.Equal(t, StateUnset, state) 86 87 require.NoError(t, config.SequencerStarted()) 88 state, err = config.SequencerState() 89 require.NoError(t, err) 90 require.Equal(t, StateUnset, state) 91 92 require.NoError(t, config.SequencerStopped()) 93 state, err = config.SequencerState() 94 require.NoError(t, err) 95 require.Equal(t, StateUnset, state) 96 }