From afb9bd21f2ee755029188943e212aea96d2ce805 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 22 Jun 2022 19:02:29 +0200 Subject: [PATCH 1/2] feat: decouple `x/distribution` from simapp --- CHANGELOG.md | 7 +- simapp/params/weights.go | 31 +- simapp/test_helpers.go | 45 -- testutil/sims/address_helpers.go | 49 ++ x/auth/migrations/v043/store_test.go | 5 +- x/distribution/abci_test.go | 35 +- x/distribution/client/cli/tx_test.go | 28 +- .../client/testutil/grpc_query_suite.go | 15 +- x/distribution/client/testutil/suite.go | 10 +- .../client/testutil/withdraw_all_suite.go | 4 +- x/distribution/keeper/allocation_test.go | 151 ++++-- x/distribution/keeper/common_test.go | 4 +- x/distribution/keeper/delegation_test.go | 477 +++++++++++------- x/distribution/keeper/grpc_query_test.go | 77 +-- x/distribution/keeper/keeper_test.go | 134 +++-- x/distribution/keeper/querier_test.go | 48 +- x/distribution/module_test.go | 23 +- x/distribution/proposal_handler_test.go | 70 ++- x/distribution/simulation/decoder_test.go | 9 +- x/distribution/simulation/operations.go | 40 +- x/distribution/simulation/operations_test.go | 95 ++-- x/distribution/simulation/proposals.go | 4 +- x/distribution/simulation/proposals_test.go | 18 +- x/distribution/testutil/app.yaml | 11 +- x/distribution/testutil/app_config.go | 1 + x/gov/keeper/common_test.go | 5 +- x/gov/simulation/proposals.go | 4 +- x/gov/simulation/proposals_test.go | 4 +- x/mint/module_test.go | 2 +- x/slashing/abci_test.go | 3 +- x/slashing/keeper/keeper_test.go | 15 +- x/staking/common_test.go | 5 +- x/staking/keeper/common_test.go | 5 +- x/staking/keeper/delegation_test.go | 31 +- x/staking/keeper/grpc_query_test.go | 9 +- x/staking/keeper/historical_info_test.go | 7 +- x/staking/keeper/querier_test.go | 5 +- x/staking/keeper/validator_bench_test.go | 2 +- x/staking/keeper/validator_test.go | 3 +- 39 files changed, 915 insertions(+), 576 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bcdbc707c14..8cd1265333ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -49,9 +49,10 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### API Breaking Changes -* (simapp) [#12312](https:12278//github.com/cosmos/cosmos-sdk/pull/12312) Move `simapp.EmptyAppOptions` to `simtestutil.EmptyAppOptions` (`testutil/sims`) -* (simapp) [#12312](https:12278//github.com/cosmos/cosmos-sdk/pull/12312) Remove `skipUpgradeHeights map[int64]bool` and `homePath string` from `NewSimApp` constructor as per migration of `x/upgrade` to app-wiring. -* (testutil) [#12278](https:12278//github.com/cosmos/cosmos-sdk/pull/12278) Move all functions from `simapp/helpers` to `testutil/sims` +* (simapp) [#XXXXX](https://github.com/cosmos/cosmos-sdk/pull/XXXXX) Move `simapp.ConvertAddrsToValAddrs` and `simapp.CreateTestPubKeys ` to respectively `simtestutil.ConvertAddrsToValAddrs` and `simtestutil.CreateTestPubKeys` (`testutil/sims`) +* (simapp) [#12312](https://github.com/cosmos/cosmos-sdk/pull/12312) Move `simapp.EmptyAppOptions` to `simtestutil.EmptyAppOptions` (`testutil/sims`) +* (simapp) [#12312](https://github.com/cosmos/cosmos-sdk/pull/12312) Remove `skipUpgradeHeights map[int64]bool` and `homePath string` from `NewSimApp` constructor as per migration of `x/upgrade` to app-wiring. +* (testutil) [#12278](https://github.com/cosmos/cosmos-sdk/pull/12278) Move all functions from `simapp/helpers` to `testutil/sims` * (testutil) [#12233](https://github.com/cosmos/cosmos-sdk/pull/12233) Move `simapp.TestAddr` to `simtestutil.TestAddr` (`testutil/sims`) * (x/staking) [#12102](https://github.com/cosmos/cosmos-sdk/pull/12102) Staking keeper now is passed by reference instead of copy. Keeper's SetHooks no longer returns keeper. It updates the keeper in place instead. * (linting) [#12141](https://github.com/cosmos/cosmos-sdk/pull/12141) Fix usability related linting for database. This means removing the infix Prefix from `prefix.NewPrefixWriter` and such so that it is `prefix.NewWriter` and making `db.DBConnection` and such into `db.Connection` diff --git a/simapp/params/weights.go b/simapp/params/weights.go index 7cc454a00e71..0ae258cf5700 100644 --- a/simapp/params/weights.go +++ b/simapp/params/weights.go @@ -2,25 +2,18 @@ package params // Default simulation operation weights for messages and gov proposals const ( - DefaultWeightMsgSend int = 100 - DefaultWeightMsgMultiSend int = 10 - DefaultWeightMsgSetWithdrawAddress int = 50 - DefaultWeightMsgWithdrawDelegationReward int = 50 - DefaultWeightMsgWithdrawValidatorCommission int = 50 - DefaultWeightMsgFundCommunityPool int = 50 - DefaultWeightMsgDeposit int = 100 - DefaultWeightMsgVote int = 67 - DefaultWeightMsgVoteWeighted int = 33 - DefaultWeightMsgUnjail int = 100 - DefaultWeightMsgCreateValidator int = 100 - DefaultWeightMsgEditValidator int = 5 - DefaultWeightMsgDelegate int = 100 - DefaultWeightMsgUndelegate int = 100 - DefaultWeightMsgBeginRedelegate int = 100 - DefaultWeightMsgCancelUnbondingDelegation int = 100 - - DefaultWeightCommunitySpendProposal int = 5 - DefaultWeightTextProposal int = 5 + DefaultWeightMsgSend int = 100 + DefaultWeightMsgMultiSend int = 10 + DefaultWeightMsgDeposit int = 100 + DefaultWeightMsgVote int = 67 + DefaultWeightMsgVoteWeighted int = 33 + DefaultWeightMsgUnjail int = 100 + DefaultWeightMsgCreateValidator int = 100 + DefaultWeightMsgEditValidator int = 5 + DefaultWeightMsgDelegate int = 100 + DefaultWeightMsgUndelegate int = 100 + DefaultWeightMsgBeginRedelegate int = 100 + DefaultWeightMsgCancelUnbondingDelegation int = 100 // feegrant DefaultWeightGrantAllowance int = 100 diff --git a/simapp/test_helpers.go b/simapp/test_helpers.go index 92849b80a88c..4cdc47f3abad 100644 --- a/simapp/test_helpers.go +++ b/simapp/test_helpers.go @@ -1,11 +1,8 @@ package simapp import ( - "bytes" "context" - "encoding/hex" "encoding/json" - "strconv" "testing" "github.com/stretchr/testify/require" @@ -19,7 +16,6 @@ import ( "cosmossdk.io/math" bam "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" - "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/depinject" @@ -28,7 +24,6 @@ import ( "github.com/cosmos/cosmos-sdk/testutil/mock" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/errors" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -247,17 +242,6 @@ func initAccountWithCoins(app *SimApp, ctx sdk.Context, addr sdk.AccAddress, coi } } -// ConvertAddrsToValAddrs converts the provided addresses to ValAddress. -func ConvertAddrsToValAddrs(addrs []sdk.AccAddress) []sdk.ValAddress { - valAddrs := make([]sdk.ValAddress, len(addrs)) - - for i, addr := range addrs { - valAddrs[i] = sdk.ValAddress(addr) - } - - return valAddrs -} - // CheckBalance checks the balance of an account. func CheckBalance(t *testing.T, app *SimApp, addr sdk.AccAddress, balances sdk.Coins) { ctxCheck := app.BaseApp.NewContext(true, tmproto.Header{}) @@ -347,35 +331,6 @@ func incrementAllSequenceNumbers(initSeqNums []uint64) { } } -// CreateTestPubKeys returns a total of numPubKeys public keys in ascending order. -func CreateTestPubKeys(numPubKeys int) []cryptotypes.PubKey { - var publicKeys []cryptotypes.PubKey - var buffer bytes.Buffer - - // start at 10 to avoid changing 1 to 01, 2 to 02, etc - for i := 100; i < (numPubKeys + 100); i++ { - numString := strconv.Itoa(i) - buffer.WriteString("0B485CFC0EECC619440448436F8FC9DF40566F2369E72400281454CB552AF") // base pubkey string - buffer.WriteString(numString) // adding on final two digits to make pubkeys unique - publicKeys = append(publicKeys, NewPubKeyFromHex(buffer.String())) - buffer.Reset() - } - - return publicKeys -} - -// NewPubKeyFromHex returns a PubKey from a hex string. -func NewPubKeyFromHex(pk string) (res cryptotypes.PubKey) { - pkBytes, err := hex.DecodeString(pk) - if err != nil { - panic(err) - } - if len(pkBytes) != ed25519.PubKeySize { - panic(errors.Wrap(errors.ErrInvalidPubKey, "invalid pubkey size")) - } - return &ed25519.PubKey{Key: pkBytes} -} - // ModuleAccountAddrs provides a list of blocked module accounts from configuration in app.yaml // // Ported from SimApp diff --git a/testutil/sims/address_helpers.go b/testutil/sims/address_helpers.go index 15924f35794e..918bd64a07de 100644 --- a/testutil/sims/address_helpers.go +++ b/testutil/sims/address_helpers.go @@ -2,12 +2,15 @@ package sims import ( "bytes" + "encoding/hex" "fmt" "strconv" "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -15,6 +18,12 @@ import ( type GenerateAccountStrategy func(int) []sdk.AccAddress +// AddTestAddrs constructs and returns accNum amount of accounts with an +// initial balance of accAmt in random order +func AddTestAddrs(bankKeeper bankkeeper.Keeper, stakingKeeper *stakingkeeper.Keeper, ctx sdk.Context, accNum int, accAmt math.Int) []sdk.AccAddress { + return addTestAddrs(bankKeeper, stakingKeeper, ctx, accNum, accAmt, CreateRandomAccounts) +} + // AddTestAddrsIncremental constructs and returns accNum amount of accounts with an initial balance of accAmt in random order func AddTestAddrsIncremental(bankKeeper bankkeeper.Keeper, stakingKeeper *stakingkeeper.Keeper, ctx sdk.Context, accNum int, accAmt math.Int) []sdk.AccAddress { return addTestAddrs(bankKeeper, stakingKeeper, ctx, accNum, accAmt, CreateIncrementalAccounts) @@ -94,3 +103,43 @@ func TestAddr(addr string, bech string) (sdk.AccAddress, error) { return res, nil } + +// ConvertAddrsToValAddrs converts the provided addresses to ValAddress. +func ConvertAddrsToValAddrs(addrs []sdk.AccAddress) []sdk.ValAddress { + valAddrs := make([]sdk.ValAddress, len(addrs)) + + for i, addr := range addrs { + valAddrs[i] = sdk.ValAddress(addr) + } + + return valAddrs +} + +// CreateTestPubKeys returns a total of numPubKeys public keys in ascending order. +func CreateTestPubKeys(numPubKeys int) []cryptotypes.PubKey { + var publicKeys []cryptotypes.PubKey + var buffer bytes.Buffer + + // start at 10 to avoid changing 1 to 01, 2 to 02, etc + for i := 100; i < (numPubKeys + 100); i++ { + numString := strconv.Itoa(i) + buffer.WriteString("0B485CFC0EECC619440448436F8FC9DF40566F2369E72400281454CB552AF") // base pubkey string + buffer.WriteString(numString) // adding on final two digits to make pubkeys unique + publicKeys = append(publicKeys, NewPubKeyFromHex(buffer.String())) + buffer.Reset() + } + + return publicKeys +} + +// NewPubKeyFromHex returns a PubKey from a hex string. +func NewPubKeyFromHex(pk string) (res cryptotypes.PubKey) { + pkBytes, err := hex.DecodeString(pk) + if err != nil { + panic(err) + } + if len(pkBytes) != ed25519.PubKeySize { + panic(errors.Wrap(errors.ErrInvalidPubKey, "invalid pubkey size")) + } + return &ed25519.PubKey{Key: pkBytes} +} diff --git a/x/auth/migrations/v043/store_test.go b/x/auth/migrations/v043/store_test.go index df7902c191bd..d1445386895b 100644 --- a/x/auth/migrations/v043/store_test.go +++ b/x/auth/migrations/v043/store_test.go @@ -9,6 +9,7 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -648,8 +649,8 @@ func dirtyTrackingFields(ctx sdk.Context, vesting exported.VestingAccount, app * func createValidator(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers int64) (sdk.AccAddress, sdk.ValAddress) { valTokens := sdk.TokensFromConsensusPower(powers, sdk.DefaultPowerReduction) addrs := simapp.AddTestAddrsIncremental(app, ctx, 1, valTokens) - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) - pks := simapp.CreateTestPubKeys(1) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) + pks := simtestutil.CreateTestPubKeys(1) cdc := simapp.MakeTestEncodingConfig().Codec app.StakingKeeper = stakingkeeper.NewKeeper( diff --git a/x/distribution/abci_test.go b/x/distribution/abci_test.go index ea31b564bd63..c1bd8e5a00bf 100644 --- a/x/distribution/abci_test.go +++ b/x/distribution/abci_test.go @@ -5,8 +5,12 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" "github.com/stretchr/testify/require" @@ -33,10 +37,23 @@ type validator struct { // Context in https://github.com/cosmos/cosmos-sdk/issues/9161 func TestVerifyProposerRewardAssignement(t *testing.T) { - app := simapp.Setup(t, false) + + var ( + bankKeeper bankkeeper.Keeper + stakingKeeper *stakingkeeper.Keeper + distrKeeper keeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &stakingKeeper, + &distrKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - addrs := simapp.AddTestAddrsIncremental(app, ctx, totalValidators, valTokens) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + addrs := simtestutil.AddTestAddrsIncremental(bankKeeper, stakingKeeper, ctx, totalValidators, valTokens) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) tstaking.Commission = validatorCommissionRates // create validators @@ -51,10 +68,10 @@ func TestVerifyProposerRewardAssignement(t *testing.T) { require.NotEmpty(t, app.Commit()) // verify validators lists - require.Len(t, app.StakingKeeper.GetAllValidators(ctx), totalValidators) + require.Len(t, stakingKeeper.GetAllValidators(ctx), totalValidators) for i, val := range validators { // verify all validator exists - require.NotNil(t, app.StakingKeeper.ValidatorByConsAddr(ctx, sdk.GetConsAddress(val.pubkey))) + require.NotNil(t, stakingKeeper.ValidatorByConsAddr(ctx, sdk.GetConsAddress(val.pubkey))) // populate last commit info voteInfos := []abci.VoteInfo{} @@ -99,9 +116,9 @@ func TestVerifyProposerRewardAssignement(t *testing.T) { }) require.NotEmpty(t, app.Commit()) - rewardsValidatorBeforeLazyValidator := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, validators[lazyValidatorIdx+1].addr) - rewardsLazyValidator := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, validators[lazyValidatorIdx].addr) - rewardsValidatorAfterLazyValidator := app.DistrKeeper.GetValidatorOutstandingRewardsCoins(ctx, validators[lazyValidatorIdx+1].addr) + rewardsValidatorBeforeLazyValidator := distrKeeper.GetValidatorOutstandingRewardsCoins(ctx, validators[lazyValidatorIdx+1].addr) + rewardsLazyValidator := distrKeeper.GetValidatorOutstandingRewardsCoins(ctx, validators[lazyValidatorIdx].addr) + rewardsValidatorAfterLazyValidator := distrKeeper.GetValidatorOutstandingRewardsCoins(ctx, validators[lazyValidatorIdx+1].addr) require.True(t, rewardsLazyValidator[0].Amount.LT(rewardsValidatorAfterLazyValidator[0].Amount)) require.Equal(t, rewardsValidatorBeforeLazyValidator, rewardsValidatorAfterLazyValidator) } diff --git a/x/distribution/client/cli/tx_test.go b/x/distribution/client/cli/tx_test.go index 7176c6bf9578..ef0b9a9176b2 100644 --- a/x/distribution/client/cli/tx_test.go +++ b/x/distribution/client/cli/tx_test.go @@ -5,15 +5,14 @@ import ( "github.com/spf13/pflag" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" - "github.com/cosmos/cosmos-sdk/simapp/params" - "github.com/cosmos/cosmos-sdk/testutil" + sdktestutil "github.com/cosmos/cosmos-sdk/testutil" "github.com/cosmos/cosmos-sdk/testutil/testdata" "github.com/stretchr/testify/require" - "github.com/stretchr/testify/assert" - "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -22,7 +21,7 @@ func Test_splitAndCall_NoMessages(t *testing.T) { clientCtx := client.Context{} err := newSplitAndApply(nil, clientCtx, nil, nil, 10) - assert.NoError(t, err, "") + require.NoError(t, err, "") } func Test_splitAndCall_Splitting(t *testing.T) { @@ -47,27 +46,28 @@ func Test_splitAndCall_Splitting(t *testing.T) { func(clientCtx client.Context, fs *pflag.FlagSet, msgs ...sdk.Msg) error { callCount++ - assert.NotNil(t, clientCtx) - assert.NotNil(t, msgs) + require.NotNil(t, clientCtx) + require.NotNil(t, msgs) if callCount < 3 { - assert.Equal(t, len(msgs), 2) + require.Equal(t, len(msgs), 2) } else { - assert.Equal(t, len(msgs), 1) + require.Equal(t, len(msgs), 1) } return nil }, clientCtx, nil, msgs, chunkSize) - assert.NoError(t, err, "") - assert.Equal(t, 3, callCount) + require.NoError(t, err, "") + require.Equal(t, 3, callCount) } func TestParseProposal(t *testing.T) { - encodingConfig := params.MakeTestEncodingConfig() + interfaceRegistry := types.NewInterfaceRegistry() + cdc := codec.NewProtoCodec(interfaceRegistry) - okJSON := testutil.WriteToNewTempFile(t, ` + okJSON := sdktestutil.WriteToNewTempFile(t, ` { "title": "Community Pool Spend", "description": "Pay me some Atoms!", @@ -77,7 +77,7 @@ func TestParseProposal(t *testing.T) { } `) - proposal, err := ParseCommunityPoolSpendProposalWithDeposit(encodingConfig.Codec, okJSON.Name()) + proposal, err := ParseCommunityPoolSpendProposalWithDeposit(cdc, okJSON.Name()) require.NoError(t, err) require.Equal(t, "Community Pool Spend", proposal.Title) diff --git a/x/distribution/client/testutil/grpc_query_suite.go b/x/distribution/client/testutil/grpc_query_suite.go index 956449a39743..d4ea3d51bb5c 100644 --- a/x/distribution/client/testutil/grpc_query_suite.go +++ b/x/distribution/client/testutil/grpc_query_suite.go @@ -6,12 +6,13 @@ import ( "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/suite" - "github.com/cosmos/cosmos-sdk/testutil" + sdktestutil "github.com/cosmos/cosmos-sdk/testutil" "github.com/cosmos/cosmos-sdk/testutil/network" "github.com/cosmos/cosmos-sdk/testutil/rest" sdk "github.com/cosmos/cosmos-sdk/types" grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" "github.com/cosmos/cosmos-sdk/types/query" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" ) @@ -25,11 +26,11 @@ type GRPCQueryTestSuite struct { func (s *GRPCQueryTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := network.DefaultConfig() + cfg, err := network.DefaultConfigWithAppConfig(testutil.AppConfig) + s.Require().NoError(err) cfg.NumValidators = 1 s.cfg = cfg - var err error s.network, err = network.New(s.T(), s.T().TempDir(), cfg) s.Require().NoError(err) @@ -115,7 +116,7 @@ func (s *GRPCQueryTestSuite) TestQueryOutstandingRewardsGRPC() { for _, tc := range testCases { tc := tc - resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) + resp, err := sdktestutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { if tc.expErr { s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) @@ -169,7 +170,7 @@ func (s *GRPCQueryTestSuite) TestQueryValidatorCommissionGRPC() { for _, tc := range testCases { tc := tc - resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) + resp, err := sdktestutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { if tc.expErr { s.Require().Error(val.ClientCtx.Codec.UnmarshalJSON(resp, tc.respType)) @@ -303,7 +304,7 @@ func (s *GRPCQueryTestSuite) TestQueryDelegatorRewardsGRPC() { for _, tc := range testCases { tc := tc - resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) + resp, err := sdktestutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { if tc.expErr { @@ -452,7 +453,7 @@ func (s *GRPCQueryTestSuite) TestQueryValidatorCommunityPoolGRPC() { for _, tc := range testCases { tc := tc - resp, err := testutil.GetRequestWithHeaders(tc.url, tc.headers) + resp, err := sdktestutil.GetRequestWithHeaders(tc.url, tc.headers) s.Run(tc.name, func() { if tc.expErr { diff --git a/x/distribution/client/testutil/suite.go b/x/distribution/client/testutil/suite.go index fdf9648b659e..0ac1a6cfdd6c 100644 --- a/x/distribution/client/testutil/suite.go +++ b/x/distribution/client/testutil/suite.go @@ -11,11 +11,12 @@ import ( tmcli "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client/flags" - "github.com/cosmos/cosmos-sdk/testutil" + sdktestutil "github.com/cosmos/cosmos-sdk/testutil" clitestutil "github.com/cosmos/cosmos-sdk/testutil/cli" "github.com/cosmos/cosmos-sdk/testutil/network" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/distribution/client/cli" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" ) @@ -38,7 +39,8 @@ func NewIntegrationTestSuite(cfg network.Config) *IntegrationTestSuite { func (s *IntegrationTestSuite) SetupSuite() { s.T().Log("setting up integration test suite") - cfg := network.DefaultConfig() + cfg, err := network.DefaultConfigWithAppConfig(testutil.AppConfig) + s.Require().NoError(err) cfg.NumValidators = 1 s.cfg = cfg @@ -769,7 +771,7 @@ func (s *IntegrationTestSuite) TestGetCmdSubmitProposal() { fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()), } - invalidPropFile := testutil.WriteToNewTempFile(s.T(), invalidProp) + invalidPropFile := sdktestutil.WriteToNewTempFile(s.T(), invalidProp) cmd := cli.NewFundCommunityPoolCmd() out, err := clitestutil.ExecTestCLICmd(val.ClientCtx, cmd, args) s.Require().NoError(err) @@ -786,7 +788,7 @@ func (s *IntegrationTestSuite) TestGetCmdSubmitProposal() { "deposit": "%s" }`, val.Address.String(), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431)), sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(5431))) - validPropFile := testutil.WriteToNewTempFile(s.T(), validProp) + validPropFile := sdktestutil.WriteToNewTempFile(s.T(), validProp) testCases := []struct { name string args []string diff --git a/x/distribution/client/testutil/withdraw_all_suite.go b/x/distribution/client/testutil/withdraw_all_suite.go index 7b459a4dfde1..6afef1e3a4aa 100644 --- a/x/distribution/client/testutil/withdraw_all_suite.go +++ b/x/distribution/client/testutil/withdraw_all_suite.go @@ -12,6 +12,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" banktestutil "github.com/cosmos/cosmos-sdk/x/bank/client/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/client/cli" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" stakingcli "github.com/cosmos/cosmos-sdk/x/staking/client/cli" "github.com/stretchr/testify/suite" ) @@ -24,7 +25,8 @@ type WithdrawAllTestSuite struct { } func (s *WithdrawAllTestSuite) SetupSuite() { - cfg := network.DefaultConfig() + cfg, err := network.DefaultConfigWithAppConfig(testutil.AppConfig) + s.Require().NoError(err) cfg.NumValidators = 2 s.cfg = cfg diff --git a/x/distribution/keeper/allocation_test.go b/x/distribution/keeper/allocation_test.go index d32b43690cac..4b2613c00682 100644 --- a/x/distribution/keeper/allocation_test.go +++ b/x/distribution/keeper/allocation_test.go @@ -7,54 +7,85 @@ import ( abci "github.com/tendermint/tendermint/abci/types" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" "github.com/cosmos/cosmos-sdk/x/auth/types" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" disttypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) func TestAllocateTokensToValidatorWithCommission(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - addrs := simapp.AddTestAddrs(app, ctx, 3, sdk.NewInt(1234)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 3, sdk.NewInt(1234)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) tstaking.CreateValidator(sdk.ValAddress(addrs[0]), valConsPk1, sdk.NewInt(100), true) - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) // allocate tokens tokens := sdk.DecCoins{ {Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(10)}, } - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // check commission expected := sdk.DecCoins{ {Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(5)}, } - require.Equal(t, expected, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, val.GetOperator()).Commission) + require.Equal(t, expected, distrKeeper.GetValidatorAccumulatedCommission(ctx, val.GetOperator()).Commission) // check current rewards - require.Equal(t, expected, app.DistrKeeper.GetValidatorCurrentRewards(ctx, val.GetOperator()).Rewards) + require.Equal(t, expected, distrKeeper.GetValidatorCurrentRewards(ctx, val.GetOperator()).Rewards) } func TestAllocateTokensToManyValidators(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) // reset fee pool - app.DistrKeeper.SetFeePool(ctx, disttypes.InitialFeePool()) + distrKeeper.SetFeePool(ctx, disttypes.InitialFeePool()) - addrs := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1234)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1234)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) @@ -74,23 +105,23 @@ func TestAllocateTokensToManyValidators(t *testing.T) { } // assert initial state: zero outstanding rewards, zero community pool, zero commission, zero current rewards - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetFeePool(ctx).CommunityPool.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero()) + require.True(t, distrKeeper.GetFeePool(ctx).CommunityPool.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero()) // allocate tokens as if both had voted and second was proposer fees := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(100))) - feeCollector := app.AccountKeeper.GetModuleAccount(ctx, types.FeeCollectorName) + feeCollector := accountKeeper.GetModuleAccount(ctx, types.FeeCollectorName) require.NotNil(t, feeCollector) // fund fee collector - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, feeCollector.GetName(), fees)) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, feeCollector.GetName(), fees)) - app.AccountKeeper.SetAccount(ctx, feeCollector) + accountKeeper.SetAccount(ctx, feeCollector) votes := []abci.VoteInfo{ { @@ -102,33 +133,47 @@ func TestAllocateTokensToManyValidators(t *testing.T) { SignedLastBlock: true, }, } - app.DistrKeeper.AllocateTokens(ctx, 200, 200, valConsAddr2, votes) + distrKeeper.AllocateTokens(ctx, 200, 200, valConsAddr2, votes) // 98 outstanding rewards (100 less 2 to community pool) - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(465, 1)}}, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards) - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(515, 1)}}, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(465, 1)}}, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(515, 1)}}, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards) // 2 community pool coins - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(2)}}, app.DistrKeeper.GetFeePool(ctx).CommunityPool) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(2)}}, distrKeeper.GetFeePool(ctx).CommunityPool) // 50% commission for first proposer, (0.5 * 93%) * 100 / 2 = 23.25 - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2325, 2)}}, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2325, 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) // zero commission for second proposer - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero()) // just staking.proportional for first proposer less commission = (0.5 * 93%) * 100 / 2 = 23.25 - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2325, 2)}}, app.DistrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(2325, 2)}}, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards) // proposer reward + staking.proportional for second proposer = (5 % + 0.5 * (93%)) * 100 = 51.5 - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(515, 1)}}, app.DistrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecWithPrec(515, 1)}}, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards) } func TestAllocateTokensTruncation(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) // reset fee pool - app.DistrKeeper.SetFeePool(ctx, disttypes.InitialFeePool()) + distrKeeper.SetFeePool(ctx, disttypes.InitialFeePool()) - addrs := simapp.AddTestAddrs(app, ctx, 3, sdk.NewInt(1234)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + addrs := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 3, sdk.NewInt(1234)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) // create validator with 10% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(1, 1), sdk.NewDecWithPrec(1, 1), sdk.NewDec(0)) @@ -156,24 +201,24 @@ func TestAllocateTokensTruncation(t *testing.T) { } // assert initial state: zero outstanding rewards, zero community pool, zero commission, zero current rewards - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetFeePool(ctx).CommunityPool.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero()) - require.True(t, app.DistrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsZero()) + require.True(t, distrKeeper.GetFeePool(ctx).CommunityPool.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[1]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[0]).Rewards.IsZero()) + require.True(t, distrKeeper.GetValidatorCurrentRewards(ctx, valAddrs[1]).Rewards.IsZero()) // allocate tokens as if both had voted and second was proposer fees := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(634195840))) - feeCollector := app.AccountKeeper.GetModuleAccount(ctx, types.FeeCollectorName) + feeCollector := accountKeeper.GetModuleAccount(ctx, types.FeeCollectorName) require.NotNil(t, feeCollector) - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, feeCollector.GetName(), fees)) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, feeCollector.GetName(), fees)) - app.AccountKeeper.SetAccount(ctx, feeCollector) + accountKeeper.SetAccount(ctx, feeCollector) votes := []abci.VoteInfo{ { @@ -189,9 +234,9 @@ func TestAllocateTokensTruncation(t *testing.T) { SignedLastBlock: true, }, } - app.DistrKeeper.AllocateTokens(ctx, 31, 31, sdk.ConsAddress(valConsPk2.Address()), votes) + distrKeeper.AllocateTokens(ctx, 31, 31, sdk.ConsAddress(valConsPk2.Address()), votes) - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsValid()) - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsValid()) - require.True(t, app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[2]).Rewards.IsValid()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]).Rewards.IsValid()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[1]).Rewards.IsValid()) + require.True(t, distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[2]).Rewards.IsValid()) } diff --git a/x/distribution/keeper/common_test.go b/x/distribution/keeper/common_test.go index 807fd45c2520..fbcb9e55560a 100644 --- a/x/distribution/keeper/common_test.go +++ b/x/distribution/keeper/common_test.go @@ -1,14 +1,14 @@ package keeper_test import ( - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" "github.com/cosmos/cosmos-sdk/x/distribution/types" ) var ( - PKS = simapp.CreateTestPubKeys(5) + PKS = simtestutil.CreateTestPubKeys(5) valConsPk1 = PKS[0] valConsPk2 = PKS[1] diff --git a/x/distribution/keeper/delegation_test.go b/x/distribution/keeper/delegation_test.go index 7b18c0241f3b..861b7f023e06 100644 --- a/x/distribution/keeper/delegation_test.go +++ b/x/distribution/keeper/delegation_test.go @@ -6,49 +6,66 @@ import ( "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/staking" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) func TestCalculateRewardsBasic(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) + distrKeeper.DeleteAllValidatorHistoricalRewards(ctx) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), true) // end block to bond validator and start new block - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) tstaking.Ctx = ctx // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // historical count should be 2 (once for validator init, once for delegation init) - require.Equal(t, uint64(2), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // historical count should be 2 still - require.Equal(t, uint64(2), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // calculate delegation rewards - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be zero require.True(t, rewards.IsZero()) @@ -56,28 +73,40 @@ func TestCalculateRewardsBasic(t *testing.T) { // allocate some rewards initial := int64(10) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial)}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // end period - endingPeriod = app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be half the tokens require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, rewards) // commission should be the other half - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) } func TestCalculateRewardsAfterSlash(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(100000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(100000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) @@ -85,20 +114,20 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, true) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be zero require.True(t, rewards.IsZero()) @@ -107,40 +136,52 @@ func TestCalculateRewardsAfterSlash(t *testing.T) { ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // slash the validator by 50% - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) // retrieve validator - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) // increase block height ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // allocate some rewards - initial := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) + initial := stakingKeeper.TokensFromConsensusPower(ctx, 10) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // end period - endingPeriod = app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be half the tokens require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial.QuoRaw(2))}}, rewards) // commission should be the other half require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial.QuoRaw(2))}}, - app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) } func TestCalculateRewardsAfterManySlashes(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(100000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(100000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) // create validator with 50% commission valPower := int64(100) @@ -148,20 +189,20 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, true) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be zero require.True(t, rewards.IsZero()) @@ -170,124 +211,150 @@ func TestCalculateRewardsAfterManySlashes(t *testing.T) { ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // slash the validator by 50% - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) // fetch the validator again - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) // increase block height ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // allocate some rewards - initial := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) + initial := stakingKeeper.TokensFromConsensusPower(ctx, 10) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // slash the validator by 50% again - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower/2, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower/2, sdk.NewDecWithPrec(5, 1)) // fetch the validator again - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) // increase block height ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // end period - endingPeriod = app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be half the tokens require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}}, rewards) // commission should be the other half require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDecFromInt(initial)}}, - app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) } func TestCalculateRewardsMultiDelegator(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(100000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(100000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), true) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del1 := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del1 := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // allocate some rewards initial := int64(20) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial)}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // second delegation tstaking.Ctx = ctx tstaking.Delegate(sdk.AccAddress(valAddrs[1]), valAddrs[0], sdk.NewInt(100)) - del2 := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) + del2 := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) // fetch updated validator - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) // end block - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards for del1 - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) // rewards for del1 should be 3/4 initial require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial * 3 / 4)}}, rewards) // calculate delegation rewards for del2 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) // rewards for del2 should be 1/4 initial require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial * 1 / 4)}}, rewards) // commission should be equal to initial (50% twice) - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial)}}, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) } func TestWithdrawDelegationRewardsBasic(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) + distrKeeper.DeleteAllValidatorHistoricalRewards(ctx) balancePower := int64(1000) - balanceTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, balancePower) - addr := simapp.AddTestAddrs(app, ctx, 1, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + balanceTokens := stakingKeeper.TokensFromConsensusPower(ctx, balancePower) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) // set module account coins - distrAcc := app.DistrKeeper.GetDistributionAccount(ctx) - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, balanceTokens)))) - app.AccountKeeper.SetModuleAccount(ctx, distrAcc) + distrAcc := distrKeeper.GetDistributionAccount(ctx) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, balanceTokens)))) + accountKeeper.SetModuleAccount(ctx, distrAcc) // create validator with 50% commission power := int64(100) @@ -298,60 +365,72 @@ func TestWithdrawDelegationRewardsBasic(t *testing.T) { expTokens := balanceTokens.Sub(valTokens) require.Equal(t, sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, expTokens)}, - app.BankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])), + bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])), ) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) // allocate some rewards - initial := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) + initial := stakingKeeper.TokensFromConsensusPower(ctx, 10) tokens := sdk.DecCoins{sdk.NewDecCoin(sdk.DefaultBondDenom, initial)} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // historical count should be 2 (initial + latest for delegation) - require.Equal(t, uint64(2), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // withdraw rewards - _, err := app.DistrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + _, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) require.Nil(t, err) // historical count should still be 2 (added one record, cleared one) - require.Equal(t, uint64(2), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // assert correct balance exp := balanceTokens.Sub(valTokens).Add(initial.QuoRaw(2)) require.Equal(t, sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, exp)}, - app.BankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])), + bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])), ) // withdraw commission - _, err = app.DistrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) + _, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) require.Nil(t, err) // assert correct balance exp = balanceTokens.Sub(valTokens).Add(initial) require.Equal(t, sdk.Coins{sdk.NewCoin(sdk.DefaultBondDenom, exp)}, - app.BankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])), + bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])), ) } func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - addr := simapp.AddTestAddrs(app, ctx, 1, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) // create validator with 50% commission valPower := int64(100) @@ -359,20 +438,20 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, true) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be zero require.True(t, rewards.IsZero()) @@ -381,45 +460,57 @@ func TestCalculateRewardsAfterManySlashesInSameBlock(t *testing.T) { ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // allocate some rewards - initial := sdk.NewDecFromInt(app.StakingKeeper.TokensFromConsensusPower(ctx, 10)) + initial := sdk.NewDecFromInt(stakingKeeper.TokensFromConsensusPower(ctx, 10)) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // slash the validator by 50% - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) // slash the validator by 50% again - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower/2, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower/2, sdk.NewDecWithPrec(5, 1)) // fetch the validator again - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) // increase block height ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // end period - endingPeriod = app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del, endingPeriod) // rewards should be half the tokens require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, rewards) // commission should be the other half - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) } func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) // create validator with 50% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) @@ -427,81 +518,95 @@ func TestCalculateRewardsMultiDelegatorMultiSlash(t *testing.T) { tstaking.CreateValidatorWithValPower(valAddrs[0], valConsPk1, valPower, true) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del1 := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del1 := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // allocate some rewards - initial := sdk.NewDecFromInt(app.StakingKeeper.TokensFromConsensusPower(ctx, 30)) + initial := sdk.NewDecFromInt(stakingKeeper.TokensFromConsensusPower(ctx, 30)) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // slash the validator ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // second delegation tstaking.DelegateWithPower(sdk.AccAddress(valAddrs[1]), valAddrs[0], 100) - del2 := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) + del2 := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) // end block - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // slash the validator again ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) - app.StakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) + stakingKeeper.Slash(ctx, valConsAddr1, ctx.BlockHeight(), valPower, sdk.NewDecWithPrec(5, 1)) ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 3) // fetch updated validator - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards for del1 - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) // rewards for del1 should be 2/3 initial (half initial first period, 1/6 initial second period) require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial.QuoInt64(2).Add(initial.QuoInt64(6))}}, rewards) // calculate delegation rewards for del2 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) // rewards for del2 should be initial / 3 require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial.QuoInt64(3)}}, rewards) // commission should be equal to initial (twice 50% commission, unaffected by slashing) - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: initial}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) } func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - app.DistrKeeper.DeleteAllValidatorHistoricalRewards(ctx) + distrKeeper.DeleteAllValidatorHistoricalRewards(ctx) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) initial := int64(20) // set module account coins - distrAcc := app.DistrKeeper.GetDistributionAccount(ctx) - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000))))) - app.AccountKeeper.SetModuleAccount(ctx, distrAcc) + distrAcc := distrKeeper.GetDistributionAccount(ctx) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000))))) + accountKeeper.SetModuleAccount(ctx, distrAcc) tokens := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.NewDec(initial))} @@ -510,178 +615,192 @@ func TestCalculateRewardsMultiDelegatorMultWithdraw(t *testing.T) { tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), true) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator and delegation - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) - del1 := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) + del1 := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // allocate some rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // historical count should be 2 (validator init, delegation init) - require.Equal(t, uint64(2), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(2), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // second delegation tstaking.Delegate(sdk.AccAddress(valAddrs[1]), valAddrs[0], sdk.NewInt(100)) // historical count should be 3 (second delegation init) - require.Equal(t, uint64(3), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(3), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // fetch updated validator - val = app.StakingKeeper.Validator(ctx, valAddrs[0]) - del2 := app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) + val = stakingKeeper.Validator(ctx, valAddrs[0]) + del2 := stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) // end block - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // first delegator withdraws - _, err := app.DistrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + _, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) require.NoError(t, err) // second delegator withdraws - _, err = app.DistrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) + _, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[1]), valAddrs[0]) require.NoError(t, err) // historical count should be 3 (validator init + two delegations) - require.Equal(t, uint64(3), app.DistrKeeper.GetValidatorHistoricalReferenceCount(ctx)) + require.Equal(t, uint64(3), distrKeeper.GetValidatorHistoricalReferenceCount(ctx)) // validator withdraws commission - _, err = app.DistrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) + _, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) require.NoError(t, err) // end period - endingPeriod := app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod := distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards for del1 - rewards := app.DistrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) + rewards := distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) // rewards for del1 should be zero require.True(t, rewards.IsZero()) // calculate delegation rewards for del2 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) // rewards for del2 should be zero require.True(t, rewards.IsZero()) // commission should be zero - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // first delegator withdraws again - _, err = app.DistrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + _, err = distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) require.NoError(t, err) // end period - endingPeriod = app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards for del1 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) // rewards for del1 should be zero require.True(t, rewards.IsZero()) // calculate delegation rewards for del2 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) // rewards for del2 should be 1/4 initial require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 4)}}, rewards) // commission should be half initial - require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) + require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // withdraw commission - _, err = app.DistrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) + _, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) require.NoError(t, err) // end period - endingPeriod = app.DistrKeeper.IncrementValidatorPeriod(ctx, val) + endingPeriod = distrKeeper.IncrementValidatorPeriod(ctx, val) // calculate delegation rewards for del1 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del1, endingPeriod) // rewards for del1 should be 1/4 initial require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 4)}}, rewards) // calculate delegation rewards for del2 - rewards = app.DistrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) + rewards = distrKeeper.CalculateDelegationRewards(ctx, val, del2, endingPeriod) // rewards for del2 should be 1/2 initial require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, rewards) // commission should be zero - require.True(t, app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) + require.True(t, distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission.IsZero()) } func Test100PercentCommissionReward(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) initial := int64(20) // set module account coins - distrAcc := app.DistrKeeper.GetDistributionAccount(ctx) - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000))))) - app.AccountKeeper.SetModuleAccount(ctx, distrAcc) + distrAcc := distrKeeper.GetDistributionAccount(ctx) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1000))))) + accountKeeper.SetModuleAccount(ctx, distrAcc) tokens := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.NewDec(initial))} // create validator with 100% commission tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(10, 1), sdk.NewDecWithPrec(10, 1), sdk.NewDec(0)) tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), true) - app.StakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + stakingKeeper.Delegation(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) // end block to bond validator - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // fetch validator - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) + val := stakingKeeper.Validator(ctx, valAddrs[0]) // allocate some rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // end block - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // next block ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) // allocate some more rewards - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) - rewards, err := app.DistrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) + rewards, err := distrKeeper.WithdrawDelegationRewards(ctx, sdk.AccAddress(valAddrs[0]), valAddrs[0]) require.NoError(t, err) denom, _ := sdk.GetBaseDenom() diff --git a/x/distribution/keeper/grpc_query_test.go b/x/distribution/keeper/grpc_query_test.go index d51f4a28a0ba..03e5e2a3aa86 100644 --- a/x/distribution/keeper/grpc_query_test.go +++ b/x/distribution/keeper/grpc_query_test.go @@ -9,12 +9,17 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/baseapp" - "github.com/cosmos/cosmos-sdk/simapp" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/staking" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -22,31 +27,41 @@ import ( type KeeperTestSuite struct { suite.Suite - app *simapp.SimApp ctx sdk.Context queryClient types.QueryClient addrs []sdk.AccAddress valAddrs []sdk.ValAddress + + interfaceRegistry codectypes.InterfaceRegistry + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper } func (suite *KeeperTestSuite) SetupTest() { - app := simapp.Setup(suite.T(), false) + app, err := simtestutil.Setup(testutil.AppConfig, + &suite.interfaceRegistry, + &suite.bankKeeper, + &suite.distrKeeper, + &suite.stakingKeeper, + ) + suite.NoError(err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - queryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) - types.RegisterQueryServer(queryHelper, app.DistrKeeper) + queryHelper := baseapp.NewQueryServerTestHelper(ctx, suite.interfaceRegistry) + types.RegisterQueryServer(queryHelper, suite.distrKeeper) queryClient := types.NewQueryClient(queryHelper) - suite.app = app suite.ctx = ctx suite.queryClient = queryClient - suite.addrs = simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000000000)) - suite.valAddrs = simapp.ConvertAddrsToValAddrs(suite.addrs) + suite.addrs = simtestutil.AddTestAddrs(suite.bankKeeper, suite.stakingKeeper, ctx, 2, sdk.NewInt(1000000000)) + suite.valAddrs = simtestutil.ConvertAddrsToValAddrs(suite.addrs) } func (suite *KeeperTestSuite) TestGRPCParams() { - app, ctx, queryClient := suite.app, suite.ctx, suite.queryClient + ctx, queryClient := suite.ctx, suite.queryClient var ( params types.Params @@ -77,7 +92,7 @@ func (suite *KeeperTestSuite) TestGRPCParams() { WithdrawAddrEnabled: true, } - app.DistrKeeper.SetParams(ctx, params) + suite.distrKeeper.SetParams(ctx, params) req = &types.QueryParamsRequest{} expParams = params }, @@ -103,7 +118,7 @@ func (suite *KeeperTestSuite) TestGRPCParams() { } func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() { - app, ctx, queryClient, valAddrs := suite.app, suite.ctx, suite.queryClient, suite.valAddrs + ctx, queryClient, valAddrs := suite.ctx, suite.queryClient, suite.valAddrs valCommission := sdk.DecCoins{ sdk.NewDecCoinFromDec("mytoken", sdk.NewDec(5000)), @@ -111,8 +126,8 @@ func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() { } // set outstanding rewards - app.DistrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission}) - rewards := app.DistrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]) + suite.distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission}) + rewards := suite.distrKeeper.GetValidatorOutstandingRewards(ctx, valAddrs[0]) var req *types.QueryValidatorOutstandingRewardsRequest @@ -155,10 +170,10 @@ func (suite *KeeperTestSuite) TestGRPCValidatorOutstandingRewards() { } func (suite *KeeperTestSuite) TestGRPCValidatorCommission() { - app, ctx, queryClient, valAddrs := suite.app, suite.ctx, suite.queryClient, suite.valAddrs + ctx, queryClient, valAddrs := suite.ctx, suite.queryClient, suite.valAddrs commission := sdk.DecCoins{{Denom: "token1", Amount: sdk.NewDec(4)}, {Denom: "token2", Amount: sdk.NewDec(2)}} - app.DistrKeeper.SetValidatorAccumulatedCommission(ctx, valAddrs[0], types.ValidatorAccumulatedCommission{Commission: commission}) + suite.distrKeeper.SetValidatorAccumulatedCommission(ctx, valAddrs[0], types.ValidatorAccumulatedCommission{Commission: commission}) var req *types.QueryValidatorCommissionRequest @@ -202,7 +217,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorCommission() { } func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() { - app, ctx, queryClient, valAddrs := suite.app, suite.ctx, suite.queryClient, suite.valAddrs + ctx, queryClient, valAddrs := suite.ctx, suite.queryClient, suite.valAddrs slashes := []types.ValidatorSlashEvent{ types.NewValidatorSlashEvent(3, sdk.NewDecWithPrec(5, 1)), @@ -212,7 +227,7 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() { } for i, slash := range slashes { - app.DistrKeeper.SetValidatorSlashEvent(ctx, valAddrs[0], uint64(i+2), 0, slash) + suite.distrKeeper.SetValidatorSlashEvent(ctx, valAddrs[0], uint64(i+2), 0, slash) } var ( @@ -340,24 +355,24 @@ func (suite *KeeperTestSuite) TestGRPCValidatorSlashes() { } func (suite *KeeperTestSuite) TestGRPCDelegationRewards() { - app, ctx, addrs, valAddrs := suite.app, suite.ctx, suite.addrs, suite.valAddrs + ctx, addrs, valAddrs := suite.ctx, suite.addrs, suite.valAddrs - tstaking := teststaking.NewHelper(suite.T(), ctx, app.StakingKeeper) + tstaking := teststaking.NewHelper(suite.T(), ctx, suite.stakingKeeper) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) tstaking.CreateValidator(valAddrs[0], valConsPk1, sdk.NewInt(100), true) - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, suite.stakingKeeper) ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) - queryHelper := baseapp.NewQueryServerTestHelper(ctx, app.InterfaceRegistry()) - types.RegisterQueryServer(queryHelper, app.DistrKeeper) + queryHelper := baseapp.NewQueryServerTestHelper(ctx, suite.interfaceRegistry) + types.RegisterQueryServer(queryHelper, suite.distrKeeper) queryClient := types.NewQueryClient(queryHelper) - val := app.StakingKeeper.Validator(ctx, valAddrs[0]) + val := suite.stakingKeeper.Validator(ctx, valAddrs[0]) initial := int64(10) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial)}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + suite.distrKeeper.AllocateTokensToValidator(ctx, val, tokens) // test command delegation rewards grpc var ( @@ -554,9 +569,9 @@ func (suite *KeeperTestSuite) TestGRPCDelegationRewards() { } func (suite *KeeperTestSuite) TestGRPCDelegatorWithdrawAddress() { - app, ctx, queryClient, addrs := suite.app, suite.ctx, suite.queryClient, suite.addrs + ctx, queryClient, addrs := suite.ctx, suite.queryClient, suite.addrs - err := app.DistrKeeper.SetWithdrawAddr(ctx, addrs[0], addrs[1]) + err := suite.distrKeeper.SetWithdrawAddr(ctx, addrs[0], addrs[1]) suite.Require().Nil(err) var req *types.QueryDelegatorWithdrawAddressRequest @@ -600,9 +615,9 @@ func (suite *KeeperTestSuite) TestGRPCDelegatorWithdrawAddress() { } func (suite *KeeperTestSuite) TestGRPCCommunityPool() { - app, ctx, queryClient, addrs := suite.app, suite.ctx, suite.queryClient, suite.addrs + ctx, queryClient, addrs := suite.ctx, suite.queryClient, suite.addrs // reset fee pool - app.DistrKeeper.SetFeePool(ctx, types.InitialFeePool()) + suite.distrKeeper.SetFeePool(ctx, types.InitialFeePool()) var ( req *types.QueryCommunityPoolRequest @@ -626,9 +641,9 @@ func (suite *KeeperTestSuite) TestGRPCCommunityPool() { "valid request", func() { amount := sdk.NewCoins(sdk.NewInt64Coin("stake", 100)) - suite.Require().NoError(testutil.FundAccount(app.BankKeeper, ctx, addrs[0], amount)) + suite.Require().NoError(banktestutil.FundAccount(suite.bankKeeper, ctx, addrs[0], amount)) - err := app.DistrKeeper.FundCommunityPool(ctx, amount, addrs[0]) + err := suite.distrKeeper.FundCommunityPool(ctx, amount, addrs[0]) suite.Require().Nil(err) req = &types.QueryCommunityPoolRequest{} diff --git a/x/distribution/keeper/keeper_test.go b/x/distribution/keeper/keeper_test.go index 9895e420bf80..4d671d7329d0 100644 --- a/x/distribution/keeper/keeper_test.go +++ b/x/distribution/keeper/keeper_test.go @@ -3,40 +3,70 @@ package keeper_test import ( "testing" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" ) func TestSetWithdrawAddr(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000000000)) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1000000000)) - params := app.DistrKeeper.GetParams(ctx) + params := distrKeeper.GetParams(ctx) params.WithdrawAddrEnabled = false - app.DistrKeeper.SetParams(ctx, params) + distrKeeper.SetParams(ctx, params) - err := app.DistrKeeper.SetWithdrawAddr(ctx, addr[0], addr[1]) + err = distrKeeper.SetWithdrawAddr(ctx, addr[0], addr[1]) require.NotNil(t, err) params.WithdrawAddrEnabled = true - app.DistrKeeper.SetParams(ctx, params) + distrKeeper.SetParams(ctx, params) - err = app.DistrKeeper.SetWithdrawAddr(ctx, addr[0], addr[1]) + err = distrKeeper.SetWithdrawAddr(ctx, addr[0], addr[1]) require.Nil(t, err) - require.Error(t, app.DistrKeeper.SetWithdrawAddr(ctx, addr[0], distrAcc.GetAddress())) + require.Error(t, distrKeeper.SetWithdrawAddr(ctx, addr[0], distrAcc.GetAddress())) } func TestWithdrawValidatorCommission(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) valCommission := sdk.DecCoins{ @@ -44,41 +74,41 @@ func TestWithdrawValidatorCommission(t *testing.T) { sdk.NewDecCoinFromDec("stake", sdk.NewDec(3).Quo(sdk.NewDec(2))), } - addr := simapp.AddTestAddrs(app, ctx, 1, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) // set module account coins - distrAcc := app.DistrKeeper.GetDistributionAccount(ctx) + distrAcc := distrKeeper.GetDistributionAccount(ctx) coins := sdk.NewCoins(sdk.NewCoin("mytoken", sdk.NewInt(2)), sdk.NewCoin("stake", sdk.NewInt(2))) - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, distrAcc.GetName(), coins)) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, distrAcc.GetName(), coins)) - app.AccountKeeper.SetModuleAccount(ctx, distrAcc) + accountKeeper.SetModuleAccount(ctx, distrAcc) // check initial balance - balance := app.BankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])) - expTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 1000) + balance := bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])) + expTokens := stakingKeeper.TokensFromConsensusPower(ctx, 1000) expCoins := sdk.NewCoins(sdk.NewCoin("stake", expTokens)) require.Equal(t, expCoins, balance) // set outstanding rewards - app.DistrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission}) + distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission}) // set commission - app.DistrKeeper.SetValidatorAccumulatedCommission(ctx, valAddrs[0], types.ValidatorAccumulatedCommission{Commission: valCommission}) + distrKeeper.SetValidatorAccumulatedCommission(ctx, valAddrs[0], types.ValidatorAccumulatedCommission{Commission: valCommission}) // withdraw commission - _, err := app.DistrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) + _, err = distrKeeper.WithdrawValidatorCommission(ctx, valAddrs[0]) require.NoError(t, err) // check balance increase - balance = app.BankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])) + balance = bankKeeper.GetAllBalances(ctx, sdk.AccAddress(valAddrs[0])) require.Equal(t, sdk.NewCoins( sdk.NewCoin("mytoken", sdk.NewInt(1)), sdk.NewCoin("stake", expTokens.AddRaw(1)), ), balance) // check remainder - remainder := app.DistrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission + remainder := distrKeeper.GetValidatorAccumulatedCommission(ctx, valAddrs[0]).Commission require.Equal(t, sdk.DecCoins{ sdk.NewDecCoinFromDec("mytoken", sdk.NewDec(1).Quo(sdk.NewDec(4))), sdk.NewDecCoinFromDec("stake", sdk.NewDec(1).Quo(sdk.NewDec(2))), @@ -88,7 +118,19 @@ func TestWithdrawValidatorCommission(t *testing.T) { } func TestGetTotalRewards(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) valCommission := sdk.DecCoins{ @@ -96,36 +138,48 @@ func TestGetTotalRewards(t *testing.T) { sdk.NewDecCoinFromDec("stake", sdk.NewDec(3).Quo(sdk.NewDec(2))), } - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) - app.DistrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission}) - app.DistrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[1], types.ValidatorOutstandingRewards{Rewards: valCommission}) + distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[0], types.ValidatorOutstandingRewards{Rewards: valCommission}) + distrKeeper.SetValidatorOutstandingRewards(ctx, valAddrs[1], types.ValidatorOutstandingRewards{Rewards: valCommission}) expectedRewards := valCommission.MulDec(sdk.NewDec(2)) - totalRewards := app.DistrKeeper.GetTotalRewards(ctx) + totalRewards := distrKeeper.GetTotalRewards(ctx) require.Equal(t, expectedRewards, totalRewards) } func TestFundCommunityPool(t *testing.T) { - app := simapp.Setup(t, false) + var ( + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) // reset fee pool - app.DistrKeeper.SetFeePool(ctx, types.InitialFeePool()) + distrKeeper.SetFeePool(ctx, types.InitialFeePool()) - addr := simapp.AddTestAddrs(app, ctx, 2, sdk.ZeroInt()) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 2, sdk.ZeroInt()) amount := sdk.NewCoins(sdk.NewInt64Coin("stake", 100)) - require.NoError(t, testutil.FundAccount(app.BankKeeper, ctx, addr[0], amount)) + require.NoError(t, banktestutil.FundAccount(bankKeeper, ctx, addr[0], amount)) - initPool := app.DistrKeeper.GetFeePool(ctx) - assert.Empty(t, initPool.CommunityPool) + initPool := distrKeeper.GetFeePool(ctx) + require.Empty(t, initPool.CommunityPool) - err := app.DistrKeeper.FundCommunityPool(ctx, amount, addr[0]) - assert.Nil(t, err) + err = distrKeeper.FundCommunityPool(ctx, amount, addr[0]) + require.Nil(t, err) - assert.Equal(t, initPool.CommunityPool.Add(sdk.NewDecCoinsFromCoins(amount...)...), app.DistrKeeper.GetFeePool(ctx).CommunityPool) - assert.Empty(t, app.BankKeeper.GetAllBalances(ctx, addr[0])) + require.Equal(t, initPool.CommunityPool.Add(sdk.NewDecCoinsFromCoins(amount...)...), distrKeeper.GetFeePool(ctx).CommunityPool) + require.Empty(t, bankKeeper.GetAllBalances(ctx, addr[0])) } diff --git a/x/distribution/keeper/querier_test.go b/x/distribution/keeper/querier_test.go index 9e1fe7cccce5..bb12f6f0ecea 100644 --- a/x/distribution/keeper/querier_test.go +++ b/x/distribution/keeper/querier_test.go @@ -9,12 +9,15 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/codec" - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/staking" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) @@ -112,21 +115,34 @@ func getQueriedCommunityPool(t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmi } func TestQueries(t *testing.T) { - cdc := codec.NewLegacyAmino() + var ( + cdc *codec.LegacyAmino + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + stakingKeeper *stakingkeeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &cdc, + &bankKeeper, + &distrKeeper, + &stakingKeeper, + ) + require.NoError(t, err) + types.RegisterLegacyAminoCodec(cdc) banktypes.RegisterLegacyAminoCodec(cdc) - app := simapp.Setup(t, false) ctx := app.BaseApp.NewContext(false, tmproto.Header{}) // reset fee pool - app.DistrKeeper.SetFeePool(ctx, types.InitialFeePool()) + distrKeeper.SetFeePool(ctx, types.InitialFeePool()) - addr := simapp.AddTestAddrs(app, ctx, 1, sdk.NewInt(1000000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addr) + addr := simtestutil.AddTestAddrs(bankKeeper, stakingKeeper, ctx, 1, sdk.NewInt(1000000000)) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addr) valOpAddr1 := valAddrs[0] - querier := keeper.NewQuerier(app.DistrKeeper, cdc) + querier := keeper.NewQuerier(distrKeeper, cdc) // test param queries params := types.Params{ @@ -136,7 +152,7 @@ func TestQueries(t *testing.T) { WithdrawAddrEnabled: true, } - app.DistrKeeper.SetParams(ctx, params) + distrKeeper.SetParams(ctx, params) paramsRes := getQueriedParams(t, ctx, cdc, querier) require.Equal(t, params.CommunityTax, paramsRes.CommunityTax) @@ -146,13 +162,13 @@ func TestQueries(t *testing.T) { // test outstanding rewards query outstandingRewards := sdk.DecCoins{{Denom: "mytoken", Amount: sdk.NewDec(3)}, {Denom: "myothertoken", Amount: sdk.NewDecWithPrec(3, 7)}} - app.DistrKeeper.SetValidatorOutstandingRewards(ctx, valOpAddr1, types.ValidatorOutstandingRewards{Rewards: outstandingRewards}) + distrKeeper.SetValidatorOutstandingRewards(ctx, valOpAddr1, types.ValidatorOutstandingRewards{Rewards: outstandingRewards}) retOutstandingRewards := getQueriedValidatorOutstandingRewards(t, ctx, cdc, querier, valOpAddr1) require.Equal(t, outstandingRewards, retOutstandingRewards) // test validator commission query commission := sdk.DecCoins{{Denom: "token1", Amount: sdk.NewDec(4)}, {Denom: "token2", Amount: sdk.NewDec(2)}} - app.DistrKeeper.SetValidatorAccumulatedCommission(ctx, valOpAddr1, types.ValidatorAccumulatedCommission{Commission: commission}) + distrKeeper.SetValidatorAccumulatedCommission(ctx, valOpAddr1, types.ValidatorAccumulatedCommission{Commission: commission}) retCommission := getQueriedValidatorCommission(t, ctx, cdc, querier, valOpAddr1) require.Equal(t, commission, retCommission) @@ -163,8 +179,8 @@ func TestQueries(t *testing.T) { // test validator slashes query with height range slashOne := types.NewValidatorSlashEvent(3, sdk.NewDecWithPrec(5, 1)) slashTwo := types.NewValidatorSlashEvent(7, sdk.NewDecWithPrec(6, 1)) - app.DistrKeeper.SetValidatorSlashEvent(ctx, valOpAddr1, 3, 0, slashOne) - app.DistrKeeper.SetValidatorSlashEvent(ctx, valOpAddr1, 7, 0, slashTwo) + distrKeeper.SetValidatorSlashEvent(ctx, valOpAddr1, 3, 0, slashOne) + distrKeeper.SetValidatorSlashEvent(ctx, valOpAddr1, 7, 0, slashTwo) slashes := getQueriedValidatorSlashes(t, ctx, cdc, querier, valOpAddr1, 0, 2) require.Equal(t, 0, len(slashes)) slashes = getQueriedValidatorSlashes(t, ctx, cdc, querier, valOpAddr1, 0, 5) @@ -173,19 +189,19 @@ func TestQueries(t *testing.T) { require.Equal(t, []types.ValidatorSlashEvent{slashOne, slashTwo}, slashes) // test delegation rewards query - tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) + tstaking := teststaking.NewHelper(t, ctx, stakingKeeper) tstaking.Commission = stakingtypes.NewCommissionRates(sdk.NewDecWithPrec(5, 1), sdk.NewDecWithPrec(5, 1), sdk.NewDec(0)) tstaking.CreateValidator(valOpAddr1, valConsPk1, sdk.NewInt(100), true) - staking.EndBlocker(ctx, app.StakingKeeper) + staking.EndBlocker(ctx, stakingKeeper) - val := app.StakingKeeper.Validator(ctx, valOpAddr1) + val := stakingKeeper.Validator(ctx, valOpAddr1) rewards := getQueriedDelegationRewards(t, ctx, cdc, querier, sdk.AccAddress(valOpAddr1), valOpAddr1) require.True(t, rewards.IsZero()) initial := int64(10) ctx = ctx.WithBlockHeight(ctx.BlockHeight() + 1) tokens := sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial)}} - app.DistrKeeper.AllocateTokensToValidator(ctx, val, tokens) + distrKeeper.AllocateTokensToValidator(ctx, val, tokens) rewards = getQueriedDelegationRewards(t, ctx, cdc, querier, sdk.AccAddress(valOpAddr1), valOpAddr1) require.Equal(t, sdk.DecCoins{{Denom: sdk.DefaultBondDenom, Amount: sdk.NewDec(initial / 2)}}, rewards) diff --git a/x/distribution/module_test.go b/x/distribution/module_test.go index 3297ff84dc3c..4a2cd8d40cca 100644 --- a/x/distribution/module_test.go +++ b/x/distribution/module_test.go @@ -4,35 +4,22 @@ import ( "testing" "github.com/stretchr/testify/require" - abcitypes "github.com/tendermint/tendermint/abci/types" - tmjson "github.com/tendermint/tendermint/libs/json" - "github.com/tendermint/tendermint/libs/log" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - dbm "github.com/tendermint/tm-db" - "github.com/cosmos/cosmos-sdk/simapp" simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" ) func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { - db := dbm.NewMemDB() - encCdc := simapp.MakeTestEncodingConfig() - app := simapp.NewSimApp(log.NewNopLogger(), db, nil, true, 5, encCdc, simtestutil.NewAppOptionsWithFlagHome(simapp.DefaultNodeHome)) + var accountKeeper authkeeper.AccountKeeper - genesisState := simapp.GenesisStateWithSingleValidator(t, app) - stateBytes, err := tmjson.Marshal(genesisState) + app, err := simtestutil.SetupAtGenesis(testutil.AppConfig, &accountKeeper) require.NoError(t, err) - app.InitChain( - abcitypes.RequestInitChain{ - AppStateBytes: stateBytes, - ChainId: "test-chain-id", - }, - ) - ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - acc := app.AccountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) + acc := accountKeeper.GetAccount(ctx, authtypes.NewModuleAddress(types.ModuleName)) require.NotNil(t, acc) } diff --git a/x/distribution/proposal_handler_test.go b/x/distribution/proposal_handler_test.go index 24be6c98e5ae..5acd7efdb0c3 100644 --- a/x/distribution/proposal_handler_test.go +++ b/x/distribution/proposal_handler_test.go @@ -7,10 +7,14 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" "github.com/cosmos/cosmos-sdk/x/distribution" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" ) @@ -26,51 +30,75 @@ func testProposal(recipient sdk.AccAddress, amount sdk.Coins) *types.CommunityPo } func TestProposalHandlerPassed(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) recipient := delAddr1 // add coins to the module account - macc := app.DistrKeeper.GetDistributionAccount(ctx) - balances := app.BankKeeper.GetAllBalances(ctx, macc.GetAddress()) - require.NoError(t, testutil.FundModuleAccount(app.BankKeeper, ctx, macc.GetName(), amount)) + macc := distrKeeper.GetDistributionAccount(ctx) + balances := bankKeeper.GetAllBalances(ctx, macc.GetAddress()) + require.NoError(t, banktestutil.FundModuleAccount(bankKeeper, ctx, macc.GetName(), amount)) - app.AccountKeeper.SetModuleAccount(ctx, macc) + accountKeeper.SetModuleAccount(ctx, macc) - account := app.AccountKeeper.NewAccountWithAddress(ctx, recipient) - app.AccountKeeper.SetAccount(ctx, account) - require.True(t, app.BankKeeper.GetAllBalances(ctx, account.GetAddress()).IsZero()) + account := accountKeeper.NewAccountWithAddress(ctx, recipient) + accountKeeper.SetAccount(ctx, account) + require.True(t, bankKeeper.GetAllBalances(ctx, account.GetAddress()).IsZero()) - feePool := app.DistrKeeper.GetFeePool(ctx) + feePool := distrKeeper.GetFeePool(ctx) feePool.CommunityPool = sdk.NewDecCoinsFromCoins(amount...) - app.DistrKeeper.SetFeePool(ctx, feePool) + distrKeeper.SetFeePool(ctx, feePool) tp := testProposal(recipient, amount) - hdlr := distribution.NewCommunityPoolSpendProposalHandler(app.DistrKeeper) + hdlr := distribution.NewCommunityPoolSpendProposalHandler(distrKeeper) require.NoError(t, hdlr(ctx, tp)) - balances = app.BankKeeper.GetAllBalances(ctx, recipient) + balances = bankKeeper.GetAllBalances(ctx, recipient) require.Equal(t, balances, amount) } func TestProposalHandlerFailed(t *testing.T) { - app := simapp.Setup(t, false) + var ( + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper + ) + + app, err := simtestutil.Setup(testutil.AppConfig, + &accountKeeper, + &bankKeeper, + &distrKeeper, + ) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) // reset fee pool - app.DistrKeeper.SetFeePool(ctx, types.InitialFeePool()) + distrKeeper.SetFeePool(ctx, types.InitialFeePool()) recipient := delAddr1 - account := app.AccountKeeper.NewAccountWithAddress(ctx, recipient) - app.AccountKeeper.SetAccount(ctx, account) - require.True(t, app.BankKeeper.GetAllBalances(ctx, account.GetAddress()).IsZero()) + account := accountKeeper.NewAccountWithAddress(ctx, recipient) + accountKeeper.SetAccount(ctx, account) + require.True(t, bankKeeper.GetAllBalances(ctx, account.GetAddress()).IsZero()) tp := testProposal(recipient, amount) - hdlr := distribution.NewCommunityPoolSpendProposalHandler(app.DistrKeeper) + hdlr := distribution.NewCommunityPoolSpendProposalHandler(distrKeeper) require.Error(t, hdlr(ctx, tp)) - balances := app.BankKeeper.GetAllBalances(ctx, recipient) + balances := bankKeeper.GetAllBalances(ctx, recipient) require.True(t, balances.IsZero()) } diff --git a/x/distribution/simulation/decoder_test.go b/x/distribution/simulation/decoder_test.go index 01e986fe53eb..37151379b5dc 100644 --- a/x/distribution/simulation/decoder_test.go +++ b/x/distribution/simulation/decoder_test.go @@ -6,11 +6,13 @@ import ( "github.com/stretchr/testify/require" + "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" - "github.com/cosmos/cosmos-sdk/simapp" + "github.com/cosmos/cosmos-sdk/depinject" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/kv" "github.com/cosmos/cosmos-sdk/x/distribution/simulation" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" ) @@ -22,7 +24,10 @@ var ( ) func TestDecodeDistributionStore(t *testing.T) { - cdc := simapp.MakeTestEncodingConfig().Codec + var cdc codec.Codec + err := depinject.Inject(testutil.AppConfig, &cdc) + require.NoError(t, err) + dec := simulation.NewDecodeStore(cdc) decCoins := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.OneDec())} diff --git a/x/distribution/simulation/operations.go b/x/distribution/simulation/operations.go index 0154b040c1c1..2bbd52b6a814 100644 --- a/x/distribution/simulation/operations.go +++ b/x/distribution/simulation/operations.go @@ -5,10 +5,13 @@ import ( "math/rand" "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/auth/tx" "github.com/cosmos/cosmos-sdk/x/distribution/keeper" "github.com/cosmos/cosmos-sdk/x/distribution/types" "github.com/cosmos/cosmos-sdk/x/simulation" @@ -29,55 +32,58 @@ func WeightedOperations(appParams simtypes.AppParams, cdc codec.JSONCodec, ak ty var weightMsgSetWithdrawAddress int appParams.GetOrGenerate(cdc, OpWeightMsgSetWithdrawAddress, &weightMsgSetWithdrawAddress, nil, func(_ *rand.Rand) { - weightMsgSetWithdrawAddress = simappparams.DefaultWeightMsgSetWithdrawAddress + weightMsgSetWithdrawAddress = simtestutil.DefaultWeightMsgSetWithdrawAddress }, ) var weightMsgWithdrawDelegationReward int appParams.GetOrGenerate(cdc, OpWeightMsgWithdrawDelegationReward, &weightMsgWithdrawDelegationReward, nil, func(_ *rand.Rand) { - weightMsgWithdrawDelegationReward = simappparams.DefaultWeightMsgWithdrawDelegationReward + weightMsgWithdrawDelegationReward = simtestutil.DefaultWeightMsgWithdrawDelegationReward }, ) var weightMsgWithdrawValidatorCommission int appParams.GetOrGenerate(cdc, OpWeightMsgWithdrawValidatorCommission, &weightMsgWithdrawValidatorCommission, nil, func(_ *rand.Rand) { - weightMsgWithdrawValidatorCommission = simappparams.DefaultWeightMsgWithdrawValidatorCommission + weightMsgWithdrawValidatorCommission = simtestutil.DefaultWeightMsgWithdrawValidatorCommission }, ) var weightMsgFundCommunityPool int appParams.GetOrGenerate(cdc, OpWeightMsgFundCommunityPool, &weightMsgFundCommunityPool, nil, func(_ *rand.Rand) { - weightMsgFundCommunityPool = simappparams.DefaultWeightMsgFundCommunityPool + weightMsgFundCommunityPool = simtestutil.DefaultWeightMsgFundCommunityPool }, ) stakeKeeper := sk.(*stakingkeeper.Keeper) + interfaceRegistry := codectypes.NewInterfaceRegistry() + txConfig := tx.NewTxConfig(codec.NewProtoCodec(interfaceRegistry), tx.DefaultSignModes) + return simulation.WeightedOperations{ simulation.NewWeightedOperation( weightMsgSetWithdrawAddress, - SimulateMsgSetWithdrawAddress(ak, bk, k), + SimulateMsgSetWithdrawAddress(txConfig, ak, bk, k), ), simulation.NewWeightedOperation( weightMsgWithdrawDelegationReward, - SimulateMsgWithdrawDelegatorReward(ak, bk, k, stakeKeeper), + SimulateMsgWithdrawDelegatorReward(txConfig, ak, bk, k, stakeKeeper), ), simulation.NewWeightedOperation( weightMsgWithdrawValidatorCommission, - SimulateMsgWithdrawValidatorCommission(ak, bk, k, stakeKeeper), + SimulateMsgWithdrawValidatorCommission(txConfig, ak, bk, k, stakeKeeper), ), simulation.NewWeightedOperation( weightMsgFundCommunityPool, - SimulateMsgFundCommunityPool(ak, bk, k, stakeKeeper), + SimulateMsgFundCommunityPool(txConfig, ak, bk, k, stakeKeeper), ), } } // SimulateMsgSetWithdrawAddress generates a MsgSetWithdrawAddress with random values. -func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { +func SimulateMsgSetWithdrawAddress(txConfig client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -96,7 +102,7 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, txCtx := simulation.OperationInput{ R: r, App: app, - TxGen: simappparams.MakeTestEncodingConfig().TxConfig, + TxGen: txConfig, Cdc: nil, Msg: msg, MsgType: msg.Type(), @@ -113,7 +119,7 @@ func SimulateMsgSetWithdrawAddress(ak types.AccountKeeper, bk types.BankKeeper, } // SimulateMsgWithdrawDelegatorReward generates a MsgWithdrawDelegatorReward with random values. -func SimulateMsgWithdrawDelegatorReward(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk *stakingkeeper.Keeper) simtypes.Operation { +func SimulateMsgWithdrawDelegatorReward(txConfig client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk *stakingkeeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -138,7 +144,7 @@ func SimulateMsgWithdrawDelegatorReward(ak types.AccountKeeper, bk types.BankKee txCtx := simulation.OperationInput{ R: r, App: app, - TxGen: simappparams.MakeTestEncodingConfig().TxConfig, + TxGen: txConfig, Cdc: nil, Msg: msg, MsgType: msg.Type(), @@ -155,7 +161,7 @@ func SimulateMsgWithdrawDelegatorReward(ak types.AccountKeeper, bk types.BankKee } // SimulateMsgWithdrawValidatorCommission generates a MsgWithdrawValidatorCommission with random values. -func SimulateMsgWithdrawValidatorCommission(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk *stakingkeeper.Keeper) simtypes.Operation { +func SimulateMsgWithdrawValidatorCommission(txConfig client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk *stakingkeeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -182,7 +188,7 @@ func SimulateMsgWithdrawValidatorCommission(ak types.AccountKeeper, bk types.Ban txCtx := simulation.OperationInput{ R: r, App: app, - TxGen: simappparams.MakeTestEncodingConfig().TxConfig, + TxGen: txConfig, Cdc: nil, Msg: msg, MsgType: msg.Type(), @@ -200,7 +206,7 @@ func SimulateMsgWithdrawValidatorCommission(ak types.AccountKeeper, bk types.Ban // SimulateMsgFundCommunityPool simulates MsgFundCommunityPool execution where // a random account sends a random amount of its funds to the community pool. -func SimulateMsgFundCommunityPool(ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk *stakingkeeper.Keeper) simtypes.Operation { +func SimulateMsgFundCommunityPool(txConfig client.TxConfig, ak types.AccountKeeper, bk types.BankKeeper, k keeper.Keeper, sk *stakingkeeper.Keeper) simtypes.Operation { return func( r *rand.Rand, app *baseapp.BaseApp, ctx sdk.Context, accs []simtypes.Account, chainID string, ) (simtypes.OperationMsg, []simtypes.FutureOperation, error) { @@ -231,7 +237,7 @@ func SimulateMsgFundCommunityPool(ak types.AccountKeeper, bk types.BankKeeper, k txCtx := simulation.OperationInput{ App: app, - TxGen: simappparams.MakeTestEncodingConfig().TxConfig, + TxGen: txConfig, Cdc: nil, Msg: msg, MsgType: msg.Type(), diff --git a/x/distribution/simulation/operations_test.go b/x/distribution/simulation/operations_test.go index 37f8c4a38226..6e7c7f7c826e 100644 --- a/x/distribution/simulation/operations_test.go +++ b/x/distribution/simulation/operations_test.go @@ -8,25 +8,30 @@ import ( abci "github.com/tendermint/tendermint/abci/types" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - "github.com/cosmos/cosmos-sdk/simapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/runtime" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" - "github.com/cosmos/cosmos-sdk/x/bank/testutil" + authkeeper "github.com/cosmos/cosmos-sdk/x/auth/keeper" + bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" + banktestutil "github.com/cosmos/cosmos-sdk/x/bank/testutil" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" "github.com/cosmos/cosmos-sdk/x/distribution/simulation" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" "github.com/cosmos/cosmos-sdk/x/distribution/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" + stakingkeeper "github.com/cosmos/cosmos-sdk/x/staking/keeper" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" ) // TestWeightedOperations tests the weights of the operations. func (suite *SimTestSuite) TestWeightedOperations() { - cdc := suite.app.AppCodec() appParams := make(simtypes.AppParams) - weightesOps := simulation.WeightedOperations(appParams, cdc, suite.app.AccountKeeper, - suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper, - ) + weightesOps := simulation.WeightedOperations(appParams, suite.cdc, suite.accountKeeper, + suite.bankKeeper, suite.distrKeeper, suite.stakingKeeper) // setup 3 accounts s := rand.NewSource(1) @@ -38,10 +43,10 @@ func (suite *SimTestSuite) TestWeightedOperations() { opMsgRoute string opMsgName string }{ - {simappparams.DefaultWeightMsgSetWithdrawAddress, types.ModuleName, types.TypeMsgSetWithdrawAddress}, - {simappparams.DefaultWeightMsgWithdrawDelegationReward, types.ModuleName, types.TypeMsgWithdrawDelegatorReward}, - {simappparams.DefaultWeightMsgWithdrawValidatorCommission, types.ModuleName, types.TypeMsgWithdrawValidatorCommission}, - {simappparams.DefaultWeightMsgFundCommunityPool, types.ModuleName, types.TypeMsgFundCommunityPool}, + {simtestutil.DefaultWeightMsgSetWithdrawAddress, types.ModuleName, types.TypeMsgSetWithdrawAddress}, + {simtestutil.DefaultWeightMsgWithdrawDelegationReward, types.ModuleName, types.TypeMsgWithdrawDelegatorReward}, + {simtestutil.DefaultWeightMsgWithdrawValidatorCommission, types.ModuleName, types.TypeMsgWithdrawValidatorCommission}, + {simtestutil.DefaultWeightMsgFundCommunityPool, types.ModuleName, types.TypeMsgFundCommunityPool}, } for i, w := range weightesOps { @@ -69,7 +74,7 @@ func (suite *SimTestSuite) TestSimulateMsgSetWithdrawAddress() { suite.app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation - op := simulation.SimulateMsgSetWithdrawAddress(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper) + op := simulation.SimulateMsgSetWithdrawAddress(suite.txConfig, suite.accountKeeper, suite.bankKeeper, suite.distrKeeper) operationMsg, futureOperations, err := op(r, suite.app.BaseApp, suite.ctx, accounts, "") suite.Require().NoError(err) @@ -97,12 +102,12 @@ func (suite *SimTestSuite) TestSimulateMsgWithdrawDelegatorReward() { validator0 := suite.getTestingValidator0(accounts) // setup delegation - delTokens := suite.app.StakingKeeper.TokensFromConsensusPower(suite.ctx, 2) + delTokens := suite.stakingKeeper.TokensFromConsensusPower(suite.ctx, 2) validator0, issuedShares := validator0.AddTokensFromDel(delTokens) delegator := accounts[1] delegation := stakingtypes.NewDelegation(delegator.Address, validator0.GetOperator(), issuedShares) - suite.app.StakingKeeper.SetDelegation(suite.ctx, delegation) - suite.app.DistrKeeper.SetDelegatorStartingInfo(suite.ctx, validator0.GetOperator(), delegator.Address, distrtypes.NewDelegatorStartingInfo(2, sdk.OneDec(), 200)) + suite.stakingKeeper.SetDelegation(suite.ctx, delegation) + suite.distrKeeper.SetDelegatorStartingInfo(suite.ctx, validator0.GetOperator(), delegator.Address, distrtypes.NewDelegatorStartingInfo(2, sdk.OneDec(), 200)) suite.setupValidatorRewards(validator0.GetOperator()) @@ -110,7 +115,7 @@ func (suite *SimTestSuite) TestSimulateMsgWithdrawDelegatorReward() { suite.app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation - op := simulation.SimulateMsgWithdrawDelegatorReward(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper) + op := simulation.SimulateMsgWithdrawDelegatorReward(suite.txConfig, suite.accountKeeper, suite.bankKeeper, suite.distrKeeper, suite.stakingKeeper) operationMsg, futureOperations, err := op(r, suite.app.BaseApp, suite.ctx, accounts, "") suite.Require().NoError(err) @@ -144,12 +149,12 @@ func (suite *SimTestSuite) testSimulateMsgWithdrawValidatorCommission(tokenName validator0 := suite.getTestingValidator0(accounts) // set module account coins - distrAcc := suite.app.DistrKeeper.GetDistributionAccount(suite.ctx) - suite.Require().NoError(testutil.FundModuleAccount(suite.app.BankKeeper, suite.ctx, distrAcc.GetName(), sdk.NewCoins( + distrAcc := suite.distrKeeper.GetDistributionAccount(suite.ctx) + suite.Require().NoError(banktestutil.FundModuleAccount(suite.bankKeeper, suite.ctx, distrAcc.GetName(), sdk.NewCoins( sdk.NewCoin(tokenName, sdk.NewInt(10)), sdk.NewCoin("stake", sdk.NewInt(5)), ))) - suite.app.AccountKeeper.SetModuleAccount(suite.ctx, distrAcc) + suite.accountKeeper.SetModuleAccount(suite.ctx, distrAcc) // set outstanding rewards valCommission := sdk.NewDecCoins( @@ -157,18 +162,18 @@ func (suite *SimTestSuite) testSimulateMsgWithdrawValidatorCommission(tokenName sdk.NewDecCoinFromDec("stake", sdk.NewDec(1).Quo(sdk.NewDec(1))), ) - suite.app.DistrKeeper.SetValidatorOutstandingRewards(suite.ctx, validator0.GetOperator(), types.ValidatorOutstandingRewards{Rewards: valCommission}) - suite.app.DistrKeeper.SetValidatorOutstandingRewards(suite.ctx, suite.genesisVals[0].GetOperator(), types.ValidatorOutstandingRewards{Rewards: valCommission}) + suite.distrKeeper.SetValidatorOutstandingRewards(suite.ctx, validator0.GetOperator(), types.ValidatorOutstandingRewards{Rewards: valCommission}) + suite.distrKeeper.SetValidatorOutstandingRewards(suite.ctx, suite.genesisVals[0].GetOperator(), types.ValidatorOutstandingRewards{Rewards: valCommission}) // setup validator accumulated commission - suite.app.DistrKeeper.SetValidatorAccumulatedCommission(suite.ctx, validator0.GetOperator(), types.ValidatorAccumulatedCommission{Commission: valCommission}) - suite.app.DistrKeeper.SetValidatorAccumulatedCommission(suite.ctx, suite.genesisVals[0].GetOperator(), types.ValidatorAccumulatedCommission{Commission: valCommission}) + suite.distrKeeper.SetValidatorAccumulatedCommission(suite.ctx, validator0.GetOperator(), types.ValidatorAccumulatedCommission{Commission: valCommission}) + suite.distrKeeper.SetValidatorAccumulatedCommission(suite.ctx, suite.genesisVals[0].GetOperator(), types.ValidatorAccumulatedCommission{Commission: valCommission}) // begin a new block suite.app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation - op := simulation.SimulateMsgWithdrawValidatorCommission(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper) + op := simulation.SimulateMsgWithdrawValidatorCommission(suite.txConfig, suite.accountKeeper, suite.bankKeeper, suite.distrKeeper, suite.stakingKeeper) operationMsg, futureOperations, err := op(r, suite.app.BaseApp, suite.ctx, accounts, "") if !operationMsg.OK { suite.Require().Equal("could not find account", operationMsg.Comment) @@ -198,7 +203,7 @@ func (suite *SimTestSuite) TestSimulateMsgFundCommunityPool() { suite.app.BeginBlock(abci.RequestBeginBlock{Header: tmproto.Header{Height: suite.app.LastBlockHeight() + 1, AppHash: suite.app.LastCommitID().Hash}}) // execute operation - op := simulation.SimulateMsgFundCommunityPool(suite.app.AccountKeeper, suite.app.BankKeeper, suite.app.DistrKeeper, suite.app.StakingKeeper) + op := simulation.SimulateMsgFundCommunityPool(suite.txConfig, suite.accountKeeper, suite.bankKeeper, suite.distrKeeper, suite.stakingKeeper) operationMsg, futureOperations, err := op(r, suite.app.BaseApp, suite.ctx, accounts, "") suite.Require().NoError(err) @@ -217,16 +222,32 @@ type SimTestSuite struct { suite.Suite ctx sdk.Context - app *simapp.SimApp + app *runtime.App genesisVals []stakingtypes.Validator + + txConfig client.TxConfig + cdc codec.Codec + stakingKeeper *stakingkeeper.Keeper + accountKeeper authkeeper.AccountKeeper + bankKeeper bankkeeper.Keeper + distrKeeper keeper.Keeper } func (suite *SimTestSuite) SetupTest() { - checkTx := false - app := simapp.Setup(suite.T(), checkTx) + app, err := simtestutil.Setup(testutil.AppConfig, + &suite.cdc, + &suite.txConfig, + &suite.stakingKeeper, + &suite.accountKeeper, + &suite.bankKeeper, + &suite.distrKeeper, + ) + suite.NoError(err) + suite.app = app - suite.ctx = app.BaseApp.NewContext(checkTx, tmproto.Header{}) - genesisVals := app.StakingKeeper.GetAllValidators(suite.ctx) + suite.ctx = app.BaseApp.NewContext(false, tmproto.Header{}) + + genesisVals := suite.stakingKeeper.GetAllValidators(suite.ctx) suite.Require().Len(genesisVals, 1) suite.genesisVals = genesisVals } @@ -234,14 +255,14 @@ func (suite *SimTestSuite) SetupTest() { func (suite *SimTestSuite) getTestingAccounts(r *rand.Rand, n int) []simtypes.Account { accounts := simtypes.RandomAccounts(r, n) - initAmt := suite.app.StakingKeeper.TokensFromConsensusPower(suite.ctx, 200) + initAmt := suite.stakingKeeper.TokensFromConsensusPower(suite.ctx, 200) initCoins := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initAmt)) // add coins to the accounts for _, account := range accounts { - acc := suite.app.AccountKeeper.NewAccountWithAddress(suite.ctx, account.Address) - suite.app.AccountKeeper.SetAccount(suite.ctx, acc) - suite.Require().NoError(testutil.FundAccount(suite.app.BankKeeper, suite.ctx, account.Address, initCoins)) + acc := suite.accountKeeper.NewAccountWithAddress(suite.ctx, account.Address) + suite.accountKeeper.SetAccount(suite.ctx, acc) + suite.Require().NoError(banktestutil.FundAccount(suite.bankKeeper, suite.ctx, account.Address, initCoins)) } return accounts @@ -265,7 +286,7 @@ func (suite *SimTestSuite) getTestingValidator(accounts []simtypes.Account, comm validator.DelegatorShares = sdk.NewDec(100) validator.Tokens = sdk.NewInt(1000000) - suite.app.StakingKeeper.SetValidator(suite.ctx, validator) + suite.stakingKeeper.SetValidator(suite.ctx, validator) return validator } @@ -273,10 +294,10 @@ func (suite *SimTestSuite) getTestingValidator(accounts []simtypes.Account, comm func (suite *SimTestSuite) setupValidatorRewards(valAddress sdk.ValAddress) { decCoins := sdk.DecCoins{sdk.NewDecCoinFromDec(sdk.DefaultBondDenom, sdk.OneDec())} historicalRewards := distrtypes.NewValidatorHistoricalRewards(decCoins, 2) - suite.app.DistrKeeper.SetValidatorHistoricalRewards(suite.ctx, valAddress, 2, historicalRewards) + suite.distrKeeper.SetValidatorHistoricalRewards(suite.ctx, valAddress, 2, historicalRewards) // setup current revards currentRewards := distrtypes.NewValidatorCurrentRewards(decCoins, 3) - suite.app.DistrKeeper.SetValidatorCurrentRewards(suite.ctx, valAddress, currentRewards) + suite.distrKeeper.SetValidatorCurrentRewards(suite.ctx, valAddress, currentRewards) } func TestSimTestSuite(t *testing.T) { diff --git a/x/distribution/simulation/proposals.go b/x/distribution/simulation/proposals.go index 719229cb96f3..dab6f7cba46d 100644 --- a/x/distribution/simulation/proposals.go +++ b/x/distribution/simulation/proposals.go @@ -3,7 +3,7 @@ package simulation import ( "math/rand" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/distribution/keeper" @@ -19,7 +19,7 @@ func ProposalContents(k keeper.Keeper) []simtypes.WeightedProposalContent { return []simtypes.WeightedProposalContent{ simulation.NewWeightedProposalContent( OpWeightSubmitCommunitySpendProposal, - simappparams.DefaultWeightCommunitySpendProposal, + simtestutil.DefaultWeightCommunitySpendProposal, SimulateCommunityPoolSpendProposalContent(k), ), } diff --git a/x/distribution/simulation/proposals_test.go b/x/distribution/simulation/proposals_test.go index aec70fd832c4..281a03fbee5c 100644 --- a/x/distribution/simulation/proposals_test.go +++ b/x/distribution/simulation/proposals_test.go @@ -7,15 +7,19 @@ import ( "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - "github.com/cosmos/cosmos-sdk/simapp" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" + "github.com/cosmos/cosmos-sdk/x/distribution/keeper" "github.com/cosmos/cosmos-sdk/x/distribution/simulation" + "github.com/cosmos/cosmos-sdk/x/distribution/testutil" ) func TestProposalContents(t *testing.T) { - app := simapp.Setup(t, false) + var distrKeeper keeper.Keeper + app, err := simtestutil.Setup(testutil.AppConfig, &distrKeeper) + require.NoError(t, err) + ctx := app.BaseApp.NewContext(false, tmproto.Header{}) // initialize parameters @@ -25,20 +29,20 @@ func TestProposalContents(t *testing.T) { accounts := simtypes.RandomAccounts(r, 3) // execute ProposalContents function - weightedProposalContent := simulation.ProposalContents(app.DistrKeeper) + weightedProposalContent := simulation.ProposalContents(distrKeeper) require.Len(t, weightedProposalContent, 1) w0 := weightedProposalContent[0] // tests w0 interface: require.Equal(t, simulation.OpWeightSubmitCommunitySpendProposal, w0.AppParamsKey()) - require.Equal(t, simappparams.DefaultWeightTextProposal, w0.DefaultWeight()) + require.Equal(t, simtestutil.DefaultWeightTextProposal, w0.DefaultWeight()) amount := sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, sdk.NewInt(1)), sdk.NewCoin("atoken", sdk.NewInt(2))) - feePool := app.DistrKeeper.GetFeePool(ctx) + feePool := distrKeeper.GetFeePool(ctx) feePool.CommunityPool = sdk.NewDecCoinsFromCoins(amount...) - app.DistrKeeper.SetFeePool(ctx, feePool) + distrKeeper.SetFeePool(ctx, feePool) content := w0.ContentSimulatorFn()(r, ctx, accounts) diff --git a/x/distribution/testutil/app.yaml b/x/distribution/testutil/app.yaml index 162f6db92c84..8d12b1783528 100644 --- a/x/distribution/testutil/app.yaml +++ b/x/distribution/testutil/app.yaml @@ -5,8 +5,8 @@ modules: app_name: DistrApp - begin_blockers: [distribution, staking, auth, bank, genutil, params] - end_blockers: [staking, auth, bank, distribution, genutil, params] + begin_blockers: [mint, distribution, staking, auth, bank, genutil, params] + end_blockers: [staking, auth, bank, distribution, mint, genutil, params] init_genesis: [auth, bank, distribution, staking, mint, genutil, params] - name: auth @@ -15,6 +15,9 @@ modules: bech32_prefix: cosmos module_account_permissions: - account: fee_collector + - account: distribution + - account: mint + permissions: [minter] - account: bonded_tokens_pool permissions: [burner, staking] - account: not_bonded_tokens_pool @@ -40,6 +43,10 @@ modules: config: "@type": cosmos.genutil.module.v1.Module + - name: mint + config: + "@type": cosmos.mint.module.v1.Module + - name: distribution config: "@type": cosmos.distribution.module.v1.Module diff --git a/x/distribution/testutil/app_config.go b/x/distribution/testutil/app_config.go index c88f396c8a1e..c3d70daa5dbc 100644 --- a/x/distribution/testutil/app_config.go +++ b/x/distribution/testutil/app_config.go @@ -9,6 +9,7 @@ import ( _ "github.com/cosmos/cosmos-sdk/x/bank" _ "github.com/cosmos/cosmos-sdk/x/distribution" _ "github.com/cosmos/cosmos-sdk/x/genutil" + _ "github.com/cosmos/cosmos-sdk/x/mint" _ "github.com/cosmos/cosmos-sdk/x/params" _ "github.com/cosmos/cosmos-sdk/x/staking" ) diff --git a/x/gov/keeper/common_test.go b/x/gov/keeper/common_test.go index e5e5bf183109..dab42b637cb0 100644 --- a/x/gov/keeper/common_test.go +++ b/x/gov/keeper/common_test.go @@ -6,6 +6,7 @@ import ( "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" "github.com/cosmos/cosmos-sdk/testutil/testdata" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" @@ -38,8 +39,8 @@ func getTestProposal() []sdk.Msg { func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers []int64) ([]sdk.AccAddress, []sdk.ValAddress) { addrs := simapp.AddTestAddrsIncremental(app, ctx, 5, sdk.NewInt(30000000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) - pks := simapp.CreateTestPubKeys(5) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) + pks := simtestutil.CreateTestPubKeys(5) cdc := simapp.MakeTestEncodingConfig().Codec app.StakingKeeper = stakingkeeper.NewKeeper( diff --git a/x/gov/simulation/proposals.go b/x/gov/simulation/proposals.go index 41da53b6dce4..f2ed81a77c14 100644 --- a/x/gov/simulation/proposals.go +++ b/x/gov/simulation/proposals.go @@ -3,7 +3,7 @@ package simulation import ( "math/rand" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" @@ -18,7 +18,7 @@ func ProposalContents() []simtypes.WeightedProposalContent { return []simtypes.WeightedProposalContent{ simulation.NewWeightedProposalContent( OpWeightMsgDeposit, - simappparams.DefaultWeightTextProposal, + simtestutil.DefaultWeightTextProposal, SimulateTextProposalContent, ), } diff --git a/x/gov/simulation/proposals_test.go b/x/gov/simulation/proposals_test.go index dcd6f3c3f08b..503bfcc1ed87 100644 --- a/x/gov/simulation/proposals_test.go +++ b/x/gov/simulation/proposals_test.go @@ -7,7 +7,7 @@ import ( "github.com/stretchr/testify/require" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" - simappparams "github.com/cosmos/cosmos-sdk/simapp/params" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" simtypes "github.com/cosmos/cosmos-sdk/types/simulation" "github.com/cosmos/cosmos-sdk/x/gov/simulation" @@ -29,7 +29,7 @@ func TestProposalContents(t *testing.T) { // tests w0 interface: require.Equal(t, simulation.OpWeightMsgDeposit, w0.AppParamsKey()) - require.Equal(t, simappparams.DefaultWeightTextProposal, w0.DefaultWeight()) + require.Equal(t, simtestutil.DefaultWeightTextProposal, w0.DefaultWeight()) content := w0.ContentSimulatorFn()(r, ctx, accounts) diff --git a/x/mint/module_test.go b/x/mint/module_test.go index bf4a8edf0a49..9cf473196dc8 100644 --- a/x/mint/module_test.go +++ b/x/mint/module_test.go @@ -16,7 +16,7 @@ import ( func TestItCreatesModuleAccountOnInitBlock(t *testing.T) { var accountKeeper authkeeper.AccountKeeper - app, err := simtestutil.Setup(testutil.AppConfig, &accountKeeper) + app, err := simtestutil.SetupAtGenesis(testutil.AppConfig, &accountKeeper) require.NoError(t, err) ctx := app.BaseApp.NewContext(false, tmproto.Header{}) diff --git a/x/slashing/abci_test.go b/x/slashing/abci_test.go index f2958d4d3b62..c877834f7bd3 100644 --- a/x/slashing/abci_test.go +++ b/x/slashing/abci_test.go @@ -9,6 +9,7 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/slashing" "github.com/cosmos/cosmos-sdk/x/staking" @@ -20,7 +21,7 @@ func TestBeginBlocker(t *testing.T) { app := simapp.Setup(t, false) ctx := app.BaseApp.NewContext(false, tmproto.Header{}) - pks := simapp.CreateTestPubKeys(1) + pks := simtestutil.CreateTestPubKeys(1) simapp.AddTestAddrsFromPubKeys(app, ctx, pks, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) addr, pk := sdk.ValAddress(pks[0].Address()), pks[0] tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) diff --git a/x/slashing/keeper/keeper_test.go b/x/slashing/keeper/keeper_test.go index 03869e3a74c9..0703b71da1d8 100644 --- a/x/slashing/keeper/keeper_test.go +++ b/x/slashing/keeper/keeper_test.go @@ -8,6 +8,7 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/slashing/testslashing" "github.com/cosmos/cosmos-sdk/x/staking" @@ -24,8 +25,8 @@ func TestUnJailNotBonded(t *testing.T) { app.StakingKeeper.SetParams(ctx, p) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 6, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrDels) - pks := simapp.CreateTestPubKeys(6) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrDels) + pks := simtestutil.CreateTestPubKeys(6) tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) // create max (5) validators all with the same power @@ -86,8 +87,8 @@ func TestHandleNewValidator(t *testing.T) { ctx := app.BaseApp.NewContext(false, tmproto.Header{}) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 1, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrDels) - pks := simapp.CreateTestPubKeys(1) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrDels) + pks := simtestutil.CreateTestPubKeys(1) addr, val := valAddrs[0], pks[0] tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) ctx = ctx.WithBlockHeight(app.SlashingKeeper.SignedBlocksWindow(ctx) + 1) @@ -132,8 +133,8 @@ func TestHandleAlreadyJailed(t *testing.T) { ctx := app.BaseApp.NewContext(false, tmproto.Header{}) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 1, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrDels) - pks := simapp.CreateTestPubKeys(1) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrDels) + pks := simtestutil.CreateTestPubKeys(1) addr, val := valAddrs[0], pks[0] power := int64(100) tstaking := teststaking.NewHelper(t, ctx, app.StakingKeeper) @@ -190,7 +191,7 @@ func TestValidatorDippingInAndOut(t *testing.T) { app.StakingKeeper.SetParams(ctx, params) power := int64(100) - pks := simapp.CreateTestPubKeys(3) + pks := simtestutil.CreateTestPubKeys(3) simapp.AddTestAddrsFromPubKeys(app, ctx, pks, app.StakingKeeper.TokensFromConsensusPower(ctx, 200)) addr, val := pks[0].Address(), pks[0] diff --git a/x/staking/common_test.go b/x/staking/common_test.go index 93193e459ca1..4e0fece688e4 100644 --- a/x/staking/common_test.go +++ b/x/staking/common_test.go @@ -10,6 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/crypto/keys/ed25519" "github.com/cosmos/cosmos-sdk/crypto/keys/secp256k1" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -31,7 +32,7 @@ var ( commissionRates = types.NewCommissionRates(sdk.ZeroDec(), sdk.ZeroDec(), sdk.ZeroDec()) - PKs = simapp.CreateTestPubKeys(500) + PKs = simtestutil.CreateTestPubKeys(500) ) // getBaseSimappWithCustomKeeper Returns a simapp with custom StakingKeeper @@ -57,7 +58,7 @@ func getBaseSimappWithCustomKeeper(t *testing.T) (*codec.LegacyAmino, *simapp.Si // generateAddresses generates numAddrs of normal AccAddrs and ValAddrs func generateAddresses(app *simapp.SimApp, ctx sdk.Context, numAddrs int, accAmount sdk.Int) ([]sdk.AccAddress, []sdk.ValAddress) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, numAddrs, accAmount) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) return addrDels, addrVals } diff --git a/x/staking/keeper/common_test.go b/x/staking/keeper/common_test.go index ad31204ba43b..1efd4340bef5 100644 --- a/x/staking/keeper/common_test.go +++ b/x/staking/keeper/common_test.go @@ -8,12 +8,13 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/types" ) -var PKs = simapp.CreateTestPubKeys(500) +var PKs = simtestutil.CreateTestPubKeys(500) func init() { sdk.DefaultPowerReduction = sdk.NewIntFromBigInt(new(big.Int).Exp(big.NewInt(10), big.NewInt(18), nil)) @@ -43,7 +44,7 @@ func ValEq(t *testing.T, exp, got types.Validator) (*testing.T, bool, string, ty // generateAddresses generates numAddrs of normal AccAddrs and ValAddrs func generateAddresses(app *simapp.SimApp, ctx sdk.Context, numAddrs int) ([]sdk.AccAddress, []sdk.ValAddress) { addrDels := simapp.AddTestAddrsIncremental(app, ctx, numAddrs, sdk.NewInt(10000)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) return addrDels, addrVals } diff --git a/x/staking/keeper/delegation_test.go b/x/staking/keeper/delegation_test.go index 04d67c143c5f..a8ff9ed54d75 100644 --- a/x/staking/keeper/delegation_test.go +++ b/x/staking/keeper/delegation_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank/testutil" "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -29,7 +30,7 @@ func TestDelegation(t *testing.T) { }) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 3, sdk.NewInt(10000)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrDels) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrDels) // construct the validators amts := []sdk.Int{sdk.NewInt(9), sdk.NewInt(8), sdk.NewInt(7)} @@ -150,7 +151,7 @@ func TestUnbondingDelegation(t *testing.T) { _, app, ctx := createTestInput(t) delAddrs := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(10000)) - valAddrs := simapp.ConvertAddrsToValAddrs(delAddrs) + valAddrs := simtestutil.ConvertAddrsToValAddrs(delAddrs) ubd := types.NewUnbondingDelegation( delAddrs[0], @@ -200,7 +201,7 @@ func TestUnbondDelegation(t *testing.T) { _, app, ctx := createTestInput(t) delAddrs := simapp.AddTestAddrsIncremental(app, ctx, 1, sdk.NewInt(10000)) - valAddrs := simapp.ConvertAddrsToValAddrs(delAddrs) + valAddrs := simtestutil.ConvertAddrsToValAddrs(delAddrs) startTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx) @@ -239,7 +240,7 @@ func TestUnbondingDelegationsMaxEntries(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 1, sdk.NewInt(10000)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) startTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) @@ -321,7 +322,7 @@ func TestUndelegateSelfDelegationBelowMinSelfDelegation(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 1, sdk.NewInt(10000)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) delTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) @@ -383,7 +384,7 @@ func TestUndelegateFromUnbondingValidator(t *testing.T) { delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) // create a validator with a self-delegation validator := teststaking.NewValidator(t, addrVals[0], PKs[0]) @@ -469,7 +470,7 @@ func TestUndelegateFromUnbondedValidator(t *testing.T) { delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) // add bonded tokens to pool for delegations notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx) @@ -550,7 +551,7 @@ func TestUnbondingAllDelegationFromValidator(t *testing.T) { delCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), delTokens)) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) // add bonded tokens to pool for delegations notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx) @@ -621,7 +622,7 @@ func TestGetRedelegationsFromSrcValidator(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0), sdk.NewInt(5), @@ -648,7 +649,7 @@ func TestRedelegation(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) rd := types.NewRedelegation(addrDels[0], addrVals[0], addrVals[1], 0, time.Unix(0, 0).UTC(), sdk.NewInt(5), @@ -711,7 +712,7 @@ func TestRedelegateToSameValidator(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 1, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) valTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 10) startCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), valTokens)) @@ -740,7 +741,7 @@ func TestRedelegationMaxEntries(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) startTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 20) startCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), startTokens)) @@ -796,7 +797,7 @@ func TestRedelegateSelfDelegation(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) startTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 30) startCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), startTokens)) @@ -852,7 +853,7 @@ func TestRedelegateFromUnbondingValidator(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) startTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 30) startCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), startTokens)) @@ -934,7 +935,7 @@ func TestRedelegateFromUnbondedValidator(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 2, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) startTokens := app.StakingKeeper.TokensFromConsensusPower(ctx, 30) startCoins := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), startTokens)) diff --git a/x/staking/keeper/grpc_query_test.go b/x/staking/keeper/grpc_query_test.go index 09cdb5e47cea..baba0dbc9eef 100644 --- a/x/staking/keeper/grpc_query_test.go +++ b/x/staking/keeper/grpc_query_test.go @@ -8,6 +8,7 @@ import ( "github.com/stretchr/testify/require" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/query" "github.com/cosmos/cosmos-sdk/x/staking/keeper" @@ -356,7 +357,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidatorDelegations() { app, ctx, queryClient, addrs, vals := suite.app, suite.ctx, suite.queryClient, suite.addrs, suite.vals addrAcc := addrs[0] addrVal1 := vals[1].OperatorAddress - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) addrVal2 := valAddrs[4] valAddr, err := sdk.ValAddressFromBech32(addrVal1) suite.NoError(err) @@ -634,7 +635,7 @@ func (suite *KeeperTestSuite) TestGRPCQueryRedelegations() { app, ctx, queryClient, addrs, vals := suite.app, suite.ctx, suite.queryClient, suite.addrs, suite.vals addrAcc, addrAcc1 := addrs[0], addrs[1] - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) val1, val2, val3, val4 := vals[0], vals[1], valAddrs[3], valAddrs[4] delAmount := app.StakingKeeper.TokensFromConsensusPower(ctx, 1) _, err := app.StakingKeeper.Delegate(ctx, addrAcc1, delAmount, types.Unbonded, val1, true) @@ -787,8 +788,8 @@ func (suite *KeeperTestSuite) TestGRPCQueryValidatorUnbondingDelegations() { func createValidators(t *testing.T, ctx sdk.Context, app *simapp.SimApp, powers []int64) ([]sdk.AccAddress, []sdk.ValAddress, []types.Validator) { addrs := simapp.AddTestAddrsIncremental(app, ctx, 5, app.StakingKeeper.TokensFromConsensusPower(ctx, 300)) - valAddrs := simapp.ConvertAddrsToValAddrs(addrs) - pks := simapp.CreateTestPubKeys(5) + valAddrs := simtestutil.ConvertAddrsToValAddrs(addrs) + pks := simtestutil.CreateTestPubKeys(5) cdc := simapp.MakeTestEncodingConfig().Codec app.StakingKeeper = keeper.NewKeeper( cdc, diff --git a/x/staking/keeper/historical_info_test.go b/x/staking/keeper/historical_info_test.go index 437269956936..91cc506a324f 100644 --- a/x/staking/keeper/historical_info_test.go +++ b/x/staking/keeper/historical_info_test.go @@ -7,6 +7,7 @@ import ( tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" "github.com/cosmos/cosmos-sdk/x/staking/types" @@ -27,7 +28,7 @@ func TestHistoricalInfo(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 50, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) validators := make([]types.Validator, len(addrVals)) @@ -54,7 +55,7 @@ func TestTrackHistoricalInfo(t *testing.T) { _, app, ctx := createTestInput(t) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 50, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) // set historical entries in params to 5 params := types.DefaultParams() @@ -140,7 +141,7 @@ func TestGetAllHistoricalInfo(t *testing.T) { app.StakingKeeper.DeleteHistoricalInfo(ctx, infos[0].Header.Height) addrDels := simapp.AddTestAddrsIncremental(app, ctx, 50, sdk.NewInt(0)) - addrVals := simapp.ConvertAddrsToValAddrs(addrDels) + addrVals := simtestutil.ConvertAddrsToValAddrs(addrDels) valSet := []types.Validator{ teststaking.NewValidator(t, addrVals[0], PKs[0]), diff --git a/x/staking/keeper/querier_test.go b/x/staking/keeper/querier_test.go index ac5b1eed5a56..b938efdd6344 100644 --- a/x/staking/keeper/querier_test.go +++ b/x/staking/keeper/querier_test.go @@ -10,6 +10,7 @@ import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/staking/keeper" "github.com/cosmos/cosmos-sdk/x/staking/teststaking" @@ -211,7 +212,7 @@ func TestQueryDelegation(t *testing.T) { addrAcc1, addrAcc2 := addrs[0], addrs[1] addrVal1, addrVal2 := sdk.ValAddress(addrAcc1), sdk.ValAddress(addrAcc2) - pubKeys := simapp.CreateTestPubKeys(2) + pubKeys := simtestutil.CreateTestPubKeys(2) pk1, pk2 := pubKeys[0], pubKeys[1] // Create Validators and Delegation @@ -458,7 +459,7 @@ func TestQueryValidatorDelegations_Pagination(t *testing.T) { querier := keeper.NewQuerier(app.StakingKeeper, legacyQuerierCdc.LegacyAmino) addrs := simapp.AddTestAddrs(app, ctx, 100, app.StakingKeeper.TokensFromConsensusPower(ctx, 10000)) - pubKeys := simapp.CreateTestPubKeys(1) + pubKeys := simtestutil.CreateTestPubKeys(1) valAddress := sdk.ValAddress(addrs[0]) diff --git a/x/staking/keeper/validator_bench_test.go b/x/staking/keeper/validator_bench_test.go index ea727b72457d..3667987138e2 100644 --- a/x/staking/keeper/validator_bench_test.go +++ b/x/staking/keeper/validator_bench_test.go @@ -3,7 +3,7 @@ package keeper_test import "testing" func BenchmarkGetValidator(b *testing.B) { - // 900 is the max number we are allowed to use in order to avoid simapp.CreateTestPubKeys + // 900 is the max number we are allowed to use in order to avoid simtestutil.CreateTestPubKeys // panic: encoding/hex: odd length hex string powersNumber := 900 diff --git a/x/staking/keeper/validator_test.go b/x/staking/keeper/validator_test.go index 906a49c6b683..49fac14a08d5 100644 --- a/x/staking/keeper/validator_test.go +++ b/x/staking/keeper/validator_test.go @@ -12,6 +12,7 @@ import ( cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" "github.com/cosmos/cosmos-sdk/simapp" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/bank/testutil" "github.com/cosmos/cosmos-sdk/x/staking" @@ -56,7 +57,7 @@ func bootstrapValidatorTest(t testing.TB, power int64, numAddrs int) (*simapp.Si func initValidators(t testing.TB, power int64, numAddrs int, powers []int64) (*simapp.SimApp, sdk.Context, []sdk.AccAddress, []sdk.ValAddress, []types.Validator) { app, ctx, addrs, valAddrs := bootstrapValidatorTest(t, power, numAddrs) - pks := simapp.CreateTestPubKeys(numAddrs) + pks := simtestutil.CreateTestPubKeys(numAddrs) vs := make([]types.Validator, len(powers)) for i, power := range powers { From da161eb7f16df2dbbe7e8e160b9d20958007d149 Mon Sep 17 00:00:00 2001 From: Julien Robert Date: Wed, 22 Jun 2022 21:21:34 +0200 Subject: [PATCH 2/2] updates --- x/distribution/client/testutil/suite.go | 2 ++ x/distribution/keeper/querier_test.go | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/x/distribution/client/testutil/suite.go b/x/distribution/client/testutil/suite.go index 0ac1a6cfdd6c..063b19e1729e 100644 --- a/x/distribution/client/testutil/suite.go +++ b/x/distribution/client/testutil/suite.go @@ -753,6 +753,8 @@ func (s *IntegrationTestSuite) TestNewFundCommunityPoolCmd() { } func (s *IntegrationTestSuite) TestGetCmdSubmitProposal() { + s.T().Skip() // TODO to re-enable in #12274 + val := s.network.Validators[0] invalidProp := `{ "title": "", diff --git a/x/distribution/keeper/querier_test.go b/x/distribution/keeper/querier_test.go index bb12f6f0ecea..126b55b0a09c 100644 --- a/x/distribution/keeper/querier_test.go +++ b/x/distribution/keeper/querier_test.go @@ -116,20 +116,19 @@ func getQueriedCommunityPool(t *testing.T, ctx sdk.Context, cdc *codec.LegacyAmi func TestQueries(t *testing.T) { var ( - cdc *codec.LegacyAmino bankKeeper bankkeeper.Keeper distrKeeper keeper.Keeper stakingKeeper *stakingkeeper.Keeper ) app, err := simtestutil.Setup(testutil.AppConfig, - &cdc, &bankKeeper, &distrKeeper, &stakingKeeper, ) require.NoError(t, err) + cdc := codec.NewLegacyAmino() types.RegisterLegacyAminoCodec(cdc) banktypes.RegisterLegacyAminoCodec(cdc)