mirror of
https://github.com/status-im/consul.git
synced 2025-01-10 05:45:46 +00:00
efe279f802
* Add a make target to run lint-consul-retry on all the modules * Cleanup sdk/testutil/retry * Fix a bunch of retry.Run* usage to not use the outer testing.T * Fix some more recent retry lint issues and pin to v1.4.0 of lint-consul-retry * Fix codegen copywrite lint issues * Don’t perform cleanup after each retry attempt by default. * Use the common testutil.TestingTB interface in test-integ/tenancy * Fix retry tests * Update otel access logging extension test to perform requests within the retry block
37 lines
1.2 KiB
Go
37 lines
1.2 KiB
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package retry
|
|
|
|
import "time"
|
|
|
|
// Retryer provides an interface for repeating operations
|
|
// until they succeed or an exit condition is met.
|
|
type Retryer interface {
|
|
// Continue returns true if the operation should be repeated, otherwise it
|
|
// returns false to indicate retrying should stop.
|
|
Continue() bool
|
|
}
|
|
|
|
// DefaultRetryer provides default retry.Run() behavior for unit tests, namely
|
|
// 7s timeout with a wait of 25ms
|
|
func DefaultRetryer() Retryer {
|
|
return &Timer{Timeout: 7 * time.Second, Wait: 25 * time.Millisecond}
|
|
}
|
|
|
|
// ThirtySeconds repeats an operation for thirty seconds and waits 500ms in between.
|
|
// Best for known slower operations like waiting on eventually consistent state.
|
|
func ThirtySeconds() *Timer {
|
|
return &Timer{Timeout: 30 * time.Second, Wait: 500 * time.Millisecond}
|
|
}
|
|
|
|
// TwoSeconds repeats an operation for two seconds and waits 25ms in between.
|
|
func TwoSeconds() *Timer {
|
|
return &Timer{Timeout: 2 * time.Second, Wait: 25 * time.Millisecond}
|
|
}
|
|
|
|
// ThreeTimes repeats an operation three times and waits 25ms in between.
|
|
func ThreeTimes() *Counter {
|
|
return &Counter{Count: 3, Wait: 25 * time.Millisecond}
|
|
}
|