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  }