From e6d8b7c0434745e6552e77109cec7c5eeb8a065c Mon Sep 17 00:00:00 2001 From: Anca Zamfir Date: Tue, 21 Dec 2021 20:39:11 +0100 Subject: [PATCH] Fix pbts tests (#7413) * Allow nil block ID check in ensureProposalWithTimout * William's suggestion to get the proposal from the proposer instead of generating it. * Remove error check on service stop --- internal/consensus/common_test.go | 9 +++++---- internal/consensus/pbts_test.go | 12 +++++------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/internal/consensus/common_test.go b/internal/consensus/common_test.go index dee25e33c..3c0c72757 100644 --- a/internal/consensus/common_test.go +++ b/internal/consensus/common_test.go @@ -682,11 +682,11 @@ func ensureRelock(t *testing.T, relockCh <-chan tmpubsub.Message, height int64, } func ensureProposal(t *testing.T, proposalCh <-chan tmpubsub.Message, height int64, round int32, propID types.BlockID) { - ensureProposalWithTimeout(t, proposalCh, height, round, propID, ensureTimeout) + ensureProposalWithTimeout(t, proposalCh, height, round, &propID, ensureTimeout) } // nolint: lll -func ensureProposalWithTimeout(t *testing.T, proposalCh <-chan tmpubsub.Message, height int64, round int32, propID types.BlockID, timeout time.Duration) { +func ensureProposalWithTimeout(t *testing.T, proposalCh <-chan tmpubsub.Message, height int64, round int32, propID *types.BlockID, timeout time.Duration) { t.Helper() msg := ensureMessageBeforeTimeout(t, proposalCh, timeout) proposalEvent, ok := msg.Data().(types.EventDataCompleteProposal) @@ -700,10 +700,11 @@ func ensureProposalWithTimeout(t *testing.T, proposalCh <-chan tmpubsub.Message, if proposalEvent.Round != round { t.Fatalf("expected round %v, got %v", round, proposalEvent.Round) } - if !proposalEvent.BlockID.Equals(propID) { - t.Fatalf("Proposed block does not match expected block (%v != %v)", proposalEvent.BlockID, propID) + if propID != nil && !proposalEvent.BlockID.Equals(*propID) { + t.Fatalf("Proposed block does not match expected block (%v != %v)", proposalEvent.BlockID, *propID) } } + func ensurePrecommit(t *testing.T, voteCh <-chan tmpubsub.Message, height int64, round int32) { t.Helper() ensureVote(t, voteCh, height, round, tmproto.PrecommitType) diff --git a/internal/consensus/pbts_test.go b/internal/consensus/pbts_test.go index 4f7bf8694..18d04fff0 100644 --- a/internal/consensus/pbts_test.go +++ b/internal/consensus/pbts_test.go @@ -147,11 +147,12 @@ func (p *pbtsTestHarness) observedValidatorProposerHeight(previousBlockTime time p.validatorClock.On("Now").Return(p.height2ProposedBlockTime).Times(6) ensureNewRound(p.t, p.roundCh, p.currentHeight, p.currentRound) - propBlock, partSet := p.observedState.createProposalBlock() - bid := types.BlockID{Hash: propBlock.Hash(), PartSetHeader: partSet.Header()} timeout := time.Until(previousBlockTime.Add(ensureTimeout)) - ensureProposalWithTimeout(p.t, p.ensureProposalCh, p.currentHeight, p.currentRound, bid, timeout) + ensureProposalWithTimeout(p.t, p.ensureProposalCh, p.currentHeight, p.currentRound, nil, timeout) + + rs := p.observedState.GetRoundState() + bid := types.BlockID{Hash: rs.ProposalBlock.Hash(), PartSetHeader: rs.ProposalBlockParts.Header()} ensurePrevote(p.t, p.ensureVoteCh, p.currentHeight, p.currentRound) signAddVotes(p.ctx, p.observedState, tmproto.PrevoteType, p.chainID, bid, p.otherValidators...) @@ -299,8 +300,7 @@ func (p *pbtsTestHarness) run() resultSet { r2 := p.height2() p.intermediateHeights() r5 := p.height5() - err := p.observedState.Stop() - require.NoError(p.t, err) + _ = p.observedState.Stop() return resultSet{ genesisHeight: r1, height2: r2, @@ -328,7 +328,6 @@ func (hr heightResult) isComplete() bool { // until after the genesis time has passed. The test sets the genesis time in the // future and then ensures that the observed validator waits to propose a block. func TestProposerWaitsForGenesisTime(t *testing.T) { - t.Skip() ctx, cancel := context.WithCancel(context.Background()) defer cancel() @@ -359,7 +358,6 @@ func TestProposerWaitsForGenesisTime(t *testing.T) { // and then verifies that the observed validator waits until after the block time // of height 4 to propose a block at height 5. func TestProposerWaitsForPreviousBlock(t *testing.T) { - t.Skip() ctx, cancel := context.WithCancel(context.Background()) defer cancel() initialTime := time.Now().Add(time.Millisecond * 50)