From 49812b6e7ce7e20979c00cd7314b07d35f8f9ef5 Mon Sep 17 00:00:00 2001 From: Robert Pirtle Date: Fri, 9 Jun 2023 16:52:52 -0700 Subject: [PATCH] fix(cli): Resolve problem with assert-invariants cmd (#1624) * remove no-op migrate command * move assert-invariants from migrate -> cmd * fix: don't modify validators for assert-invariants Makes validator addition in TestApp initialization optional. * update changelog --- CHANGELOG.md | 5 ++ app/test_common.go | 17 +++--- .../kava/cmd/assert-invariants.go | 56 +++---------------- cmd/kava/cmd/root.go | 4 +- migrate/cmd_test.go | 32 ----------- 5 files changed, 25 insertions(+), 89 deletions(-) rename migrate/cmd.go => cmd/kava/cmd/assert-invariants.go (56%) delete mode 100644 migrate/cmd_test.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 586a0ee3..d3be2ed9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ NOTE: no changes were made to existing Msg names (`MsgConvertCoinToERC20` & `MsgConvertERC20ToCoin`) - `convert-erc20-to-coin` -> `convert-evm-erc20-to-coin` - `convert-coin-to-erc20` -> `convert-evm-erc20-from-coin` +- (cli) [#1624] Removes unused, no-op `migrate` CLI command. + +### Bug Fixes +- (cli) [#1624] Fix `assert-invariants` CLI command. ## [v0.23.2] @@ -264,6 +268,7 @@ the [changelog](https://github.com/cosmos/cosmos-sdk/blob/v0.38.4/CHANGELOG.md). - [#257](https://github.com/Kava-Labs/kava/pulls/257) Include scripts to run large-scale simulations remotely using aws-batch +[#1624]: https://github.com/Kava-Labs/kava/pull/1624 [#1622]: https://github.com/Kava-Labs/kava/pull/1622 [#1614]: https://github.com/Kava-Labs/kava/pull/1614 [#1610]: https://github.com/Kava-Labs/kava/pull/1610 diff --git a/app/test_common.go b/app/test_common.go index 783667f7..338633d9 100644 --- a/app/test_common.go +++ b/app/test_common.go @@ -275,19 +275,19 @@ func genesisStateWithValSet( // InitializeFromGenesisStates calls InitChain on the app using the provided genesis states. // If any module genesis states are missing, defaults are used. func (tApp TestApp) InitializeFromGenesisStates(genesisStates ...GenesisState) TestApp { - return tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight(emptyTime, testChainID, defaultInitialHeight, genesisStates...) + return tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight(emptyTime, testChainID, defaultInitialHeight, true, genesisStates...) } // InitializeFromGenesisStatesWithTime calls InitChain on the app using the provided genesis states and time. // If any module genesis states are missing, defaults are used. func (tApp TestApp) InitializeFromGenesisStatesWithTime(genTime time.Time, genesisStates ...GenesisState) TestApp { - return tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight(genTime, testChainID, defaultInitialHeight, genesisStates...) + return tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight(genTime, testChainID, defaultInitialHeight, true, genesisStates...) } // InitializeFromGenesisStatesWithTimeAndChainID calls InitChain on the app using the provided genesis states, time, and chain id. // If any module genesis states are missing, defaults are used. func (tApp TestApp) InitializeFromGenesisStatesWithTimeAndChainID(genTime time.Time, chainID string, genesisStates ...GenesisState) TestApp { - return tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight(genTime, chainID, defaultInitialHeight, genesisStates...) + return tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight(genTime, chainID, defaultInitialHeight, true, genesisStates...) } // InitializeFromGenesisStatesWithTimeAndChainIDAndHeight calls InitChain on the app using the provided genesis states and other parameters. @@ -296,6 +296,7 @@ func (tApp TestApp) InitializeFromGenesisStatesWithTimeAndChainIDAndHeight( genTime time.Time, chainID string, initialHeight int64, + addValidator bool, genesisStates ...GenesisState, ) TestApp { // Create a default genesis state and overwrite with provided values @@ -318,10 +319,12 @@ func (tApp TestApp) InitializeFromGenesisStatesWithTimeAndChainIDAndHeight( } // Add default genesis states for at least 1 validator - genesisState = GenesisStateWithSingleValidator( - &tApp, - genesisState, - ) + if addValidator { + genesisState = GenesisStateWithSingleValidator( + &tApp, + genesisState, + ) + } // Initialize the chain stateBytes, err := json.Marshal(genesisState) diff --git a/migrate/cmd.go b/cmd/kava/cmd/assert-invariants.go similarity index 56% rename from migrate/cmd.go rename to cmd/kava/cmd/assert-invariants.go index 769a7d21..91c1adee 100644 --- a/migrate/cmd.go +++ b/cmd/kava/cmd/assert-invariants.go @@ -1,4 +1,4 @@ -package migrate +package cmd import ( "encoding/json" @@ -13,46 +13,6 @@ import ( "github.com/kava-labs/kava/app/params" ) -// MigrateGenesisCmd returns a command to execute genesis state migration. -func MigrateGenesisCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "migrate [genesis-file]", - Short: "Migrate genesis from v0.17 to v0.18", - Long: "Migrate the source genesis into v0.18 and print to STDOUT.", - Example: fmt.Sprintf(`%s migrate /path/to/genesis.json`, version.AppName), - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - // clientCtx := client.GetClientContextFromCmd(cmd) - // importGenesis := args[0] - - // oldGenDoc, err := tmtypes.GenesisDocFromFile(importGenesis) - // if err != nil { - // return fmt.Errorf("failed to read genesis document from file %s: %w", importGenesis, err) - // } - - // newGenDoc, err := v0_17.Migrate(oldGenDoc, clientCtx) - // if err != nil { - // return fmt.Errorf("failed to run migration: %w", err) - // } - - // bz, err := tmjson.Marshal(newGenDoc) - // if err != nil { - // return fmt.Errorf("failed to marshal genesis doc: %w", err) - // } - - // sortedBz, err := sdk.SortJSON(bz) - // if err != nil { - // return fmt.Errorf("failed to sort JSON genesis doc: %w", err) - // } - - // fmt.Println(string(sortedBz)) - return nil - }, - } - - return cmd -} - func AssertInvariantsCmd(config params.EncodingConfig) *cobra.Command { cmd := &cobra.Command{ Use: "assert-invariants [genesis-file]", @@ -76,7 +36,13 @@ func AssertInvariantsCmd(config params.EncodingConfig) *cobra.Command { if err != nil { return fmt.Errorf("genesis doc did not pass validate genesis: %s: %w", importGenesis, err) } - tApp.InitializeFromGenesisStatesWithTimeAndChainID(genDoc.GenesisTime, genDoc.ChainID, app.GenesisState(newAppState)) + tApp.InitializeFromGenesisStatesWithTimeAndChainIDAndHeight( + genDoc.GenesisTime, + genDoc.ChainID, + genDoc.InitialHeight, + false, + app.GenesisState(newAppState), + ) fmt.Printf("successfully asserted all invariants for %s\n", importGenesis) return nil @@ -92,11 +58,7 @@ func AssertInvariantsCmd(config params.EncodingConfig) *cobra.Command { func validateGenDoc(importGenesisFile string) (*tmtypes.GenesisDoc, error) { genDoc, err := tmtypes.GenesisDocFromFile(importGenesisFile) if err != nil { - return nil, fmt.Errorf( - "%s. Make sure that you have correctly migrated all Tendermint consensus params.", - err.Error(), - ) + return nil, fmt.Errorf("failed to validate CometBFT consensus params: %s", err) } - return genDoc, nil } diff --git a/cmd/kava/cmd/root.go b/cmd/kava/cmd/root.go index 6d536880..d8e362ed 100644 --- a/cmd/kava/cmd/root.go +++ b/cmd/kava/cmd/root.go @@ -23,7 +23,6 @@ import ( "github.com/kava-labs/kava/app" "github.com/kava-labs/kava/app/params" kavaclient "github.com/kava-labs/kava/client" - "github.com/kava-labs/kava/migrate" ) // EnvPrefix is the prefix environment variables must have to configure the app. @@ -92,8 +91,7 @@ func addSubCmds(rootCmd *cobra.Command, encodingConfig params.EncodingConfig, de genutilcli.InitCmd(app.ModuleBasics, defaultNodeHome), ), genutilcli.CollectGenTxsCmd(banktypes.GenesisBalancesIterator{}, defaultNodeHome), - migrate.MigrateGenesisCmd(), - migrate.AssertInvariantsCmd(encodingConfig), + AssertInvariantsCmd(encodingConfig), genutilcli.GenTxCmd(app.ModuleBasics, encodingConfig.TxConfig, banktypes.GenesisBalancesIterator{}, defaultNodeHome), genutilcli.ValidateGenesisCmd(app.ModuleBasics), AddGenesisAccountCmd(defaultNodeHome), diff --git a/migrate/cmd_test.go b/migrate/cmd_test.go deleted file mode 100644 index 22750cc8..00000000 --- a/migrate/cmd_test.go +++ /dev/null @@ -1,32 +0,0 @@ -package migrate_test - -import ( - "context" - "path/filepath" - "testing" - - "github.com/cosmos/cosmos-sdk/client" - "github.com/kava-labs/kava/app" - "github.com/kava-labs/kava/migrate" - "github.com/stretchr/testify/require" -) - -func TestMigrateGenesisCmd_V17_Success(t *testing.T) { - ctx := newCmdContext() - cmd := migrate.MigrateGenesisCmd() - file := filepath.Join("v0_17", "testdata", "genesis-v16.json") - cmd.SetArgs([]string{file}) - err := cmd.ExecuteContext(ctx) - require.NoError(t, err) -} - -func newCmdContext() context.Context { - config := app.MakeEncodingConfig() - clientCtx := client.Context{}. - WithCodec(config.Marshaler). - WithLegacyAmino(config.Amino). - WithInterfaceRegistry(config.InterfaceRegistry) - ctx := context.Background() - ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) - return ctx -}