consul/sdk/testutil/retry/run.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))
}