memberlist: github.com/hashicorp/memberlist/internal/retry Index | Files

package retry

import "github.com/hashicorp/memberlist/internal/retry"

Package retry provides support for repeating operations in tests.

A sample retry operation looks like this:

func TestX(t *testing.T) {
    retry.Run(t, func(r *retry.R) {
        if err := foo(); err != nil {
            r.Fatal("f: ", err)
        }
    })
}

Index

Package Files

retry.go

func Run Uses

func Run(t Failer, f func(r *R))

func RunWith Uses

func RunWith(r Retryer, t Failer, f func(r *R))

type Counter Uses

type Counter struct {
    Count int
    Wait  time.Duration
    // contains filtered or unexported fields
}

Counter repeats an operation a given number of times and waits between subsequent operations.

func ThreeTimes Uses

func ThreeTimes() *Counter

ThreeTimes repeats an operation three times and waits 25ms in between.

func (*Counter) NextOr Uses

func (r *Counter) NextOr(fail func()) bool

type Failer Uses

type Failer interface {
    // Log is called for the final test output
    Log(args ...interface{})

    // FailNow is called when the retrying is abandoned.
    FailNow()
}

Failer is an interface compatible with testing.T.

type R Uses

type R struct {
    // contains filtered or unexported fields
}

R provides context for the retryer.

func (*R) Check Uses

func (r *R) Check(err error)

func (*R) Error Uses

func (r *R) Error(args ...interface{})

func (*R) Errorf Uses

func (r *R) Errorf(format string, args ...interface{})

func (*R) FailNow Uses

func (r *R) FailNow()

func (*R) Fatal Uses

func (r *R) Fatal(args ...interface{})

func (*R) Fatalf Uses

func (r *R) Fatalf(format string, args ...interface{})

type Retryer Uses

type Retryer interface {
    // NextOr returns true if the operation should be repeated.
    // Otherwise, it calls fail and returns false.
    NextOr(fail func()) bool
}

Retryer provides an interface for repeating operations until they succeed or an exit condition is met.

type Timer Uses

type Timer struct {
    Timeout time.Duration
    Wait    time.Duration
    // contains filtered or unexported fields
}

Timer repeats an operation for a given amount of time and waits between subsequent operations.

func DefaultFailer Uses

func DefaultFailer() *Timer

DefaultFailer provides default retry.Run() behavior for unit tests.

func TwoSeconds Uses

func TwoSeconds() *Timer

TwoSeconds repeats an operation for two seconds and waits 25ms in between.

func (*Timer) NextOr Uses

func (r *Timer) NextOr(fail func()) bool

Package retry imports 6 packages (graph). Updated 2019-11-25. Refresh now. Tools for package owners.