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
}