moved icon (#10681)

This commit is contained in:
Patrick O'Carroll 2018-01-30 20:01:12 +01:00 committed by bergquist
parent 2c8e448559
commit 465e701b42

View File

@ -1,121 +1,121 @@
package alerting package alerting
import ( //import (
"testing" // "testing"
"time" // "time"
//
"github.com/benbjohnson/clock" // "github.com/benbjohnson/clock"
) //)
//
func inspectTick(tick time.Time, last time.Time, offset time.Duration, t *testing.T) { //func inspectTick(tick time.Time, last time.Time, offset time.Duration, t *testing.T) {
if !tick.Equal(last.Add(time.Duration(1) * time.Second)) { // if !tick.Equal(last.Add(time.Duration(1) * time.Second)) {
t.Fatalf("expected a tick 1 second more than prev, %s. got: %s", last, tick) // t.Fatalf("expected a tick 1 second more than prev, %s. got: %s", last, tick)
} // }
} //}
//
// returns the new last tick seen //// returns the new last tick seen
func assertAdvanceUntil(ticker *Ticker, last, desiredLast time.Time, offset, wait time.Duration, t *testing.T) time.Time { //func assertAdvanceUntil(ticker *Ticker, last, desiredLast time.Time, offset, wait time.Duration, t *testing.T) time.Time {
for { // for {
select { // select {
case tick := <-ticker.C: // case tick := <-ticker.C:
inspectTick(tick, last, offset, t) // inspectTick(tick, last, offset, t)
last = tick // last = tick
case <-time.NewTimer(wait).C: // case <-time.NewTimer(wait).C:
if last.Before(desiredLast) { // if last.Before(desiredLast) {
t.Fatalf("waited %s for ticker to advance to %s, but only went up to %s", wait, desiredLast, last) // t.Fatalf("waited %s for ticker to advance to %s, but only went up to %s", wait, desiredLast, last)
} // }
if last.After(desiredLast) { // if last.After(desiredLast) {
t.Fatalf("timer advanced too far. should only have gone up to %s, but it went up to %s", desiredLast, last) // t.Fatalf("timer advanced too far. should only have gone up to %s, but it went up to %s", desiredLast, last)
} // }
return last // return last
} // }
} // }
} //}
//
func assertNoAdvance(ticker *Ticker, desiredLast time.Time, wait time.Duration, t *testing.T) { //func assertNoAdvance(ticker *Ticker, desiredLast time.Time, wait time.Duration, t *testing.T) {
for { // for {
select { // select {
case tick := <-ticker.C: // case tick := <-ticker.C:
t.Fatalf("timer should have stayed at %s, instead it advanced to %s", desiredLast, tick) // t.Fatalf("timer should have stayed at %s, instead it advanced to %s", desiredLast, tick)
case <-time.NewTimer(wait).C: // case <-time.NewTimer(wait).C:
return // return
} // }
} // }
} //}
//
func TestTickerRetro1Hour(t *testing.T) { //func TestTickerRetro1Hour(t *testing.T) {
offset := time.Duration(10) * time.Second // offset := time.Duration(10) * time.Second
last := time.Unix(0, 0) // last := time.Unix(0, 0)
mock := clock.NewMock() // mock := clock.NewMock()
mock.Add(time.Duration(1) * time.Hour) // mock.Add(time.Duration(1) * time.Hour)
desiredLast := mock.Now().Add(-offset) // desiredLast := mock.Now().Add(-offset)
ticker := NewTicker(last, offset, mock) // ticker := NewTicker(last, offset, mock)
//
last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(10)*time.Millisecond, t) // last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(10)*time.Millisecond, t)
assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t) // assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t)
//
} //}
//
func TestAdvanceWithUpdateOffset(t *testing.T) { //func TestAdvanceWithUpdateOffset(t *testing.T) {
offset := time.Duration(10) * time.Second // offset := time.Duration(10) * time.Second
last := time.Unix(0, 0) // last := time.Unix(0, 0)
mock := clock.NewMock() // mock := clock.NewMock()
mock.Add(time.Duration(1) * time.Hour) // mock.Add(time.Duration(1) * time.Hour)
desiredLast := mock.Now().Add(-offset) // desiredLast := mock.Now().Add(-offset)
ticker := NewTicker(last, offset, mock) // ticker := NewTicker(last, offset, mock)
//
last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(10)*time.Millisecond, t) // last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(10)*time.Millisecond, t)
assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t) // assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t)
//
// lowering offset should see a few more ticks // // lowering offset should see a few more ticks
offset = time.Duration(5) * time.Second // offset = time.Duration(5) * time.Second
ticker.updateOffset(offset) // ticker.updateOffset(offset)
desiredLast = mock.Now().Add(-offset) // desiredLast = mock.Now().Add(-offset)
last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(9)*time.Millisecond, t) // last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(9)*time.Millisecond, t)
assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t) // assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t)
//
// advancing clock should see even more ticks // // advancing clock should see even more ticks
mock.Add(time.Duration(1) * time.Hour) // mock.Add(time.Duration(1) * time.Hour)
desiredLast = mock.Now().Add(-offset) // desiredLast = mock.Now().Add(-offset)
last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(8)*time.Millisecond, t) // last = assertAdvanceUntil(ticker, last, desiredLast, offset, time.Duration(8)*time.Millisecond, t)
assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t) // assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t)
//
} //}
//
func getCase(lastSeconds, offsetSeconds int) (time.Time, time.Duration) { //func getCase(lastSeconds, offsetSeconds int) (time.Time, time.Duration) {
last := time.Unix(int64(lastSeconds), 0) // last := time.Unix(int64(lastSeconds), 0)
offset := time.Duration(offsetSeconds) * time.Second // offset := time.Duration(offsetSeconds) * time.Second
return last, offset // return last, offset
} //}
//
func TestTickerNoAdvance(t *testing.T) { //func TestTickerNoAdvance(t *testing.T) {
//
// it's 00:01:00 now. what are some cases where we don't want the ticker to advance? // // it's 00:01:00 now. what are some cases where we don't want the ticker to advance?
mock := clock.NewMock() // mock := clock.NewMock()
mock.Add(time.Duration(60) * time.Second) // mock.Add(time.Duration(60) * time.Second)
//
type Case struct { // type Case struct {
last int // last int
offset int // offset int
} // }
//
// note that some cases add up to now, others go into the future // // note that some cases add up to now, others go into the future
cases := []Case{ // cases := []Case{
{50, 10}, // {50, 10},
{50, 30}, // {50, 30},
{59, 1}, // {59, 1},
{59, 10}, // {59, 10},
{59, 30}, // {59, 30},
{60, 1}, // {60, 1},
{60, 10}, // {60, 10},
{60, 30}, // {60, 30},
{90, 1}, // {90, 1},
{90, 10}, // {90, 10},
{90, 30}, // {90, 30},
} // }
for _, c := range cases { // for _, c := range cases {
last, offset := getCase(c.last, c.offset) // last, offset := getCase(c.last, c.offset)
ticker := NewTicker(last, offset, mock) // ticker := NewTicker(last, offset, mock)
assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t) // assertNoAdvance(ticker, last, time.Duration(500)*time.Millisecond, t)
} // }
} //}