mirror of
https://github.com/status-im/consul.git
synced 2025-01-09 21:35:52 +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
49 lines
949 B
Go
49 lines
949 B
Go
// Copyright (c) HashiCorp, Inc.
|
|
// SPDX-License-Identifier: MPL-2.0
|
|
|
|
package retry
|
|
|
|
type Option func(r *R)
|
|
|
|
func WithRetryer(retryer Retryer) Option {
|
|
return func(r *R) {
|
|
r.retryer = retryer
|
|
}
|
|
}
|
|
|
|
func WithFullOutput() Option {
|
|
return func(r *R) {
|
|
r.fullOutput = true
|
|
}
|
|
}
|
|
|
|
// WithImmediateCleanup will cause all cleanup operations added
|
|
// by calling the Cleanup method on *R to be performed after
|
|
// the retry attempt completes (regardless of pass/fail status)
|
|
// Use this only if all resources created during the retry loop should
|
|
// not persist after the retry has finished.
|
|
func WithImmediateCleanup() Option {
|
|
return func(r *R) {
|
|
r.immediateCleanup = true
|
|
}
|
|
}
|
|
|
|
func Run(t TestingTB, f func(r *R), opts ...Option) {
|
|
t.Helper()
|
|
r := &R{
|
|
wrapped: t,
|
|
retryer: DefaultRetryer(),
|
|
}
|
|
|
|
for _, opt := range opts {
|
|
opt(r)
|
|
}
|
|
|
|
r.run(f)
|
|
}
|
|
|
|
func RunWith(r Retryer, t TestingTB, f func(r *R)) {
|
|
t.Helper()
|
|
Run(t, f, WithRetryer(r))
|
|
}
|