...
1 package backoff
2
3 import (
4 "math/rand"
5 "testing"
6 "time"
7
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestNewExponentialIntervalWithDefaultOptions(t *testing.T) {
12 p := NewExponentialInterval()
13
14 assert.Equal(t, defaultMaxInterval, p.maxInterval)
15 assert.Equal(t, defaultMinInterval, p.minInterval)
16 assert.Equal(t, defaultMultiplier, p.multiplier)
17 assert.Equal(t, &nopJitter{}, p.jitter)
18 }
19
20 func TestNewExponentialIntervalWithCustomOptions(t *testing.T) {
21 jitter := 0.99
22 maxInterval := 24 * time.Hour
23 minInterval := time.Nanosecond
24 multiplier := float64(99999)
25 rng := rand.New(rand.NewSource(time.Now().UnixNano()))
26 p := NewExponentialInterval(
27 WithJitterFactor(jitter),
28 WithMaxInterval(maxInterval),
29 WithMinInterval(minInterval),
30 WithMultiplier(multiplier),
31 WithRNG(rng),
32 )
33
34 assert.Equal(t, maxInterval, time.Duration(p.maxInterval))
35 assert.Equal(t, minInterval, time.Duration(p.minInterval))
36 assert.Equal(t, multiplier, p.multiplier)
37 assert.Equal(t, newRandomJitter(jitter, rng), p.jitter)
38 }
39
40 func TestNewExponentialIntervalWithOnlyJitterOptions(t *testing.T) {
41 jitter := 0.99
42 p := NewExponentialInterval(
43 WithJitterFactor(jitter),
44 )
45
46 generatedRandomJitter := p.jitter.(*randomJitter)
47 assert.Equal(t, newRandomJitter(jitter, generatedRandomJitter.rng), p.jitter)
48 }
49
View as plain text