Documentation ¶
Overview ¶
Package mclock is a wrapper for a monotonic clock source
Index ¶
- type AbsTime
- type Clock
- type Event
- type Simulated
- func (s *Simulated) ActiveTimers() int
- func (s *Simulated) After(d time.Duration) <-chan time.Time
- func (s *Simulated) AfterFunc(d time.Duration, do func()) Event
- func (s *Simulated) Now() AbsTime
- func (s *Simulated) Run(d time.Duration)
- func (s *Simulated) Sleep(d time.Duration)
- func (s *Simulated) WaitForTimers(n int)
- type SimulatedEvent
- type System
- type SystemEvent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Clock ¶ added in v1.8.14
type Clock interface { Now() AbsTime Sleep(time.Duration) After(time.Duration) <-chan time.Time AfterFunc(d time.Duration, f func()) Event }
Clock interface makes it possible to replace the monotonic system clock with a simulated clock.
type Event ¶ added in v1.9.2
type Event interface {
Cancel() bool
}
Event represents a cancellable event returned by AfterFunc
type Simulated ¶ added in v1.8.14
type Simulated struct {
// contains filtered or unexported fields
}
Simulated implements a virtual Clock for reproducible time-sensitive tests. It simulates a scheduler on a virtual timescale where actual processing takes zero time.
The virtual clock doesn't advance on its own, call Run to advance it and execute timers. Since there is no way to influence the Go scheduler, testing timeout behaviour involving goroutines needs special care. A good way to test such timeouts is as follows: First perform the action that is supposed to time out. Ensure that the timer you want to test is created. Then run the clock until after the timeout. Finally observe the effect of the timeout using a channel or semaphore.
func (*Simulated) ActiveTimers ¶ added in v1.8.14
func (*Simulated) Run ¶ added in v1.8.14
Run moves the clock by the given duration, executing all timers before that duration.
func (*Simulated) WaitForTimers ¶ added in v1.8.14
type SimulatedEvent ¶ added in v1.9.2
type SimulatedEvent struct {
// contains filtered or unexported fields
}
SimulatedEvent implements Event for a virtual clock.
func (*SimulatedEvent) Cancel ¶ added in v1.9.2
func (e *SimulatedEvent) Cancel() bool
Cancel implements Event.
type System ¶ added in v1.8.14
type System struct{}
System implements Clock using the system clock.
type SystemEvent ¶ added in v1.9.2
SystemEvent implements Event using time.Timer.
func (*SystemEvent) Cancel ¶ added in v1.9.2
func (e *SystemEvent) Cancel() bool
Cancel implements Event.