-
Notifications
You must be signed in to change notification settings - Fork 85
/
retry_test.go
85 lines (82 loc) · 1.88 KB
/
retry_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package retry_test
import (
"context"
"testing"
"github.com/buildbuddy-io/buildbuddy/server/util/retry"
"github.com/stretchr/testify/assert"
)
func TestMaxRetryFromBackoff(t *testing.T) {
tests := map[string]struct {
inputOptions *retry.Options
expectedMaxAttempts int
}{
"exact backoff boundary": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 24,
Multiplier: 2,
MaxRetries: 0,
},
expectedMaxAttempts: 4,
},
"above exact backoff boundary": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 25,
Multiplier: 2,
MaxRetries: 0,
},
expectedMaxAttempts: 5,
},
"below exact backoff boundary": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 23,
Multiplier: 2,
MaxRetries: 0,
},
expectedMaxAttempts: 4,
},
"manually set maximum above calculated backoff": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 23,
Multiplier: 2,
MaxRetries: 7,
},
expectedMaxAttempts: 7,
},
"manually set maximum below calculated backoff": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 23,
Multiplier: 2,
MaxRetries: 2,
},
expectedMaxAttempts: 2,
},
"initial backoff greater than maximum": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 1,
Multiplier: 2,
MaxRetries: 0,
},
expectedMaxAttempts: 1,
},
"multiplier less than or equal to one": {
inputOptions: &retry.Options{
InitialBackoff: 3,
MaxBackoff: 7,
Multiplier: 0.5,
MaxRetries: 0,
},
expectedMaxAttempts: 1,
},
}
for name, tc := range tests {
t.Run(name, func(t *testing.T) {
assert.Equal(t, tc.expectedMaxAttempts, retry.New(context.Background(), tc.inputOptions).MaxAttempts())
})
}
}