refactor TestSlashToZeroPowerRemoved
This commit is contained in:
parent
385c5c556b
commit
ed401119e4
|
@ -14,36 +14,6 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSlashToZeroPowerRemoved(t *testing.T) {
|
|
||||||
// initialize setup
|
|
||||||
ctx, _, bk, keeper, _ := CreateTestInput(t, false, 100)
|
|
||||||
|
|
||||||
// add a validator
|
|
||||||
validator := types.NewValidator(addrVals[0], PKs[0], types.Description{})
|
|
||||||
valTokens := sdk.TokensFromConsensusPower(100)
|
|
||||||
|
|
||||||
bondedPool := keeper.GetBondedPool(ctx)
|
|
||||||
err := bk.SetBalances(ctx, bondedPool.GetAddress(), sdk.NewCoins(sdk.NewCoin(keeper.BondDenom(ctx), valTokens)))
|
|
||||||
require.NoError(t, err)
|
|
||||||
keeper.supplyKeeper.SetModuleAccount(ctx, bondedPool)
|
|
||||||
|
|
||||||
validator, _ = validator.AddTokensFromDel(valTokens)
|
|
||||||
require.Equal(t, sdk.Unbonded, validator.Status)
|
|
||||||
require.Equal(t, valTokens, validator.Tokens)
|
|
||||||
keeper.SetValidatorByConsAddr(ctx, validator)
|
|
||||||
validator = TestingUpdateValidator(keeper, ctx, validator, true)
|
|
||||||
require.Equal(t, valTokens, validator.Tokens, "\nvalidator %v\npool %v", validator, valTokens)
|
|
||||||
|
|
||||||
// slash the validator by 100%
|
|
||||||
consAddr0 := sdk.ConsAddress(PKs[0].Address())
|
|
||||||
keeper.Slash(ctx, consAddr0, 0, 100, sdk.OneDec())
|
|
||||||
// apply TM updates
|
|
||||||
keeper.ApplyAndReturnValidatorSetUpdates(ctx)
|
|
||||||
// validator should be unbonding
|
|
||||||
validator, _ = keeper.GetValidator(ctx, addrVals[0])
|
|
||||||
require.Equal(t, validator.GetStatus(), sdk.Unbonding)
|
|
||||||
}
|
|
||||||
|
|
||||||
// This function tests UpdateValidator, GetValidator, GetLastValidators, RemoveValidator
|
// This function tests UpdateValidator, GetValidator, GetLastValidators, RemoveValidator
|
||||||
func TestValidatorBasics(t *testing.T) {
|
func TestValidatorBasics(t *testing.T) {
|
||||||
ctx, _, _, keeper, _ := CreateTestInput(t, false, 1000)
|
ctx, _, _, keeper, _ := CreateTestInput(t, false, 1000)
|
||||||
|
|
|
@ -4,6 +4,8 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/cosmos/cosmos-sdk/x/supply"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
"github.com/cosmos/cosmos-sdk/x/staking/keeper"
|
||||||
|
|
||||||
"github.com/cosmos/cosmos-sdk/simapp"
|
"github.com/cosmos/cosmos-sdk/simapp"
|
||||||
|
@ -15,10 +17,10 @@ import (
|
||||||
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
"github.com/cosmos/cosmos-sdk/x/staking/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
func bootstrapValidatorTest(t *testing.T, power int64) (*simapp.SimApp, sdk.Context, []sdk.AccAddress, []sdk.ValAddress) {
|
func bootstrapValidatorTest(t *testing.T, power int64, numAddrs int) (*simapp.SimApp, sdk.Context, []sdk.AccAddress, []sdk.ValAddress) {
|
||||||
_, app, ctx := getBaseSimappWithCustomKeeper()
|
_, app, ctx := getBaseSimappWithCustomKeeper()
|
||||||
|
|
||||||
addrDels, addrVals := generateAddresses(app, ctx, 100)
|
addrDels, addrVals := generateAddresses(app, ctx, numAddrs)
|
||||||
|
|
||||||
amt := sdk.TokensFromConsensusPower(power)
|
amt := sdk.TokensFromConsensusPower(power)
|
||||||
totalSupply := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), amt.MulRaw(int64(len(addrDels)))))
|
totalSupply := sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), amt.MulRaw(int64(len(addrDels)))))
|
||||||
|
@ -28,11 +30,13 @@ func bootstrapValidatorTest(t *testing.T, power int64) (*simapp.SimApp, sdk.Cont
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
app.SupplyKeeper.SetModuleAccount(ctx, notBondedPool)
|
app.SupplyKeeper.SetModuleAccount(ctx, notBondedPool)
|
||||||
|
|
||||||
|
app.SupplyKeeper.SetSupply(ctx, supply.NewSupply(totalSupply))
|
||||||
|
|
||||||
return app, ctx, addrDels, addrVals
|
return app, ctx, addrDels, addrVals
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetValidator(t *testing.T) {
|
func TestSetValidator(t *testing.T) {
|
||||||
app, ctx, _, _ := bootstrapValidatorTest(t, 10)
|
app, ctx, _, _ := bootstrapValidatorTest(t, 10, 100)
|
||||||
|
|
||||||
valPubKey := PKs[0]
|
valPubKey := PKs[0]
|
||||||
valAddr := sdk.ValAddress(valPubKey.Address().Bytes())
|
valAddr := sdk.ValAddress(valPubKey.Address().Bytes())
|
||||||
|
@ -85,7 +89,7 @@ func TestSetValidator(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateValidatorByPowerIndex(t *testing.T) {
|
func TestUpdateValidatorByPowerIndex(t *testing.T) {
|
||||||
app, ctx, _, _ := bootstrapValidatorTest(t, 0)
|
app, ctx, _, _ := bootstrapValidatorTest(t, 0, 100)
|
||||||
_, addrVals := generateAddresses(app, ctx, 1)
|
_, addrVals := generateAddresses(app, ctx, 1)
|
||||||
|
|
||||||
bondedPool := app.StakingKeeper.GetBondedPool(ctx)
|
bondedPool := app.StakingKeeper.GetBondedPool(ctx)
|
||||||
|
@ -127,8 +131,7 @@ func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) {
|
||||||
maxVals := 5
|
maxVals := 5
|
||||||
|
|
||||||
// create context, keeper, and pool for tests
|
// create context, keeper, and pool for tests
|
||||||
app, ctx, _, _ := bootstrapValidatorTest(t, 0)
|
app, ctx, _, valAddrs := bootstrapValidatorTest(t, 0, 100)
|
||||||
_, valAddrs := generateAddresses(app, ctx, 10)
|
|
||||||
|
|
||||||
bondedPool := app.StakingKeeper.GetBondedPool(ctx)
|
bondedPool := app.StakingKeeper.GetBondedPool(ctx)
|
||||||
notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx)
|
notBondedPool := app.StakingKeeper.GetNotBondedPool(ctx)
|
||||||
|
@ -180,3 +183,32 @@ func TestUpdateBondedValidatorsDecreaseCliff(t *testing.T) {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSlashToZeroPowerRemoved(t *testing.T) {
|
||||||
|
// initialize setup
|
||||||
|
app, ctx, _, addrVals := bootstrapValidatorTest(t, 100, 20)
|
||||||
|
|
||||||
|
// add a validator
|
||||||
|
validator := types.NewValidator(addrVals[0], PKs[0], types.Description{})
|
||||||
|
valTokens := sdk.TokensFromConsensusPower(100)
|
||||||
|
|
||||||
|
bondedPool := app.StakingKeeper.GetBondedPool(ctx)
|
||||||
|
err := app.BankKeeper.SetBalances(ctx, bondedPool.GetAddress(), sdk.NewCoins(sdk.NewCoin(app.StakingKeeper.BondDenom(ctx), valTokens)))
|
||||||
|
require.NoError(t, err)
|
||||||
|
app.SupplyKeeper.SetModuleAccount(ctx, bondedPool)
|
||||||
|
|
||||||
|
validator, _ = validator.AddTokensFromDel(valTokens)
|
||||||
|
require.Equal(t, sdk.Unbonded, validator.Status)
|
||||||
|
require.Equal(t, valTokens, validator.Tokens)
|
||||||
|
app.StakingKeeper.SetValidatorByConsAddr(ctx, validator)
|
||||||
|
validator = keeper.TestingUpdateValidator(app.StakingKeeper, ctx, validator, true)
|
||||||
|
require.Equal(t, valTokens, validator.Tokens, "\nvalidator %v\npool %v", validator, valTokens)
|
||||||
|
|
||||||
|
// slash the validator by 100%
|
||||||
|
app.StakingKeeper.Slash(ctx, sdk.ConsAddress(PKs[0].Address()), 0, 100, sdk.OneDec())
|
||||||
|
// apply TM updates
|
||||||
|
app.StakingKeeper.ApplyAndReturnValidatorSetUpdates(ctx)
|
||||||
|
// validator should be unbonding
|
||||||
|
validator, _ = app.StakingKeeper.GetValidator(ctx, addrVals[0])
|
||||||
|
require.Equal(t, validator.GetStatus(), sdk.Unbonding)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue