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