From 57722da6eca2f309acc421b11978d35d152400b8 Mon Sep 17 00:00:00 2001 From: William Banfield Date: Tue, 23 Nov 2021 15:01:49 -0500 Subject: [PATCH] move tests to separate pbts test file --- internal/consensus/pbts_test.go | 115 +++++++++++++++++++++++++++++++ internal/consensus/state_test.go | 104 ---------------------------- 2 files changed, 115 insertions(+), 104 deletions(-) create mode 100644 internal/consensus/pbts_test.go diff --git a/internal/consensus/pbts_test.go b/internal/consensus/pbts_test.go new file mode 100644 index 000000000..0d3095214 --- /dev/null +++ b/internal/consensus/pbts_test.go @@ -0,0 +1,115 @@ +package consensus + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + tmtimemocks "github.com/tendermint/tendermint/libs/time/mocks" + "github.com/tendermint/tendermint/types" +) + +func TestProposerWaitTime(t *testing.T) { + genesisTime, err := time.Parse(time.RFC3339, "2019-03-13T23:00:00Z") + require.NoError(t, err) + testCases := []struct { + name string + blockTime time.Time + localTime time.Time + expectedWait time.Duration + }{ + { + name: "block time greater than local time", + blockTime: genesisTime.Add(5 * time.Nanosecond), + localTime: genesisTime.Add(1 * time.Nanosecond), + expectedWait: 4 * time.Nanosecond, + }, + { + name: "local time greater than block time", + blockTime: genesisTime.Add(1 * time.Nanosecond), + localTime: genesisTime.Add(5 * time.Nanosecond), + expectedWait: 0, + }, + { + name: "both times equal", + blockTime: genesisTime.Add(5 * time.Nanosecond), + localTime: genesisTime.Add(5 * time.Nanosecond), + expectedWait: 0, + }, + } + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + b := types.Block{ + Header: types.Header{ + Time: testCase.blockTime, + }, + } + + mockSource := new(tmtimemocks.Source) + mockSource.On("Now").Return(testCase.localTime) + + ti := proposerWaitTime(mockSource, b.Header) + assert.Equal(t, testCase.expectedWait, ti) + }) + } +} + +func TestProposalTimeout(t *testing.T) { + genesisTime, err := time.Parse(time.RFC3339, "2019-03-13T23:00:00Z") + require.NoError(t, err) + testCases := []struct { + name string + localTime time.Time + previousBlockTime time.Time + precision time.Duration + msgDelay time.Duration + expectedDuration time.Duration + }{ + { + name: "MsgDelay + Precision has not quite elapsed", + localTime: genesisTime.Add(525 * time.Millisecond), + previousBlockTime: genesisTime.Add(6 * time.Millisecond), + precision: time.Millisecond * 20, + msgDelay: time.Millisecond * 500, + expectedDuration: 1 * time.Millisecond, + }, + { + name: "MsgDelay + Precision equals current time", + localTime: genesisTime.Add(525 * time.Millisecond), + previousBlockTime: genesisTime.Add(5 * time.Millisecond), + precision: time.Millisecond * 20, + msgDelay: time.Millisecond * 500, + expectedDuration: 0, + }, + { + name: "MsgDelay + Precision has elapsed", + localTime: genesisTime.Add(725 * time.Millisecond), + previousBlockTime: genesisTime.Add(5 * time.Millisecond), + precision: time.Millisecond * 20, + msgDelay: time.Millisecond * 500, + expectedDuration: 0, + }, + } + for _, testCase := range testCases { + t.Run(testCase.name, func(t *testing.T) { + b := types.Block{ + Header: types.Header{ + Time: testCase.previousBlockTime, + }, + } + + mockSource := new(tmtimemocks.Source) + mockSource.On("Now").Return(testCase.localTime) + + tp := types.TimestampParams{ + Precision: testCase.precision, + MsgDelay: testCase.msgDelay, + } + + ti := proposalStepWaitingTime(mockSource, b.Header, tp) + assert.Equal(t, testCase.expectedDuration, ti) + }) + } +} diff --git a/internal/consensus/state_test.go b/internal/consensus/state_test.go index c8adc2987..2916a6559 100644 --- a/internal/consensus/state_test.go +++ b/internal/consensus/state_test.go @@ -17,7 +17,6 @@ import ( "github.com/tendermint/tendermint/libs/log" tmpubsub "github.com/tendermint/tendermint/libs/pubsub" tmrand "github.com/tendermint/tendermint/libs/rand" - tmtimemocks "github.com/tendermint/tendermint/libs/time/mocks" tmproto "github.com/tendermint/tendermint/proto/tendermint/types" "github.com/tendermint/tendermint/types" ) @@ -2441,109 +2440,6 @@ func TestSignSameVoteTwice(t *testing.T) { require.Equal(t, vote, vote2) } -func TestProposerWaitTime(t *testing.T) { - genesisTime, err := time.Parse(time.RFC3339, "2019-03-13T23:00:00Z") - require.NoError(t, err) - testCases := []struct { - name string - blockTime time.Time - localTime time.Time - expectedWait time.Duration - }{ - { - name: "block time greater than local time", - blockTime: genesisTime.Add(5 * time.Nanosecond), - localTime: genesisTime.Add(1 * time.Nanosecond), - expectedWait: 4 * time.Nanosecond, - }, - { - name: "local time greater than block time", - blockTime: genesisTime.Add(1 * time.Nanosecond), - localTime: genesisTime.Add(5 * time.Nanosecond), - expectedWait: 0, - }, - { - name: "both times equal", - blockTime: genesisTime.Add(5 * time.Nanosecond), - localTime: genesisTime.Add(5 * time.Nanosecond), - expectedWait: 0, - }, - } - for _, testCase := range testCases { - t.Run(testCase.name, func(t *testing.T) { - b := types.Block{ - Header: types.Header{ - Time: testCase.blockTime, - }, - } - - mockSource := new(tmtimemocks.Source) - mockSource.On("Now").Return(testCase.localTime) - - ti := proposerWaitTime(mockSource, b.Header) - assert.Equal(t, testCase.expectedWait, ti) - }) - } -} - -func TestProposalTimeout(t *testing.T) { - genesisTime, err := time.Parse(time.RFC3339, "2019-03-13T23:00:00Z") - require.NoError(t, err) - testCases := []struct { - name string - localTime time.Time - previousBlockTime time.Time - precision time.Duration - msgDelay time.Duration - expectedDuration time.Duration - }{ - { - name: "MsgDelay + Precision has not quite elapsed", - localTime: genesisTime.Add(525 * time.Millisecond), - previousBlockTime: genesisTime.Add(6 * time.Millisecond), - precision: time.Millisecond * 20, - msgDelay: time.Millisecond * 500, - expectedDuration: 1 * time.Millisecond, - }, - { - name: "MsgDelay + Precision equals current time", - localTime: genesisTime.Add(525 * time.Millisecond), - previousBlockTime: genesisTime.Add(5 * time.Millisecond), - precision: time.Millisecond * 20, - msgDelay: time.Millisecond * 500, - expectedDuration: 0, - }, - { - name: "MsgDelay + Precision has elapsed", - localTime: genesisTime.Add(725 * time.Millisecond), - previousBlockTime: genesisTime.Add(5 * time.Millisecond), - precision: time.Millisecond * 20, - msgDelay: time.Millisecond * 500, - expectedDuration: 0, - }, - } - for _, testCase := range testCases { - t.Run(testCase.name, func(t *testing.T) { - b := types.Block{ - Header: types.Header{ - Time: testCase.previousBlockTime, - }, - } - - mockSource := new(tmtimemocks.Source) - mockSource.On("Now").Return(testCase.localTime) - - tp := types.TimestampParams{ - Precision: testCase.precision, - MsgDelay: testCase.msgDelay, - } - - ti := proposalStepWaitingTime(mockSource, b.Header, tp) - assert.Equal(t, testCase.expectedDuration, ti) - }) - } -} - // subscribe subscribes test client to the given query and returns a channel with cap = 1. func subscribe(eventBus *types.EventBus, q tmpubsub.Query) <-chan tmpubsub.Message { sub, err := eventBus.Subscribe(context.Background(), testSubscriber, q)