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  }