refator TestMultipleMsgCreateValidator

This commit is contained in:
Jonathan Gimeno 2020-02-26 15:17:31 +01:00
parent 46d62ebfa9
commit d251f6436e
1 changed files with 83 additions and 81 deletions

View File

@ -2,6 +2,7 @@ package staking_test
import (
"testing"
"time"
abci "github.com/tendermint/tendermint/abci/types"
"github.com/tendermint/tendermint/crypto/secp256k1"
@ -566,87 +567,88 @@ func TestIncrementsMsgUnbond(t *testing.T) {
require.NotNil(t, res, "msgUnbond: %v\nshares: %s\nleftBonded: %s\n", msgUndelegate, unbondAmt, leftBonded)
}
//func TestMultipleMsgCreateValidator(t *testing.T) {
// initPower := int64(1000)
// initTokens := sdk.TokensFromConsensusPower(initPower)
// ctx, _, bk, keeper, _ := CreateTestInput(t, false, initPower)
// handler := NewHandler(keeper)
//
// params := keeper.GetParams(ctx)
// blockTime := time.Now().UTC()
// ctx = ctx.WithBlockTime(blockTime)
//
// validatorAddrs := []sdk.ValAddress{
// sdk.ValAddress(Addrs[0]),
// sdk.ValAddress(Addrs[1]),
// sdk.ValAddress(Addrs[2]),
// }
// delegatorAddrs := []sdk.AccAddress{
// Addrs[0],
// Addrs[1],
// Addrs[2],
// }
//
// // bond them all
// for i, validatorAddr := range validatorAddrs {
// valTokens := sdk.TokensFromConsensusPower(10)
// msgCreateValidatorOnBehalfOf := NewTestMsgCreateValidator(validatorAddr, PKs[i], valTokens)
//
// res, err := handler(ctx, msgCreateValidatorOnBehalfOf)
// require.NoError(t, err)
// require.NotNil(t, res)
//
// // verify that the account is bonded
// validators := keeper.GetValidators(ctx, 100)
// require.Equal(t, (i + 1), len(validators))
//
// val := validators[i]
// balanceExpd := initTokens.Sub(valTokens)
// balanceGot := bk.GetBalance(ctx, delegatorAddrs[i], params.BondDenom).Amount
//
// require.Equal(t, i+1, len(validators), "expected %d validators got %d, validators: %v", i+1, len(validators), validators)
// require.Equal(t, valTokens, val.DelegatorShares.RoundInt(), "expected %d shares, got %d", 10, val.DelegatorShares)
// require.Equal(t, balanceExpd, balanceGot, "expected account to have %d, got %d", balanceExpd, balanceGot)
// }
//
// EndBlocker(ctx, keeper)
//
// // unbond them all by removing delegation
// for i, validatorAddr := range validatorAddrs {
// _, found := keeper.GetValidator(ctx, validatorAddr)
// require.True(t, found)
//
// unbondAmt := sdk.NewCoin(sdk.DefaultBondDenom, sdk.TokensFromConsensusPower(10))
// msgUndelegate := NewMsgUndelegate(delegatorAddrs[i], validatorAddr, unbondAmt) // remove delegation
// res, err := handler(ctx, msgUndelegate)
// require.NoError(t, err)
// require.NotNil(t, res)
//
// ts := &gogotypes.Timestamp{}
// types.ModuleCdc.MustUnmarshalBinaryLengthPrefixed(res.Data, ts)
//
// _, err = gogotypes.TimestampFromProto(ts)
// require.NoError(t, err)
//
// // adds validator into unbonding queue
// EndBlocker(ctx, keeper)
//
// // removes validator from queue and set
// EndBlocker(ctx.WithBlockTime(blockTime.Add(params.UnbondingTime)), keeper)
//
// // Check that the validator is deleted from state
// validators := keeper.GetValidators(ctx, 100)
// require.Equal(t, len(validatorAddrs)-(i+1), len(validators),
// "expected %d validators got %d", len(validatorAddrs)-(i+1), len(validators))
//
// _, found = keeper.GetValidator(ctx, validatorAddr)
// require.False(t, found)
//
// gotBalance := bk.GetBalance(ctx, delegatorAddrs[i], params.BondDenom).Amount
// require.Equal(t, initTokens, gotBalance, "expected account to have %d, got %d", initTokens, gotBalance)
// }
//}
//
func TestMultipleMsgCreateValidator(t *testing.T) {
initPower := int64(1000)
initTokens := sdk.TokensFromConsensusPower(initPower)
app, ctx, delAddrs, valAddrs := bootstrapHandlerGenesisTest(t, initPower, 3, 1000000000)
handler := staking.NewHandler(app.StakingKeeper)
params := app.StakingKeeper.GetParams(ctx)
blockTime := time.Now().UTC()
ctx = ctx.WithBlockTime(blockTime)
validatorAddrs := []sdk.ValAddress{
valAddrs[0],
valAddrs[1],
valAddrs[2],
}
delegatorAddrs := []sdk.AccAddress{
delAddrs[0],
delAddrs[1],
delAddrs[2],
}
// bond them all
for i, validatorAddr := range validatorAddrs {
valTokens := sdk.TokensFromConsensusPower(10)
msgCreateValidatorOnBehalfOf := NewTestMsgCreateValidator(validatorAddr, PKs[i], valTokens)
res, err := handler(ctx, msgCreateValidatorOnBehalfOf)
require.NoError(t, err)
require.NotNil(t, res)
// verify that the account is bonded
validators := app.StakingKeeper.GetValidators(ctx, 100)
require.Equal(t, (i + 1), len(validators))
val := validators[i]
balanceExpd := initTokens.Sub(valTokens)
balanceGot := app.BankKeeper.GetBalance(ctx, delegatorAddrs[i], params.BondDenom).Amount
require.Equal(t, i+1, len(validators), "expected %d validators got %d, validators: %v", i+1, len(validators), validators)
require.Equal(t, valTokens, val.DelegatorShares.RoundInt(), "expected %d shares, got %d", 10, val.DelegatorShares)
require.Equal(t, balanceExpd, balanceGot, "expected account to have %d, got %d", balanceExpd, balanceGot)
}
staking.EndBlocker(ctx, app.StakingKeeper)
// unbond them all by removing delegation
for i, validatorAddr := range validatorAddrs {
_, found := app.StakingKeeper.GetValidator(ctx, validatorAddr)
require.True(t, found)
unbondAmt := sdk.NewCoin(sdk.DefaultBondDenom, sdk.TokensFromConsensusPower(10))
msgUndelegate := types.NewMsgUndelegate(delegatorAddrs[i], validatorAddr, unbondAmt) // remove delegation
res, err := handler(ctx, msgUndelegate)
require.NoError(t, err)
require.NotNil(t, res)
ts := &gogotypes.Timestamp{}
types.ModuleCdc.MustUnmarshalBinaryLengthPrefixed(res.Data, ts)
_, err = gogotypes.TimestampFromProto(ts)
require.NoError(t, err)
// adds validator into unbonding queue
staking.EndBlocker(ctx, app.StakingKeeper)
// removes validator from queue and set
staking.EndBlocker(ctx.WithBlockTime(blockTime.Add(params.UnbondingTime)), app.StakingKeeper)
// Check that the validator is deleted from state
validators := app.StakingKeeper.GetValidators(ctx, 100)
require.Equal(t, len(validatorAddrs)-(i+1), len(validators),
"expected %d validators got %d", len(validatorAddrs)-(i+1), len(validators))
_, found = app.StakingKeeper.GetValidator(ctx, validatorAddr)
require.False(t, found)
gotBalance := app.BankKeeper.GetBalance(ctx, delegatorAddrs[i], params.BondDenom).Amount
require.Equal(t, initTokens, gotBalance, "expected account to have %d, got %d", initTokens, gotBalance)
}
}
//func TestMultipleMsgDelegate(t *testing.T) {
// ctx, _, _, keeper, _ := CreateTestInput(t, false, 1000)
// handler := NewHandler(keeper)