timetools

package module
v0.0.0-...-f3a7b8f Latest Latest
Warning

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

Go to latest
Published: Jun 19, 2017 License: Apache-2.0 Imports: 4 Imported by: 212

README

This repo is deprecated, functionality has moved to http://github.com/mailgun/holster (See Clock)

timetools

Go library with various time utilities used at Mailgun.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AdvanceTimeBy

func AdvanceTimeBy(st TimeProvider, d time.Duration)

AdvanceTimeBy simulates advancing time by some time.Duration d. This function panics if st is not the result of a call to SleepProvider.

Types

type FreezedTime

type FreezedTime struct {
	CurrentTime time.Time
}

FreezedTime is manually controlled time for use in tests.

func (*FreezedTime) After

func (t *FreezedTime) After(d time.Duration) <-chan time.Time

func (*FreezedTime) Sleep

func (t *FreezedTime) Sleep(d time.Duration)

func (*FreezedTime) UtcNow

func (t *FreezedTime) UtcNow() time.Time

type RFC2822Time

type RFC2822Time time.Time

We use RFC2822 format for timestamps everywhere ('Thu, 13 Oct 2011 18:02:00 GMT'), but by default Go's JSON package uses another format when decoding/encoding timestamps. That's why we declare our own timestamp type and implement its marshal/unmarshal methods so JSON package decodes/encodes it properly.

func NewRFC2822Time

func NewRFC2822Time(timestamp int64) RFC2822Time

func (RFC2822Time) GetBSON

func (t RFC2822Time) GetBSON() (interface{}, error)

func (RFC2822Time) IsZero

func (t RFC2822Time) IsZero() bool

func (RFC2822Time) MarshalJSON

func (t RFC2822Time) MarshalJSON() ([]byte, error)

func (*RFC2822Time) SetBSON

func (t *RFC2822Time) SetBSON(raw bson.Raw) error

func (RFC2822Time) String

func (t RFC2822Time) String() string

func (RFC2822Time) Unix

func (t RFC2822Time) Unix() int64

func (*RFC2822Time) UnmarshalJSON

func (t *RFC2822Time) UnmarshalJSON(s []byte) error

type RealTime

type RealTime struct {
}

RealTime is a real clock time, used in production.

func (*RealTime) After

func (*RealTime) After(d time.Duration) <-chan time.Time

func (*RealTime) Sleep

func (*RealTime) Sleep(d time.Duration)

func (*RealTime) UtcNow

func (*RealTime) UtcNow() time.Time

type TimeProvider

type TimeProvider interface {
	UtcNow() time.Time
	Sleep(time.Duration)
	After(time.Duration) <-chan time.Time
}

TimeProvider is an interface we use to mock time in tests.

func SleepProvider

func SleepProvider(currentTime time.Time) TimeProvider

SleepProvider returns a TimeProvider that has good fakes for time.Sleep and time.After. Both functions will behave as if time is frozen until you call AdvanceTimeBy, at which point any calls to time.Sleep that should return do return and any ticks from time.After that should happen do happen.

Jump to

Keyboard shortcuts

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