github.com/line/ostracon@v1.0.10-0.20230328032236-7f20145f065d/cmd/ostracon/commands/reset_test.go (about) 1 package commands 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 8 "github.com/spf13/viper" 9 10 "github.com/stretchr/testify/require" 11 12 cfg "github.com/line/ostracon/config" 13 "github.com/line/ostracon/privval" 14 ) 15 16 func setupEnv(t *testing.T) string { 17 rootDir := t.TempDir() 18 viper.SetEnvPrefix("OC") 19 require.NoError(t, viper.BindEnv("HOME")) 20 require.NoError(t, os.Setenv("OC_HOME", rootDir)) 21 return rootDir 22 } 23 24 func TestResetAllCmd(t *testing.T) { 25 setupEnv(t) 26 err := ResetAllCmd.RunE(ResetAllCmd, nil) 27 require.NoError(t, err) 28 } 29 30 func TestResetStateCmd(t *testing.T) { 31 setupEnv(t) 32 err := ResetStateCmd.RunE(ResetStateCmd, nil) 33 require.NoError(t, err) 34 } 35 36 func TestResetPrivValidatorCmd(t *testing.T) { 37 setupEnv(t) 38 err := ResetPrivValidatorCmd.RunE(ResetPrivValidatorCmd, nil) 39 require.NoError(t, err) 40 } 41 func Test_ResetAll(t *testing.T) { 42 config := cfg.TestConfig() 43 dir := t.TempDir() 44 config.SetRoot(dir) 45 cfg.EnsureRoot(dir) 46 require.NoError(t, initFilesWithConfig(config)) 47 pv := privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 48 pv.LastSignState.Height = 10 49 pv.Save() 50 require.NoError(t, resetAll(config.DBDir(), config.P2P.AddrBookFile(), config.PrivValidatorKeyFile(), 51 config.PrivValidatorStateFile(), 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.PrivValidatorStateFile()) 58 pv = privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 59 require.Equal(t, int64(0), pv.LastSignState.Height) 60 } 61 62 func Test_ResetState(t *testing.T) { 63 config := cfg.TestConfig() 64 dir := t.TempDir() 65 config.SetRoot(dir) 66 cfg.EnsureRoot(dir) 67 require.NoError(t, initFilesWithConfig(config)) 68 pv := privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 69 pv.LastSignState.Height = 10 70 pv.Save() 71 require.NoError(t, resetState(config.DBDir(), logger)) 72 require.DirExists(t, config.DBDir()) 73 require.NoFileExists(t, filepath.Join(config.DBDir(), "block.db")) 74 require.NoFileExists(t, filepath.Join(config.DBDir(), "state.db")) 75 require.NoFileExists(t, filepath.Join(config.DBDir(), "evidence.db")) 76 require.NoFileExists(t, filepath.Join(config.DBDir(), "tx_index.db")) 77 require.FileExists(t, config.PrivValidatorStateFile()) 78 pv = privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 79 // private validator state should still be in tact. 80 require.Equal(t, int64(10), pv.LastSignState.Height) 81 }