github.com/Finschia/ostracon@v1.1.5/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/Finschia/ostracon/config" 13 "github.com/Finschia/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 require.NoError(t, os.Setenv("OCHOME", rootDir)) 22 return rootDir 23 } 24 25 func TestResetAllCmd(t *testing.T) { 26 setupEnv(t) 27 err := ResetAllCmd.RunE(ResetAllCmd, nil) 28 require.NoError(t, err) 29 } 30 31 func TestResetStateCmd(t *testing.T) { 32 setupEnv(t) 33 err := ResetStateCmd.RunE(ResetStateCmd, nil) 34 require.NoError(t, err) 35 } 36 37 func TestResetPrivValidatorCmd(t *testing.T) { 38 setupEnv(t) 39 err := ResetPrivValidatorCmd.RunE(ResetPrivValidatorCmd, nil) 40 require.NoError(t, err) 41 } 42 func Test_ResetAll(t *testing.T) { 43 config := cfg.TestConfig() 44 dir := t.TempDir() 45 config.SetRoot(dir) 46 cfg.EnsureRoot(dir) 47 require.NoError(t, initFilesWithConfig(config)) 48 pv := privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 49 pv.LastSignState.Height = 10 50 pv.Save() 51 require.NoError(t, resetAll(config.DBDir(), config.P2P.AddrBookFile(), config.PrivValidatorKeyFile(), 52 config.PrivValidatorStateFile(), logger)) 53 require.DirExists(t, config.DBDir()) 54 require.NoFileExists(t, filepath.Join(config.DBDir(), "block.db")) 55 require.NoFileExists(t, filepath.Join(config.DBDir(), "state.db")) 56 require.NoFileExists(t, filepath.Join(config.DBDir(), "evidence.db")) 57 require.NoFileExists(t, filepath.Join(config.DBDir(), "tx_index.db")) 58 require.FileExists(t, config.PrivValidatorStateFile()) 59 pv = privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 60 require.Equal(t, int64(0), pv.LastSignState.Height) 61 } 62 63 func Test_ResetState(t *testing.T) { 64 config := cfg.TestConfig() 65 dir := t.TempDir() 66 config.SetRoot(dir) 67 cfg.EnsureRoot(dir) 68 require.NoError(t, initFilesWithConfig(config)) 69 pv := privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 70 pv.LastSignState.Height = 10 71 pv.Save() 72 require.NoError(t, resetState(config.DBDir(), logger)) 73 require.DirExists(t, config.DBDir()) 74 require.NoFileExists(t, filepath.Join(config.DBDir(), "block.db")) 75 require.NoFileExists(t, filepath.Join(config.DBDir(), "state.db")) 76 require.NoFileExists(t, filepath.Join(config.DBDir(), "evidence.db")) 77 require.NoFileExists(t, filepath.Join(config.DBDir(), "tx_index.db")) 78 require.FileExists(t, config.PrivValidatorStateFile()) 79 pv = privval.LoadFilePV(config.PrivValidatorKeyFile(), config.PrivValidatorStateFile()) 80 // private validator state should still be in tact. 81 require.Equal(t, int64(10), pv.LastSignState.Height) 82 }