testutil

package
Version: v3.5.0 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2021 License: Apache-2.0 Imports: 15 Imported by: 8

Documentation

Overview

Package testutil provides test utility functions.

Index

Constants

This section is empty.

Variables

View Source
var (
	ApplyTimeout   = time.Second
	RequestTimeout = 3 * time.Second
)

Functions

func AssertEqual

func AssertEqual(t *testing.T, e, a interface{}, msg ...string)

func AssertFalse

func AssertFalse(t *testing.T, v bool, msg ...string)

func AssertNil

func AssertNil(t *testing.T, v interface{})

func AssertNotNil

func AssertNotNil(t *testing.T, v interface{})

func AssertTrue

func AssertTrue(t *testing.T, v bool, msg ...string)

func CheckAfterTest

func CheckAfterTest(d time.Duration) error

CheckAfterTest returns an error if AfterTest would fail with an error. Waits for go-routines shutdown for 'd'.

func CheckLeakedGoroutine

func CheckLeakedGoroutine() bool

CheckLeakedGoroutine verifies tests do not leave any leaky goroutines. It returns true when there are goroutines still running(leaking) after all tests.

import "go.etcd.io/etcd/client/pkg/v3/testutil"

func TestMain(m *testing.M) {
	testutil.MustTestMainWithLeakDetection(m)
}

func TestSample(t *testing.T) {
	RegisterLeakDetection(t)
	...
}

func ExitInShortMode

func ExitInShortMode(reason string)

ExitInShortMode closes the current process (with 0) if the short test mode detected.

To be used in Test-main, where test context (testing.TB) is not available.

Requires custom env-variable (GOLANG_TEST_SHORT) apart of `go test --short flag`.

func FatalStack

func FatalStack(t *testing.T, s string)

FatalStack helps to fatal the test and print out the stacks of all running goroutines.

func MustCheckLeakedGoroutine

func MustCheckLeakedGoroutine()

func MustNewURL

func MustNewURL(t *testing.T, s string) *url.URL

func MustNewURLs

func MustNewURLs(t *testing.T, urls []string) []url.URL

func MustTestMainWithLeakDetection

func MustTestMainWithLeakDetection(m *testing.M)

MustTestMainWithLeakDetection expands standard m.Run with leaked goroutines detection.

func Poll

func Poll(interval time.Duration, timeout time.Duration, condition ConditionFunc) (bool, error)

Poll calls a condition function repeatedly on a polling interval until it returns true, returns an error or the timeout is reached. If the condition function returns true or an error before the timeout, Poll immediately returns with the true value or the error. If the timeout is exceeded, Poll returns false.

func RegisterLeakDetection

func RegisterLeakDetection(t TB)

RegisterLeakDetection is a convenient way to register before-and-after code to a test. If you execute RegisterLeakDetection, you don't need to explicitly register AfterTest.

func SkipTestIfShortMode

func SkipTestIfShortMode(t TB, reason string)

func WaitSchedule

func WaitSchedule()

WaitSchedule briefly sleeps in order to invoke the go scheduler. TODO: improve this when we are able to know the schedule or status of target go-routine.

Types

type Action

type Action struct {
	Name   string
	Params []interface{}
}

type ConditionFunc

type ConditionFunc func() (bool, error)

ConditionFunc returns true when a condition is met.

type PauseableHandler

type PauseableHandler struct {
	Next http.Handler
	// contains filtered or unexported fields
}

func (*PauseableHandler) Pause

func (ph *PauseableHandler) Pause()

func (*PauseableHandler) Resume

func (ph *PauseableHandler) Resume()

func (*PauseableHandler) ServeHTTP

func (ph *PauseableHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type Recorder

type Recorder interface {
	// Record publishes an Action (e.g., function call) which will
	// be reflected by Wait() or Chan()
	Record(a Action)
	// Wait waits until at least n Actions are available or returns with error
	Wait(n int) ([]Action, error)
	// Action returns immediately available Actions
	Action() []Action
	// Chan returns the channel for actions published by Record
	Chan() <-chan Action
}

func NewRecorderStream

func NewRecorderStream() Recorder

func NewRecorderStreamWithWaitTimout

func NewRecorderStreamWithWaitTimout(waitTimeout time.Duration) Recorder

type RecorderBuffered

type RecorderBuffered struct {
	sync.Mutex
	// contains filtered or unexported fields
}

RecorderBuffered appends all Actions to a slice

func (*RecorderBuffered) Action

func (r *RecorderBuffered) Action() []Action

func (*RecorderBuffered) Chan

func (r *RecorderBuffered) Chan() <-chan Action

func (*RecorderBuffered) Record

func (r *RecorderBuffered) Record(a Action)

func (*RecorderBuffered) Wait

func (r *RecorderBuffered) Wait(n int) (acts []Action, err error)

type TB

type TB interface {
	Cleanup(func())
	Error(args ...interface{})
	Errorf(format string, args ...interface{})
	Fail()
	FailNow()
	Failed() bool
	Fatal(args ...interface{})
	Fatalf(format string, args ...interface{})
	Logf(format string, args ...interface{})
	Name() string
	TempDir() string
	Helper()
	Skip(args ...interface{})
}

TB is a subset of methods of testing.TB interface. We cannot implement testing.TB due to protection, so we expose this simplified interface.

func NewTestingTBProthesis

func NewTestingTBProthesis(name string) (tb TB, closef func())

NewTestingTBProthesis creates a fake variant of testing.TB implementation. It's supposed to be used in contexts were real testing.T is not provided, e.g. in 'examples'.

The `closef` goroutine should get executed when tb will not be needed any longer.

The provided implementation is NOT thread safe (Cleanup() method).

Jump to

Keyboard shortcuts

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