retry

package
v0.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2017 License: MPL-2.0 Imports: 6 Imported by: 0

Documentation

Overview

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func Run

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

func RunWith

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

Types

type Counter

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

func ThreeTimes() *Counter

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

func (*Counter) NextOr

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

type Failer

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

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

R provides context for the retryer.

func (*R) Check

func (r *R) Check(err error)

func (*R) Error

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

func (*R) FailNow

func (r *R) FailNow()

func (*R) Fatal

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

func (*R) Fatalf

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

type Retryer

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

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 TwoSeconds

func TwoSeconds() *Timer

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

func (*Timer) NextOr

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL