From 9e19803ded32f5b05ca516ce6c29254ff8858a8f Mon Sep 17 00:00:00 2001 From: William Banfield Date: Sun, 14 Nov 2021 17:03:55 -0500 Subject: [PATCH] wip --- internal/consensus/state.go | 10 ++++---- internal/consensus/state_test.go | 40 +++++++++++++++----------------- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/internal/consensus/state.go b/internal/consensus/state.go index 88886362a..9292c625e 100644 --- a/internal/consensus/state.go +++ b/internal/consensus/state.go @@ -2413,10 +2413,12 @@ func repairWalFile(src, dst string) error { return nil } -func proposalTimeout(lt tmtime.Source, h types.Header) time.Time { +// proposalTimeout Header.Time + 2*ACCURACY + MSGDELAY +func proposalWaitingTime(lt tmtime.Source, h types.Header, tp types.TimestampParams) time.Duration { t := lt.Now() - if t.After(h.Time) { - return t + wt := h.Time.Add(2 * tp.Accuracy).Add(tp.MsgDelay) + if t.After(wt) { + return 0 } - return h.Time + return wt.Sub(t) } diff --git a/internal/consensus/state_test.go b/internal/consensus/state_test.go index d7a091992..8582da248 100644 --- a/internal/consensus/state_test.go +++ b/internal/consensus/state_test.go @@ -2445,28 +2445,21 @@ func TestProposalTimeout(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 - expectedTime time.Time + name string + blockTime time.Time + localTime time.Time + accuracy time.Duration + msgDelay time.Duration + expectedDuration time.Duration }{ { - name: "block time greater than local time", - blockTime: genesisTime.Add(5 * time.Nanosecond), - localTime: genesisTime.Add(1 * time.Nanosecond), - expectedTime: genesisTime.Add(5 * time.Nanosecond), - }, - { - name: "local time greater than block time", - blockTime: genesisTime.Add(1 * time.Nanosecond), - localTime: genesisTime.Add(5 * time.Nanosecond), - expectedTime: genesisTime.Add(5 * time.Nanosecond), - }, - { - name: "both times equal", - blockTime: genesisTime.Add(5 * time.Nanosecond), - localTime: genesisTime.Add(5 * time.Nanosecond), - expectedTime: genesisTime.Add(5 * time.Nanosecond), + // this test makes no sense and needs completion + name: "waiting time in the past", + blockTime: genesisTime.Add(5 * time.Millisecond), + localTime: genesisTime.Add(3 * time.Nanosecond), + accuracy: time.Nanosecond * 2, + msgDelay: time.Nanosecond, + expectedDuration: time.Nanosecond, }, } for _, testCase := range testCases { @@ -2480,7 +2473,12 @@ func TestProposalTimeout(t *testing.T) { mockSource := new(tmtimemocks.Source) mockSource.On("Now").Return(testCase.localTime) - ti := proposerWaitUntil(mockSource, b.Header) + tp := types.TimestampParams{ + Accuracy: testCase.accuracy, + MsgDelay: testCase.msgDelay, + } + + ti := proposalWaitingTime(mockSource, b.Header, tp) assert.Equal(t, testCase.expectedTime, ti) }) }