Atlas › Test

TestJitter_Duration

Exact test identity: go.temporal.io/server/common/backoff/TestJitterSuite/TestJitter_Duration

Package
go.temporal.io/server/common/backoff
Suite / test hierarchy
TestJitterSuite/TestJitter_Duration
Test
TestJitter_Duration
Introduced at
TestJitter_Int64, TestJitter_Float64, +1 Frontier kind: Test frontier
Covered ranges
7
Covered lines
31
Covered files
2

Co-introduced tests

2 other tests enter at the same concept.

Covered source

Expand a file to inspect source; the > gutter marks covered lines.

go.temporal.io/server/common/backoff/retrypolicy.go 19 covered LOC · 3 ranges

Open complete file

80
81 // NewExponentialRetryPolicy returns an instance of ExponentialRetryPolicy using the provided initialInterval
82 > func NewExponentialRetryPolicy(initialInterval time.Duration) *ExponentialRetryPolicy { retrypolicy.go
83 > p := &ExponentialRetryPolicy{
84 > initialInterval: initialInterval,
85 > backoffCoefficient: defaultBackoffCoefficient,
86 > maximumInterval: defaultMaximumInterval,
87 > expirationInterval: defaultExpirationInterval,
88 > maximumAttempts: defaultMaximumAttempts,
89 > }
90 >
91 > return p
92 > }
93
94 // NewRetrier is used for creating a new instance of Retrier
121 // This does *not* cause the policy to stop retrying when the interval between retries reaches the supplied duration.
122 // That is what WithExpirationInterval does. Instead, this prevents the interval from exceeding maximumInterval.
123 > func (p *ExponentialRetryPolicy) WithMaximumInterval(maximumInterval time.Duration) *ExponentialRetryPolicy { retrypolicy.go
124 > p.maximumInterval = maximumInterval
125 > return p
126 > }
127
128 // WithExpirationInterval sets the absolute expiration interval for all retries
129 > func (p *ExponentialRetryPolicy) WithExpirationInterval(expirationInterval time.Duration) *ExponentialRetryPolicy { retrypolicy.go
130 > p.expirationInterval = expirationInterval
131 > return p
132 > }
133
134 // WithMaximumAttempts sets the maximum number of retry attempts
go.temporal.io/server/common/backoff/jitter.go 12 covered LOC · 4 ranges

Open complete file

4
5 // FullJitter return random number from 0 to input, inclusive, exclusive
6 > func FullJitter[T ~int64 | ~int | ~int32 | ~float64 | ~float32](input T) T { jitter.go
7 > return T(rand.Float64() * float64(input))
8 > }
9
10 // Jitter return random number from (1-coefficient)*input to (1+coefficient)*input, inclusive, exclusive
11 > func Jitter[T ~int64 | ~int | ~int32 | ~float64 | ~float32](input T, coefficient float64) T { jitter.go
12 > validateCoefficient(coefficient)
13 >
14 > if coefficient == 0 {
15 return input
16 }
17
18 > base := float64(input) * (1 - coefficient) jitter.go
19 > addon := rand.Float64() * 2 * (float64(input) - base)
20 > return T(base + addon)
21 }
22
23 > func validateCoefficient(coefficient float64) { jitter.go
24 > if coefficient < 0 || coefficient > 1 {
25 panic("coefficient cannot be < 0 or > 1")
26 }