refacor TestUpdateValidatorByPowerIndex to use simapp
This commit is contained in:
parent
66abd1f19f
commit
25681ad3ad
|
@ -285,12 +285,6 @@ func TestingUpdateValidator(keeper Keeper, ctx sdk.Context, validator types.Vali
|
||||||
return validator
|
return validator
|
||||||
}
|
}
|
||||||
|
|
||||||
// nolint:deadcode, unused
|
|
||||||
func validatorByPowerIndexExists(k Keeper, ctx sdk.Context, power []byte) bool {
|
|
||||||
store := ctx.KVStore(k.storeKey)
|
|
||||||
return store.Has(power)
|
|
||||||
}
|
|
||||||
|
|
||||||
// RandomValidator returns a random validator given access to the keeper and ctx
|
// RandomValidator returns a random validator given access to the keeper and ctx
|
||||||
func RandomValidator(r *rand.Rand, keeper Keeper, ctx sdk.Context) (val types.Validator, ok bool) {
|
func RandomValidator(r *rand.Rand, keeper Keeper, ctx sdk.Context) (val types.Validator, ok bool) {
|
||||||
vals := keeper.GetAllValidators(ctx)
|
vals := keeper.GetAllValidators(ctx)
|
||||||
|
|
|
@ -14,43 +14,6 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUpdateValidatorByPowerIndex(t *testing.T) {
|
|
||||||
ctx, _, bk, keeper, _ := CreateTestInput(t, false, 0)
|
|
||||||
|
|
||||||
bondedPool := keeper.GetBondedPool(ctx)
|
|
||||||
notBondedPool := keeper.GetNotBondedPool(ctx)
|
|
||||||
bk.SetBalances(ctx, bondedPool.GetAddress(), sdk.NewCoins(sdk.NewCoin(keeper.BondDenom(ctx), sdk.TokensFromConsensusPower(1234))))
|
|
||||||
bk.SetBalances(ctx, notBondedPool.GetAddress(), sdk.NewCoins(sdk.NewCoin(keeper.BondDenom(ctx), sdk.TokensFromConsensusPower(10000))))
|
|
||||||
keeper.supplyKeeper.SetModuleAccount(ctx, bondedPool)
|
|
||||||
keeper.supplyKeeper.SetModuleAccount(ctx, notBondedPool)
|
|
||||||
|
|
||||||
// add a validator
|
|
||||||
validator := types.NewValidator(addrVals[0], PKs[0], types.Description{})
|
|
||||||
validator, delSharesCreated := validator.AddTokensFromDel(sdk.TokensFromConsensusPower(100))
|
|
||||||
require.Equal(t, sdk.Unbonded, validator.Status)
|
|
||||||
require.Equal(t, sdk.TokensFromConsensusPower(100), validator.Tokens)
|
|
||||||
TestingUpdateValidator(keeper, ctx, validator, true)
|
|
||||||
validator, found := keeper.GetValidator(ctx, addrVals[0])
|
|
||||||
require.True(t, found)
|
|
||||||
require.Equal(t, sdk.TokensFromConsensusPower(100), validator.Tokens)
|
|
||||||
|
|
||||||
power := types.GetValidatorsByPowerIndexKey(validator)
|
|
||||||
require.True(t, validatorByPowerIndexExists(keeper, ctx, power))
|
|
||||||
|
|
||||||
// burn half the delegator shares
|
|
||||||
keeper.DeleteValidatorByPowerIndex(ctx, validator)
|
|
||||||
validator, burned := validator.RemoveDelShares(delSharesCreated.Quo(sdk.NewDec(2)))
|
|
||||||
require.Equal(t, sdk.TokensFromConsensusPower(50), burned)
|
|
||||||
TestingUpdateValidator(keeper, ctx, validator, true) // update the validator, possibly kicking it out
|
|
||||||
require.False(t, validatorByPowerIndexExists(keeper, ctx, power))
|
|
||||||
|
|
||||||
validator, found = keeper.GetValidator(ctx, addrVals[0])
|
|
||||||
require.True(t, found)
|
|
||||||
|
|
||||||
power = types.GetValidatorsByPowerIndexKey(validator)
|
|
||||||
require.True(t, validatorByPowerIndexExists(keeper, ctx, power))
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) {
|
func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) {
|
||||||
numVals := 10
|
numVals := 10
|
||||||
maxVals := 5
|
maxVals := 5
|
||||||
|
|
|
@ -80,4 +80,3 @@ func generateAddresses(app *simapp.SimApp, ctx sdk.Context, numAddrs int) ([]sdk
|
||||||
|
|
||||||
return addrDels, addrVals
|
return addrDels, addrVals
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@ package keeper_test
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/simapp"
|
"github.com/cosmos/cosmos-sdk/simapp"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -80,3 +82,41 @@ func TestSetValidator(t *testing.T) {
|
||||||
allVals := app.StakingKeeper.GetAllValidators(ctx)
|
allVals := app.StakingKeeper.GetAllValidators(ctx)
|
||||||
require.Equal(t, 1, len(allVals))
|
require.Equal(t, 1, len(allVals))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUpdateValidatorByPowerIndex(t *testing.T) {
|
||||||
|
app, ctx, _, _ := bootstrapValidatorTest(t, 0)
|
||||||
|
_, addrVals := generateAddresses(app, ctx, 1)
|
||||||
|
|
||||||
|
bondedPool := app.StakingKeeper.GetBondedPool(ctx)
|
||||||
|
notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx)
|
||||||
|
app.BankKeeper.SetBalances(ctx, bondedPool.GetAddress(), sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), sdk.TokensFromConsensusPower(1234))))
|
||||||
|
app.BankKeeper.SetBalances(ctx, notBondedPool.GetAddress(), sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), sdk.TokensFromConsensusPower(10000))))
|
||||||
|
app.SupplyKeeper.SetModuleAccount(ctx, bondedPool)
|
||||||
|
app.SupplyKeeper.SetModuleAccount(ctx, notBondedPool)
|
||||||
|
|
||||||
|
// add a validator
|
||||||
|
validator := types.NewValidator(addrVals[0], PKs[0], types.Description{})
|
||||||
|
validator, delSharesCreated := validator.AddTokensFromDel(sdk.TokensFromConsensusPower(100))
|
||||||
|
require.Equal(t, sdk.Unbonded, validator.Status)
|
||||||
|
require.Equal(t, sdk.TokensFromConsensusPower(100), validator.Tokens)
|
||||||
|
keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true)
|
||||||
|
validator, found := app.StakingKeeper.GetValidator(ctx, addrVals[0])
|
||||||
|
require.True(t, found)
|
||||||
|
require.Equal(t, sdk.TokensFromConsensusPower(100), validator.Tokens)
|
||||||
|
|
||||||
|
power := types.GetValidatorsByPowerIndexKey(validator)
|
||||||
|
require.True(t, keeper.ValidatorByPowerIndexExists(ctx, app.StakingKeeper, power))
|
||||||
|
|
||||||
|
// burn half the delegator shares
|
||||||
|
app.StakingKeeper.DeleteValidatorByPowerIndex(ctx, validator)
|
||||||
|
validator, burned := validator.RemoveDelShares(delSharesCreated.Quo(sdk.NewDec(2)))
|
||||||
|
require.Equal(t, sdk.TokensFromConsensusPower(50), burned)
|
||||||
|
keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true) // update the validator, possibly kicking it out
|
||||||
|
require.False(t, keeper.ValidatorByPowerIndexExists(ctx, app.StakingKeeper, power))
|
||||||
|
|
||||||
|
validator, found = app.StakingKeeper.GetValidator(ctx, addrVals[0])
|
||||||
|
require.True(t, found)
|
||||||
|
|
||||||
|
power = types.GetValidatorsByPowerIndexKey(validator)
|
||||||
|
require.True(t, keeper.ValidatorByPowerIndexExists(ctx, app.StakingKeeper, power))
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue