From c4a27e036157ae114240e39d18e94ef193d1a2bc Mon Sep 17 00:00:00 2001 From: Simon Noetzlin Date: Mon, 14 Oct 2024 15:55:28 +0200 Subject: [PATCH] test: update block proposer in testing (#7430) * 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 64f33e092bd9fee4a4a334dc194aaebc5105a4f4) --- CHANGELOG.md | 4 ++++ testing/chain.go | 5 ++++- testing/chain_test.go | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d1a95ebb4e2..aea00603692 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/testing/chain.go b/testing/chain.go index cda9fe83b4c..bbd9f2a258a 100644 --- a/testing/chain.go +++ b/testing/chain.go @@ -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, @@ -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, } } diff --git a/testing/chain_test.go b/testing/chain_test.go index 512e426eaca..e72057765b3 100644 --- a/testing/chain_test.go +++ b/testing/chain_test.go @@ -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" @@ -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))) +}