Skip to content

Commit

Permalink
test: update block proposer in testing (#7430)
Browse files Browse the repository at this point in the history
* Introduce two following changes to the `commitBlock` method in testing:
* increment the proposer priority of validators
* update the proposer address in the current header

* fix linter

(cherry picked from commit 64f33e0)
  • Loading branch information
sainoe authored and mergify[bot] committed Oct 14, 2024
1 parent fca10d9 commit c4a27e0
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,10 @@ Ref: https://keepachangelog.com/en/1.0.0/

## [[Unreleased]]

### Testing

* [\#7430](https://github.com/cosmos/ibc-go/pull/7430) Update the block proposer in test chains for each block.

### Dependencies

### API Breaking
Expand Down
5 changes: 4 additions & 1 deletion testing/chain.go
Original file line number Diff line number Diff line change
Expand Up @@ -317,6 +317,9 @@ func (chain *TestChain) commitBlock(res *abci.ResponseFinalizeBlock) {
chain.Vals = chain.NextVals
chain.NextVals = ApplyValSetChanges(chain, chain.Vals, res.ValidatorUpdates)

// increment the proposer priority of validators
chain.Vals.IncrementProposerPriority(1)

// increment the current header
chain.ProposedHeader = cmtproto.Header{
ChainID: chain.ChainID,
Expand All @@ -327,7 +330,7 @@ func (chain *TestChain) commitBlock(res *abci.ResponseFinalizeBlock) {
Time: chain.ProposedHeader.Time,
ValidatorsHash: chain.Vals.Hash(),
NextValidatorsHash: chain.NextVals.Hash(),
ProposerAddress: chain.ProposedHeader.ProposerAddress,
ProposerAddress: chain.Vals.Proposer.Address,
}
}

Expand Down
34 changes: 34 additions & 0 deletions testing/chain_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

sdkmath "cosmossdk.io/math"

sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/x/staking/types"

ibctesting "github.com/cosmos/ibc-go/v9/testing"
Expand Down Expand Up @@ -41,3 +42,36 @@ func TestChangeValSet(t *testing.T) {
err = path.EndpointB.UpdateClient()
require.NoError(t, err)
}

func TestJailProposerValidator(t *testing.T) {
coord := ibctesting.NewCoordinator(t, 2)
chainA := coord.GetChain(ibctesting.GetChainID(1))
chainB := coord.GetChain(ibctesting.GetChainID(2))

path := ibctesting.NewPath(chainA, chainB)
coord.Setup(path)

// save valset length before jailing
valsetLen := len(chainA.Vals.Validators)

// jail the proposer validator in chain A
propAddr := sdk.ConsAddress(chainA.Vals.Proposer.Address)

err := chainA.GetSimApp().StakingKeeper.Jail(
chainA.GetContext(), propAddr)
require.NoError(t, err)

coord.CommitBlock(chainA)

// verify that update clients works even after validator update goes into effect
err = path.EndpointB.UpdateClient()
require.NoError(t, err)
err = path.EndpointB.UpdateClient()
require.NoError(t, err)

// check that the jailing has taken effect in chain A
require.Equal(t, valsetLen-1, len(chainA.Vals.Validators))

// check that the valset in chain A has a new proposer
require.False(t, propAddr.Equals(sdk.ConsAddress(chainA.Vals.Proposer.Address)))
}

0 comments on commit c4a27e0

Please sign in to comment.