Skip to content

Commit

Permalink
Merge branch 'master' into bez/upgrade-name-normalize-cmvsr
Browse files Browse the repository at this point in the history
  • Loading branch information
alexanderbez authored Apr 13, 2022
2 parents 3a22f4e + dd2b9e1 commit 95b9c76
Show file tree
Hide file tree
Showing 7 changed files with 208 additions and 29 deletions.
2 changes: 1 addition & 1 deletion simapp/helpers/test_helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (

// SimAppChainID hardcoded chainID for simulation
const (
DefaultGenTxGas = 1000000
DefaultGenTxGas = 10000000
SimAppChainID = "simulation-app"
)

Expand Down
3 changes: 3 additions & 0 deletions x/group/client/testutil/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -1103,6 +1103,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupPolicyAdmin() {
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
fmt.Sprintf("--%s=%d", flags.FlagGas, 300000),
}

testCases := []struct {
Expand Down Expand Up @@ -1206,6 +1207,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupPolicyDecisionPolicy() {
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
fmt.Sprintf("--%s=%d", flags.FlagGas, 300000),
}

testCases := []struct {
Expand Down Expand Up @@ -1354,6 +1356,7 @@ func (s *IntegrationTestSuite) TestTxUpdateGroupPolicyMetadata() {
fmt.Sprintf("--%s=true", flags.FlagSkipConfirmation),
fmt.Sprintf("--%s=%s", flags.FlagBroadcastMode, flags.BroadcastBlock),
fmt.Sprintf("--%s=%s", flags.FlagFees, sdk.NewCoins(sdk.NewCoin(s.cfg.BondDenom, sdk.NewInt(10))).String()),
fmt.Sprintf("--%s=%d", flags.FlagGas, 300000),
}

testCases := []struct {
Expand Down
51 changes: 44 additions & 7 deletions x/group/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,32 @@ func (k Keeper) pruneProposal(ctx sdk.Context, proposalID uint64) error {
return nil
}

// updateProposalStatus iterates through all proposals by group policy index and updates proposal status
func (k Keeper) updateProposalStatus(ctx sdk.Context, groupPolicyAddr sdk.AccAddress) error {
proposalIt, err := k.proposalByGroupPolicyIndex.Get(ctx.KVStore(k.key), groupPolicyAddr.Bytes())
if err != nil {
return err
}
defer proposalIt.Close()

for {
var proposalInfo group.Proposal
_, err = proposalIt.LoadNext(&proposalInfo)
if errors.ErrORMIteratorDone.Is(err) {
break
}
if err != nil {
return err
}
proposalInfo.Status = group.PROPOSAL_STATUS_ABORTED

if err := k.proposalTable.Update(ctx.KVStore(k.key), proposalInfo.Id, &proposalInfo); err != nil {
return err
}
}
return nil
}

// pruneVotes prunes all votes for a proposal from state.
func (k Keeper) pruneVotes(ctx sdk.Context, proposalID uint64) error {
store := ctx.KVStore(k.key)
Expand Down Expand Up @@ -340,13 +366,24 @@ func (k Keeper) TallyProposalsAtVPEnd(ctx sdk.Context) error {
return true, sdkerrors.Wrap(err, "group")
}

err = k.doTallyAndUpdate(ctx, &proposal, electorate, policyInfo)
if err != nil {
return true, sdkerrors.Wrap(err, "doTallyAndUpdate")
}

if err := k.proposalTable.Update(ctx.KVStore(k.key), proposal.Id, &proposal); err != nil {
return true, sdkerrors.Wrap(err, "proposal update")
proposalId := proposal.Id
if proposal.Status == group.PROPOSAL_STATUS_ABORTED || proposal.Status == group.PROPOSAL_STATUS_WITHDRAWN {
if err := k.pruneProposal(ctx, proposalId); err != nil {
return true, err
}
if err := k.pruneVotes(ctx, proposalId); err != nil {
return true, err
}

} else {
err = k.doTallyAndUpdate(ctx, &proposal, electorate, policyInfo)
if err != nil {
return true, sdkerrors.Wrap(err, "doTallyAndUpdate")
}

if err := k.proposalTable.Update(ctx.KVStore(k.key), proposal.Id, &proposal); err != nil {
return true, sdkerrors.Wrap(err, "proposal update")
}
}

return false, nil
Expand Down
3 changes: 3 additions & 0 deletions x/group/keeper/keeper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2430,6 +2430,8 @@ func (s *TestSuite) TestExecPrunedProposalsAndVotes() {
s.Require().NoError(err)
return myProposalID
},
expErr: true, // since proposal status will be `aborted` when group policy is modified
expErrMsg: "not possible with proposal status",
expExecutorResult: group.PROPOSAL_EXECUTOR_RESULT_NOT_RUN,
},
"proposal exists when rollback all msg updates on failure": {
Expand Down Expand Up @@ -2470,6 +2472,7 @@ func (s *TestSuite) TestExecPrunedProposalsAndVotes() {
_, err := s.keeper.Exec(ctx, &group.MsgExec{Executor: addr1.String(), ProposalId: proposalID})
if spec.expErr {
s.Require().Error(err)
s.Require().Contains(err.Error(), spec.expErrMsg)
return
}
s.Require().NoError(err)
Expand Down
8 changes: 8 additions & 0 deletions x/group/keeper/msg_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -894,6 +894,11 @@ func (k Keeper) doUpdateGroupPolicy(ctx sdk.Context, groupPolicy string, admin s
return sdkerrors.Wrap(err, "load group policy")
}

groupPolicyAddr, err := sdk.AccAddressFromBech32(groupPolicy)
if err != nil {
return sdkerrors.Wrap(err, "group policy address")
}

groupPolicyAdmin, err := sdk.AccAddressFromBech32(admin)
if err != nil {
return sdkerrors.Wrap(err, "group policy admin")
Expand All @@ -913,6 +918,9 @@ func (k Keeper) doUpdateGroupPolicy(ctx sdk.Context, groupPolicy string, admin s
return err
}

if err = k.updateProposalStatus(ctx, groupPolicyAddr); err != nil {
return err
}
return nil
}

Expand Down
Loading

0 comments on commit 95b9c76

Please sign in to comment.