mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-29 04:55:31 +00:00
tstime: add Since method (#8622)
Updates #8463 Signed-off-by: Claire Wang <claire@tailscale.com>
This commit is contained in:
parent
60e5761d60
commit
0573f6e953
@ -303,6 +303,11 @@ func (c *Clock) AfterFunc(d time.Duration, f func()) tstime.TimerController {
|
||||
return t
|
||||
}
|
||||
|
||||
// Since subtracts specified duration from Now().
|
||||
func (c *Clock) Since(t time.Time) time.Duration {
|
||||
return c.Now().Sub(t)
|
||||
}
|
||||
|
||||
// eventHandler offers a common interface for Timer and Ticker events to avoid
|
||||
// code duplication in eventManager.
|
||||
type eventHandler interface {
|
||||
|
@ -2437,3 +2437,47 @@ type testStep struct {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestSince(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
start time.Time
|
||||
since time.Time
|
||||
want time.Duration
|
||||
}{
|
||||
{
|
||||
name: "positive",
|
||||
start: time.Unix(12345, 1000),
|
||||
since: time.Unix(11111, 1000),
|
||||
want: 1234 * time.Second,
|
||||
},
|
||||
{
|
||||
name: "negative",
|
||||
start: time.Unix(12345, 1000),
|
||||
since: time.Unix(15436, 1000),
|
||||
want: -3091 * time.Second,
|
||||
},
|
||||
{
|
||||
name: "zero",
|
||||
start: time.Unix(12345, 1000),
|
||||
since: time.Unix(12345, 1000),
|
||||
want: 0,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
clock := NewClock(ClockOpts{
|
||||
Start: tt.start,
|
||||
})
|
||||
got := clock.Since(tt.since)
|
||||
if got != tt.want {
|
||||
t.Errorf("Since duration %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -84,6 +84,9 @@ type Clock interface {
|
||||
// by this Clock. When the ticker expires, it will call the provided func.
|
||||
// It follows the semantics of time.AfterFunc.
|
||||
AfterFunc(d time.Duration, f func()) TimerController
|
||||
// Since returns the time elapsed since t.
|
||||
// It follows the semantics of time.Since.
|
||||
Since(t time.Time) time.Duration
|
||||
}
|
||||
|
||||
// TickerController offers the receivers of a time.Ticker to ensure
|
||||
@ -135,3 +138,8 @@ func (StdClock) NewTicker(d time.Duration) (TickerController, <-chan time.Time)
|
||||
func (StdClock) AfterFunc(d time.Duration, f func()) TimerController {
|
||||
return time.AfterFunc(d, f)
|
||||
}
|
||||
|
||||
// Since calls time.Since.
|
||||
func (StdClock) Since(t time.Time) time.Duration {
|
||||
return time.Since(t)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user