...
Package testutil
Overview ▹
Index ▹
func AfterTest ¶
func AfterTest(t *testing.T)
AfterTest is meant to run in a defer that executes after a test completes. It will detect common goroutine leaks, retrying in case there are goroutines not synchronously torn down, and fail the test if any goroutines are stuck.
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.
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 "github.com/coreos/etcd/pkg/testutil"
func TestMain(m *testing.M) {
v := m.Run()
if v == 0 && testutil.CheckLeakedGoroutine() {
os.Exit(1)
}
os.Exit(v)
}
func TestSample(t *testing.T) {
defer testutil.AfterTest(t)
...
}
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 MustNewURL ¶
func MustNewURL(t *testing.T, s string) *url.URL
func MustNewURLs ¶
func MustNewURLs(t *testing.T, urls []string) []url.URL
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.
type Action ¶
type Action struct {
Name string
Params []interface{}
}
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
type RecorderBuffered ¶
RecorderBuffered appends all Actions to a slice
type RecorderBuffered struct {
sync.Mutex
// contains filtered or unexported fields
}
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)
ActiveGo 1.8