github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/cmd/tendermint/commands/reset_test.go (about) 1 package commands 2 3 import ( 4 "context" 5 "path/filepath" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 10 cfg "github.com/ari-anchor/sei-tendermint/config" 11 "github.com/ari-anchor/sei-tendermint/libs/log" 12 "github.com/ari-anchor/sei-tendermint/privval" 13 "github.com/ari-anchor/sei-tendermint/types" 14 ) 15 16 func Test_ResetAll(t *testing.T) { 17 config := cfg.TestConfig() 18 dir := t.TempDir() 19 config.SetRoot(dir) 20 logger := log.NewNopLogger() 21 cfg.EnsureRoot(dir) 22 require.NoError(t, initFilesWithConfig(context.Background(), config, logger, types.ABCIPubKeyTypeEd25519)) 23 pv, err := privval.LoadFilePV(config.PrivValidator.KeyFile(), config.PrivValidator.StateFile()) 24 require.NoError(t, err) 25 pv.LastSignState.Height = 10 26 require.NoError(t, pv.Save()) 27 require.NoError(t, ResetAll(config.DBDir(), config.PrivValidator.KeyFile(), 28 config.PrivValidator.StateFile(), logger, types.ABCIPubKeyTypeEd25519)) 29 require.DirExists(t, config.DBDir()) 30 require.NoFileExists(t, filepath.Join(config.DBDir(), "block.db")) 31 require.NoFileExists(t, filepath.Join(config.DBDir(), "state.db")) 32 require.NoFileExists(t, filepath.Join(config.DBDir(), "evidence.db")) 33 require.NoFileExists(t, filepath.Join(config.DBDir(), "tx_index.db")) 34 require.FileExists(t, config.PrivValidator.StateFile()) 35 pv, err = privval.LoadFilePV(config.PrivValidator.KeyFile(), config.PrivValidator.StateFile()) 36 require.NoError(t, err) 37 require.Equal(t, int64(0), pv.LastSignState.Height) 38 } 39 40 func Test_ResetState(t *testing.T) { 41 config := cfg.TestConfig() 42 dir := t.TempDir() 43 config.SetRoot(dir) 44 logger := log.NewNopLogger() 45 cfg.EnsureRoot(dir) 46 require.NoError(t, initFilesWithConfig(context.Background(), config, logger, types.ABCIPubKeyTypeEd25519)) 47 pv, err := privval.LoadFilePV(config.PrivValidator.KeyFile(), config.PrivValidator.StateFile()) 48 require.NoError(t, err) 49 pv.LastSignState.Height = 10 50 require.NoError(t, pv.Save()) 51 require.NoError(t, ResetState(config.DBDir(), logger)) 52 require.DirExists(t, config.DBDir()) 53 require.NoFileExists(t, filepath.Join(config.DBDir(), "block.db")) 54 require.NoFileExists(t, filepath.Join(config.DBDir(), "state.db")) 55 require.NoFileExists(t, filepath.Join(config.DBDir(), "evidence.db")) 56 require.NoFileExists(t, filepath.Join(config.DBDir(), "tx_index.db")) 57 require.FileExists(t, config.PrivValidator.StateFile()) 58 pv, err = privval.LoadFilePV(config.PrivValidator.KeyFile(), config.PrivValidator.StateFile()) 59 require.NoError(t, err) 60 // private validator state should still be in tact. 61 require.Equal(t, int64(10), pv.LastSignState.Height) 62 } 63 64 func Test_UnsafeResetAll(t *testing.T) { 65 config := cfg.TestConfig() 66 dir := t.TempDir() 67 config.SetRoot(dir) 68 logger := log.NewNopLogger() 69 cfg.EnsureRoot(dir) 70 require.NoError(t, initFilesWithConfig(context.Background(), config, logger, types.ABCIPubKeyTypeEd25519)) 71 pv, err := privval.LoadFilePV(config.PrivValidator.KeyFile(), config.PrivValidator.StateFile()) 72 require.NoError(t, err) 73 pv.LastSignState.Height = 10 74 require.NoError(t, pv.Save()) 75 require.NoError(t, ResetAll(config.DBDir(), config.PrivValidator.KeyFile(), 76 config.PrivValidator.StateFile(), logger, types.ABCIPubKeyTypeEd25519)) 77 require.DirExists(t, config.DBDir()) 78 require.NoFileExists(t, filepath.Join(config.DBDir(), "block.db")) 79 require.NoFileExists(t, filepath.Join(config.DBDir(), "state.db")) 80 require.NoFileExists(t, filepath.Join(config.DBDir(), "evidence.db")) 81 require.NoFileExists(t, filepath.Join(config.DBDir(), "tx_index.db")) 82 require.FileExists(t, config.PrivValidator.StateFile()) 83 pv, err = privval.LoadFilePV(config.PrivValidator.KeyFile(), config.PrivValidator.StateFile()) 84 require.NoError(t, err) 85 require.Equal(t, int64(0), pv.LastSignState.Height) 86 }