Merge PR #2299: simulation: reduce number of failed governance msgs

This commit is contained in:
Dev Ojha 2018-09-17 07:36:26 -07:00 committed by Christopher Goes
parent 65137f6331
commit 18d5b048a9
1 changed files with 12 additions and 7 deletions

View File

@ -51,7 +51,11 @@ func SimulateSubmittingVotingAndSlashingForProposal(k gov.Keeper, sk stake.Keepe
if err != nil { if err != nil {
return "", nil, err return "", nil, err
} }
action = simulateHandleMsgSubmitProposal(msg, sk, handler, ctx, event) action, ok := simulateHandleMsgSubmitProposal(msg, sk, handler, ctx, event)
// don't schedule votes if proposal failed
if !ok {
return action, nil, nil
}
proposalID := k.GetLastProposalID(ctx) proposalID := k.GetLastProposalID(ctx)
// 2) Schedule operations for votes // 2) Schedule operations for votes
// 2.1) first pick a number of people to vote. // 2.1) first pick a number of people to vote.
@ -85,24 +89,25 @@ func SimulateMsgSubmitProposal(k gov.Keeper, sk stake.Keeper) simulation.Operati
if err != nil { if err != nil {
return "", nil, err return "", nil, err
} }
action = simulateHandleMsgSubmitProposal(msg, sk, handler, ctx, event) action, _ = simulateHandleMsgSubmitProposal(msg, sk, handler, ctx, event)
return action, nil, nil return action, nil, nil
} }
} }
func simulateHandleMsgSubmitProposal(msg gov.MsgSubmitProposal, sk stake.Keeper, handler sdk.Handler, ctx sdk.Context, event func(string)) (action string) { func simulateHandleMsgSubmitProposal(msg gov.MsgSubmitProposal, sk stake.Keeper, handler sdk.Handler, ctx sdk.Context, event func(string)) (action string, ok bool) {
ctx, write := ctx.CacheContext() ctx, write := ctx.CacheContext()
result := handler(ctx, msg) result := handler(ctx, msg)
if result.IsOK() { ok = result.IsOK()
if ok {
// Update pool to keep invariants // Update pool to keep invariants
pool := sk.GetPool(ctx) pool := sk.GetPool(ctx)
pool.LooseTokens = pool.LooseTokens.Sub(sdk.NewDecFromInt(msg.InitialDeposit.AmountOf(denom))) pool.LooseTokens = pool.LooseTokens.Sub(sdk.NewDecFromInt(msg.InitialDeposit.AmountOf(denom)))
sk.SetPool(ctx, pool) sk.SetPool(ctx, pool)
write() write()
} }
event(fmt.Sprintf("gov/MsgSubmitProposal/%v", result.IsOK())) event(fmt.Sprintf("gov/MsgSubmitProposal/%v", ok))
action = fmt.Sprintf("TestMsgSubmitProposal: ok %v, msg %s", result.IsOK(), msg.GetSignBytes()) action = fmt.Sprintf("TestMsgSubmitProposal: ok %v, msg %s", ok, msg.GetSignBytes())
return action return
} }
func simulationCreateMsgSubmitProposal(r *rand.Rand, sender crypto.PrivKey) (msg gov.MsgSubmitProposal, err error) { func simulationCreateMsgSubmitProposal(r *rand.Rand, sender crypto.PrivKey) (msg gov.MsgSubmitProposal, err error) {