MCPcopy
hub / github.com/grafana/dskit / TestBackoff_NextDelay

Function TestBackoff_NextDelay

backoff/backoff_test.go:12–106  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestBackoff_NextDelay(t *testing.T) {
13 t.Parallel()
14
15 tests := map[string]struct {
16 minBackoff time.Duration
17 maxBackoff time.Duration
18 expectedRanges [][]time.Duration
19 }{
20 "exponential backoff with jitter honoring min and max": {
21 minBackoff: 100 * time.Millisecond,
22 maxBackoff: 10 * time.Second,
23 expectedRanges: [][]time.Duration{
24 {100 * time.Millisecond, 200 * time.Millisecond},
25 {200 * time.Millisecond, 400 * time.Millisecond},
26 {400 * time.Millisecond, 800 * time.Millisecond},
27 {800 * time.Millisecond, 1600 * time.Millisecond},
28 {1600 * time.Millisecond, 3200 * time.Millisecond},
29 {3200 * time.Millisecond, 6400 * time.Millisecond},
30 {6400 * time.Millisecond, 10000 * time.Millisecond},
31 {6400 * time.Millisecond, 10000 * time.Millisecond},
32 },
33 },
34 "exponential backoff with max equal to the end of a range": {
35 minBackoff: 100 * time.Millisecond,
36 maxBackoff: 800 * time.Millisecond,
37 expectedRanges: [][]time.Duration{
38 {100 * time.Millisecond, 200 * time.Millisecond},
39 {200 * time.Millisecond, 400 * time.Millisecond},
40 {400 * time.Millisecond, 800 * time.Millisecond},
41 {400 * time.Millisecond, 800 * time.Millisecond},
42 },
43 },
44 "exponential backoff with max equal to the end of a range + 1": {
45 minBackoff: 100 * time.Millisecond,
46 maxBackoff: 801 * time.Millisecond,
47 expectedRanges: [][]time.Duration{
48 {100 * time.Millisecond, 200 * time.Millisecond},
49 {200 * time.Millisecond, 400 * time.Millisecond},
50 {400 * time.Millisecond, 800 * time.Millisecond},
51 {800 * time.Millisecond, 801 * time.Millisecond},
52 {800 * time.Millisecond, 801 * time.Millisecond},
53 },
54 },
55 "exponential backoff with max equal to the end of a range - 1": {
56 minBackoff: 100 * time.Millisecond,
57 maxBackoff: 799 * time.Millisecond,
58 expectedRanges: [][]time.Duration{
59 {100 * time.Millisecond, 200 * time.Millisecond},
60 {200 * time.Millisecond, 400 * time.Millisecond},
61 {400 * time.Millisecond, 799 * time.Millisecond},
62 {400 * time.Millisecond, 799 * time.Millisecond},
63 },
64 },
65 "min backoff is equal to max": {
66 minBackoff: 100 * time.Millisecond,
67 maxBackoff: 100 * time.Millisecond,
68 expectedRanges: [][]time.Duration{
69 {100 * time.Millisecond, 100 * time.Millisecond},

Callers

nothing calls this directly

Calls 4

RunMethod · 0.80
NextDelayMethod · 0.80
ErrorfMethod · 0.80
NewFunction · 0.70

Tested by

no test coverage detected