mirror of
https://github.com/coder/coder.git
synced 2025-07-12 00:14:10 +00:00
44 lines
2.1 KiB
Go
44 lines
2.1 KiB
Go
// Package clock is a library for testing time related code. It exports an interface Clock that
|
|
// mimics the standard library time package functions. In production, an implementation that calls
|
|
// thru to the standard library is used. In testing, a Mock clock is used to precisely control and
|
|
// intercept time functions.
|
|
package clock
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
)
|
|
|
|
type Clock interface {
|
|
// NewTicker returns a new Ticker containing a channel that will send the current time on the
|
|
// channel after each tick. The period of the ticks is specified by the duration argument. The
|
|
// ticker will adjust the time interval or drop ticks to make up for slow receivers. The
|
|
// duration d must be greater than zero; if not, NewTicker will panic. Stop the ticker to
|
|
// release associated resources.
|
|
NewTicker(d time.Duration, tags ...string) *Ticker
|
|
// TickerFunc is a convenience function that calls f on the interval d until either the given
|
|
// context expires or f returns an error. Callers may call Wait() on the returned Waiter to
|
|
// wait until this happens and obtain the error. The duration d must be greater than zero; if
|
|
// not, TickerFunc will panic.
|
|
TickerFunc(ctx context.Context, d time.Duration, f func() error, tags ...string) Waiter
|
|
// NewTimer creates a new Timer that will send the current time on its channel after at least
|
|
// duration d.
|
|
NewTimer(d time.Duration, tags ...string) *Timer
|
|
// AfterFunc waits for the duration to elapse and then calls f in its own goroutine. It returns
|
|
// a Timer that can be used to cancel the call using its Stop method. The returned Timer's C
|
|
// field is not used and will be nil.
|
|
AfterFunc(d time.Duration, f func(), tags ...string) *Timer
|
|
|
|
// Now returns the current local time.
|
|
Now(tags ...string) time.Time
|
|
// Since returns the time elapsed since t. It is shorthand for Clock.Now().Sub(t).
|
|
Since(t time.Time, tags ...string) time.Duration
|
|
// Until returns the duration until t. It is shorthand for t.Sub(Clock.Now()).
|
|
Until(t time.Time, tags ...string) time.Duration
|
|
}
|
|
|
|
// Waiter can be waited on for an error.
|
|
type Waiter interface {
|
|
Wait(tags ...string) error
|
|
}
|