mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-31 17:13:57 +00:00
* port changes from #1013 * port changes from #1068 * go.mod tidy * fix compile error * fix goimports * fix log * address review comments * upgrade golang.org/x/net to 0.23.0 * bump version * remove unused flag * update da-codec commit --------- Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
39 lines
1 KiB
Go
39 lines
1 KiB
Go
package backoff
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestExponentialBackoff(t *testing.T) {
|
|
t.Run("Multiple attempts", func(t *testing.T) {
|
|
e := NewExponential(100*time.Millisecond, 10*time.Second, 0)
|
|
expectedDurations := []time.Duration{
|
|
100 * time.Millisecond,
|
|
200 * time.Millisecond,
|
|
400 * time.Millisecond,
|
|
800 * time.Millisecond,
|
|
1600 * time.Millisecond,
|
|
3200 * time.Millisecond,
|
|
6400 * time.Millisecond,
|
|
10 * time.Second, // capped at max
|
|
}
|
|
for i, expected := range expectedDurations {
|
|
require.Equal(t, expected, e.NextDuration(), "attempt %d", i)
|
|
}
|
|
})
|
|
|
|
t.Run("Jitter added", func(t *testing.T) {
|
|
e := NewExponential(1*time.Second, 10*time.Second, 1*time.Second)
|
|
duration := e.NextDuration()
|
|
require.GreaterOrEqual(t, duration, 1*time.Second)
|
|
require.Less(t, duration, 2*time.Second)
|
|
})
|
|
|
|
t.Run("Edge case: min > max", func(t *testing.T) {
|
|
e := NewExponential(10*time.Second, 5*time.Second, 0)
|
|
require.Equal(t, 5*time.Second, e.NextDuration())
|
|
})
|
|
}
|