From 88364c838eaf14f171df403dcd2c6c37e4431ef1 Mon Sep 17 00:00:00 2001 From: Christopher Goes Date: Wed, 11 Jul 2018 19:51:04 +0200 Subject: [PATCH] TestMsgBeginUnbonding --- x/stake/simulation/simulation_test.go | 28 +++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/x/stake/simulation/simulation_test.go b/x/stake/simulation/simulation_test.go index fd951b2b7..626108236 100644 --- a/x/stake/simulation/simulation_test.go +++ b/x/stake/simulation/simulation_test.go @@ -191,8 +191,32 @@ func SimulateMsgDelegate(m auth.AccountMapper, k stake.Keeper) mock.TestAndRunMs // SimulateMsgBeginUnbonding func SimulateMsgBeginUnbonding(m auth.AccountMapper, k stake.Keeper) mock.TestAndRunMsg { return func(t *testing.T, r *rand.Rand, ctx sdk.Context, keys []crypto.PrivKey, log string) (action string, err sdk.Error) { - msg := fmt.Sprintf("TestMsgBeginUnbonding with %s", "ok") - return msg, nil + denom := k.GetParams(ctx).BondDenom + validatorKey := keys[r.Intn(len(keys))] + validatorAddress := sdk.AccAddress(validatorKey.PubKey().Address()) + delegatorKey := keys[r.Intn(len(keys))] + delegatorAddress := sdk.AccAddress(delegatorKey.PubKey().Address()) + amount := m.GetAccount(ctx, delegatorAddress).GetCoins().AmountOf(denom) + if amount.GT(sdk.ZeroInt()) { + amount = sdk.NewInt(int64(r.Intn(int(amount.Int64())))) + } + if amount.Equal(sdk.ZeroInt()) { + return "nop", nil + } + msg := stake.MsgBeginUnbonding{ + DelegatorAddr: delegatorAddress, + ValidatorAddr: validatorAddress, + SharesAmount: sdk.NewRatFromInt(amount), + } + require.Nil(t, msg.ValidateBasic(), "expected msg to pass ValidateBasic: %s", msg.GetSignBytes()) + ctx, write := ctx.CacheContext() + result := stake.NewHandler(k)(ctx, msg) + if result.IsOK() { + write() + } + stats[fmt.Sprintf("stake/beginunbonding/%v", result.IsOK())] += 1 + action = fmt.Sprintf("TestMsgBeginUnbonding: %s", msg.GetSignBytes()) + return action, nil } }