refactor(tests/integration/distribution): using setupValidatorWithCommission helper function (#20275)

This commit is contained in:
Kien Trinh 2024-05-06 20:11:52 +07:00 committed by GitHub
parent e9015840a6
commit fd5c2f772e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 47 additions and 74 deletions

View File

@ -1,7 +1,17 @@
package keeper_test
import (
"testing"
"gotest.tools/v3/assert"
"cosmossdk.io/math"
"cosmossdk.io/x/distribution/types"
stakingtestutil "cosmossdk.io/x/staking/testutil"
stakingtypes "cosmossdk.io/x/staking/types"
simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims"
sdk "github.com/cosmos/cosmos-sdk/types"
)
var (
@ -9,3 +19,18 @@ var (
valConsPk0 = PKS[0]
)
func setupValidatorWithCommission(t *testing.T, f *fixture, valAddr sdk.ValAddress, initialStake int64) {
t.Helper()
initTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.MintCoins(f.sdkCtx, types.ModuleName, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initTokens))))
assert.NilError(t, f.stakingKeeper.Params.Set(f.sdkCtx, stakingtypes.DefaultParams()))
funds := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.SendCoinsFromModuleToAccount(f.sdkCtx, types.ModuleName, sdk.AccAddress(valAddr), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, funds))))
f.accountKeeper.SetAccount(f.sdkCtx, f.accountKeeper.NewAccountWithAddress(f.sdkCtx, sdk.AccAddress(valAddr)))
tstaking := stakingtestutil.NewHelper(t, f.sdkCtx, f.stakingKeeper)
tstaking.Commission = stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
tstaking.CreateValidator(valAddr, valConsPk0, math.NewInt(initialStake), true)
}

View File

@ -9,7 +9,6 @@ import (
"cosmossdk.io/collections"
"cosmossdk.io/math"
"cosmossdk.io/x/distribution/types"
stakingtestutil "cosmossdk.io/x/staking/testutil"
stakingtypes "cosmossdk.io/x/staking/types"
sdk "github.com/cosmos/cosmos-sdk/types"
@ -22,9 +21,6 @@ func TestGRPCParams(t *testing.T) {
assert.NilError(t, f.distrKeeper.Params.Set(f.sdkCtx, types.DefaultParams()))
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
var (
params types.Params
expParams types.Params
@ -64,7 +60,7 @@ func TestGRPCParams(t *testing.T) {
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
tc.malleate()
paramsRes, err := queryClient.Params(f.sdkCtx, tc.msg)
paramsRes, err := f.queryClient.Params(f.sdkCtx, tc.msg)
assert.NilError(t, err)
assert.Assert(t, paramsRes != nil)
assert.DeepEqual(t, paramsRes.Params, expParams)
@ -77,30 +73,14 @@ func TestGRPCValidatorOutstandingRewards(t *testing.T) {
t.Parallel()
f := initFixture(t)
// set module account coins
initTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.MintCoins(f.sdkCtx, types.ModuleName, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initTokens))))
// Set default staking params
assert.NilError(t, f.stakingKeeper.Params.Set(f.sdkCtx, stakingtypes.DefaultParams()))
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
assert.NilError(t, f.distrKeeper.Params.Set(f.sdkCtx, types.DefaultParams()))
setupValidatorWithCommission(t, f, f.valAddr, 10) // Setup a validator with commission
valCommission := sdk.DecCoins{
sdk.NewDecCoinFromDec("mytoken", math.LegacyNewDec(5000)),
sdk.NewDecCoinFromDec("stake", math.LegacyNewDec(300)),
}
// send funds to val addr
funds := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.SendCoinsFromModuleToAccount(f.sdkCtx, types.ModuleName, sdk.AccAddress(f.valAddr), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, funds))))
f.accountKeeper.SetAccount(f.sdkCtx, f.accountKeeper.NewAccountWithAddress(f.sdkCtx, sdk.AccAddress(f.valAddr)))
initialStake := int64(10)
tstaking := stakingtestutil.NewHelper(t, f.sdkCtx, f.stakingKeeper)
tstaking.Commission = stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
tstaking.CreateValidator(f.valAddr, valConsPk0, math.NewInt(initialStake), true)
// set outstanding rewards
err := f.distrKeeper.ValidatorOutstandingRewards.Set(f.sdkCtx, f.valAddr, types.ValidatorOutstandingRewards{Rewards: valCommission})
assert.NilError(t, err)
@ -136,7 +116,7 @@ func TestGRPCValidatorOutstandingRewards(t *testing.T) {
for _, testCase := range testCases {
tc := testCase
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
validatorOutstandingRewards, err := queryClient.ValidatorOutstandingRewards(f.sdkCtx, tc.msg)
validatorOutstandingRewards, err := f.queryClient.ValidatorOutstandingRewards(f.sdkCtx, tc.msg)
if tc.expPass {
assert.NilError(t, err)
@ -154,24 +134,8 @@ func TestGRPCValidatorCommission(t *testing.T) {
t.Parallel()
f := initFixture(t)
// set module account coins
initTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.MintCoins(f.sdkCtx, types.ModuleName, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initTokens))))
// Set default staking params
assert.NilError(t, f.stakingKeeper.Params.Set(f.sdkCtx, stakingtypes.DefaultParams()))
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
// send funds to val addr
funds := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.SendCoinsFromModuleToAccount(f.sdkCtx, types.ModuleName, sdk.AccAddress(f.valAddr), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, funds))))
f.accountKeeper.SetAccount(f.sdkCtx, f.accountKeeper.NewAccountWithAddress(f.sdkCtx, sdk.AccAddress(f.valAddr)))
initialStake := int64(10)
tstaking := stakingtestutil.NewHelper(t, f.sdkCtx, f.stakingKeeper)
tstaking.Commission = stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
tstaking.CreateValidator(f.valAddr, valConsPk0, math.NewInt(initialStake), true)
assert.NilError(t, f.distrKeeper.Params.Set(f.sdkCtx, types.DefaultParams())) // Set default distribution parameters
setupValidatorWithCommission(t, f, f.valAddr, 10) // Setup a validator with commission
commission := sdk.DecCoins{sdk.DecCoin{Denom: "token1", Amount: math.LegacyNewDec(4)}, {Denom: "token2", Amount: math.LegacyNewDec(2)}}
assert.NilError(t, f.distrKeeper.ValidatorsAccumulatedCommission.Set(f.sdkCtx, f.valAddr, types.ValidatorAccumulatedCommission{Commission: commission}))
@ -204,7 +168,7 @@ func TestGRPCValidatorCommission(t *testing.T) {
for _, testCase := range testCases {
tc := testCase
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
commissionRes, err := queryClient.ValidatorCommission(f.sdkCtx, tc.msg)
commissionRes, err := f.queryClient.ValidatorCommission(f.sdkCtx, tc.msg)
if tc.expPass {
assert.NilError(t, err)
@ -222,9 +186,6 @@ func TestGRPCValidatorSlashes(t *testing.T) {
t.Parallel()
f := initFixture(t)
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
addr2 := sdk.AccAddress(PKS[1].Address())
valAddr2 := sdk.ValAddress(addr2)
@ -359,7 +320,7 @@ func TestGRPCValidatorSlashes(t *testing.T) {
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
tc.malleate()
slashesRes, err := queryClient.ValidatorSlashes(f.sdkCtx, req)
slashesRes, err := f.queryClient.ValidatorSlashes(f.sdkCtx, req)
if tc.expPass {
assert.NilError(t, err)
@ -378,9 +339,6 @@ func TestGRPCDelegatorWithdrawAddress(t *testing.T) {
assert.NilError(t, f.distrKeeper.Params.Set(f.sdkCtx, types.DefaultParams()))
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
addr2 := sdk.AccAddress(PKS[1].Address())
err := f.distrKeeper.SetWithdrawAddr(f.sdkCtx, f.addr, addr2)
@ -408,7 +366,7 @@ func TestGRPCDelegatorWithdrawAddress(t *testing.T) {
for _, testCase := range testCases {
tc := testCase
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
withdrawAddress, err := queryClient.DelegatorWithdrawAddress(f.sdkCtx, tc.msg)
withdrawAddress, err := f.queryClient.DelegatorWithdrawAddress(f.sdkCtx, tc.msg)
if tc.expPass {
assert.NilError(t, err)
@ -425,9 +383,6 @@ func TestGRPCCommunityPool(t *testing.T) {
t.Parallel()
f := initFixture(t)
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
var (
req *types.QueryCommunityPoolRequest //nolint:staticcheck // we're using a deprecated call
expPool *types.QueryCommunityPoolResponse //nolint:staticcheck // we're using a deprecated call
@ -465,7 +420,7 @@ func TestGRPCCommunityPool(t *testing.T) {
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
testCase.malleate()
pool, err := queryClient.CommunityPool(f.sdkCtx, req) //nolint:staticcheck // we're using a deprecated call
pool, err := f.queryClient.CommunityPool(f.sdkCtx, req) //nolint:staticcheck // we're using a deprecated call
assert.NilError(t, err)
assert.DeepEqual(t, expPool, pool)
@ -481,32 +436,19 @@ func TestGRPCDelegationRewards(t *testing.T) {
CommunityPool: sdk.NewDecCoins(sdk.DecCoin{Denom: sdk.DefaultBondDenom, Amount: math.LegacyNewDec(1000)}),
}))
// set module account coins
initTokens := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.MintCoins(f.sdkCtx, types.ModuleName, sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, initTokens))))
initialStake := int64(10)
assert.NilError(t, f.distrKeeper.Params.Set(f.sdkCtx, types.DefaultParams()))
setupValidatorWithCommission(t, f, f.valAddr, initialStake) // Setup a validator with commission
val, found := f.stakingKeeper.GetValidator(f.sdkCtx, f.valAddr)
assert.Assert(t, found)
// Set default staking params
assert.NilError(t, f.stakingKeeper.Params.Set(f.sdkCtx, stakingtypes.DefaultParams()))
qr := f.app.QueryHelper()
queryClient := types.NewQueryClient(qr)
addr2 := sdk.AccAddress(PKS[1].Address())
valAddr2 := sdk.ValAddress(addr2)
delAddr := sdk.AccAddress(PKS[2].Address())
// send funds to val addr
funds := f.stakingKeeper.TokensFromConsensusPower(f.sdkCtx, int64(1000))
assert.NilError(t, f.bankKeeper.SendCoinsFromModuleToAccount(f.sdkCtx, types.ModuleName, sdk.AccAddress(f.valAddr), sdk.NewCoins(sdk.NewCoin(sdk.DefaultBondDenom, funds))))
f.accountKeeper.SetAccount(f.sdkCtx, f.accountKeeper.NewAccountWithAddress(f.sdkCtx, sdk.AccAddress(f.valAddr)))
initialStake := int64(10)
tstaking := stakingtestutil.NewHelper(t, f.sdkCtx, f.stakingKeeper)
tstaking.Commission = stakingtypes.NewCommissionRates(math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDecWithPrec(5, 1), math.LegacyNewDec(0))
tstaking.CreateValidator(f.valAddr, valConsPk0, math.NewInt(initialStake), true)
val, found := f.stakingKeeper.GetValidator(f.sdkCtx, f.valAddr)
assert.Assert(t, found)
// setup delegation
delTokens := sdk.TokensFromConsensusPower(2, sdk.DefaultPowerReduction)
validator, issuedShares := val.AddTokensFromDel(delTokens)
@ -582,7 +524,7 @@ func TestGRPCDelegationRewards(t *testing.T) {
for _, testCase := range testCases {
tc := testCase
t.Run(fmt.Sprintf("Case %s", tc.name), func(t *testing.T) {
rewards, err := queryClient.DelegationRewards(f.sdkCtx, tc.msg)
rewards, err := f.queryClient.DelegationRewards(f.sdkCtx, tc.msg)
if tc.expPass {
assert.NilError(t, err)

View File

@ -56,6 +56,8 @@ type fixture struct {
cdc codec.Codec
keys map[string]*storetypes.KVStoreKey
queryClient distrtypes.QueryClient
accountKeeper authkeeper.AccountKeeper
bankKeeper bankkeeper.Keeper
distrKeeper distrkeeper.Keeper
@ -174,6 +176,9 @@ func initFixture(t *testing.T) *fixture {
distrtypes.RegisterMsgServer(integrationApp.MsgServiceRouter(), distrkeeper.NewMsgServerImpl(distrKeeper))
distrtypes.RegisterQueryServer(integrationApp.QueryHelper(), distrkeeper.NewQuerier(distrKeeper))
qr := integrationApp.QueryHelper()
distrQueryClient := distrtypes.NewQueryClient(qr)
return &fixture{
app: integrationApp,
sdkCtx: sdkCtx,
@ -186,6 +191,7 @@ func initFixture(t *testing.T) *fixture {
poolKeeper: poolKeeper,
addr: addr,
valAddr: valAddr,
queryClient: distrQueryClient,
}
}