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  }