Documentation ¶
Overview ¶
Package tstest provides utilities for use in unit tests.
Index ¶
- func FixLogs(t *testing.T)
- func MinAllocsPerRun(t *testing.T, target uint64, f func()) error
- func PanicOnLog()
- func ResourceCheck(tb testing.TB)
- func UnfixLogs(t *testing.T)
- func WaitFor(maxWait time.Duration, try func() error) error
- func WhileTestRunningLogger(t testing.TB) logger.Logf
- type Clock
- type LogLineTracker
- type MemLogger
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func MinAllocsPerRun ¶
MinAllocsPerRun asserts that f can run with no more than target allocations. It runs f up to 1000 times or 5s, whichever happens first. If f has executed more than target allocations on every run, it returns a non-nil error.
MinAllocsPerRun sets GOMAXPROCS to 1 during its measurement and restores it before returning.
func PanicOnLog ¶
func PanicOnLog()
PanicOnLog modifies the standard library log package's default output to an io.Writer that panics, to root out code that's not plumbing their logging through explicit tailscale.com/logger.Logf paths.
func ResourceCheck ¶
Types ¶
type Clock ¶
type Clock struct { // Start is the first value returned by Now. Start time.Time // Step is how much to advance with each Now call. Step time.Duration // Present is the time that the next Now call will receive. Present time.Time sync.Mutex }
Clock is a testing clock that advances every time its Now method is called, beginning at Start.
The zero value starts virtual time at an arbitrary value recorded in Start on the first call to Now, and time never advances.
type LogLineTracker ¶
type LogLineTracker struct {
// contains filtered or unexported fields
}
LogLineTracker is a logger that tracks which log format patterns it's seen and can report which expected ones were not seen later.
func NewLogLineTracker ¶
func NewLogLineTracker(logf logger.Logf, expectedFormatStrings []string) *LogLineTracker
NewLogLineTracker produces a LogLineTracker wrapping a given logf that tracks whether expectedFormatStrings were seen.
func (*LogLineTracker) Check ¶
func (lt *LogLineTracker) Check() []string
Check returns which format strings haven't been logged yet.
func (*LogLineTracker) Close ¶
func (lt *LogLineTracker) Close()
Close closes lt. After calling Close, calls to Logf become no-ops.
func (*LogLineTracker) Logf ¶
func (lt *LogLineTracker) Logf(format string, args ...any)
Logf logs to its underlying logger and also tracks that the given format pattern has been seen.
func (*LogLineTracker) Reset ¶
func (lt *LogLineTracker) Reset()
Reset forgets everything that it's seen.
Directories ¶
Path | Synopsis |
---|---|
Package integration contains Tailscale integration tests.
|
Package integration contains Tailscale integration tests. |
testcontrol
Package testcontrol contains a minimal control plane server for testing purposes.
|
Package testcontrol contains a minimal control plane server for testing purposes. |
vms
Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images.
|
Package vms does VM-based integration/functional tests by using qemu and a bank of pre-made VM images. |
Package iosdeps is a just a list of the packages we import on iOS, to let us test that our transitive closure of dependencies on iOS doesn't accidentally grow too large, as we've historically been memory constrained there.
|
Package iosdeps is a just a list of the packages we import on iOS, to let us test that our transitive closure of dependencies on iOS doesn't accidentally grow too large, as we've historically been memory constrained there. |
Package jsdeps is a just a list of the packages we import in the JavaScript/WASM build, to let us test that our transitive closure of dependencies doesn't accidentally grow too large, since binary size is more of a concern.
|
Package jsdeps is a just a list of the packages we import in the JavaScript/WASM build, to let us test that our transitive closure of dependencies doesn't accidentally grow too large, since binary size is more of a concern. |
Package natlab lets us simulate different types of networks all in-memory without running VMs or requiring root, etc.
|
Package natlab lets us simulate different types of networks all in-memory without running VMs or requiring root, etc. |