func waitAlarm(c *gc.C, clock *jujutesting.Clock) { select { case <-time.After(testing.LongWait): c.Fatalf("alarm never set") case <-clock.Alarms(): } }
func waitForClock(c *gc.C, clock *testing.Clock) { select { case <-clock.Alarms(): case <-time.After(coretesting.LongWait): c.Fatal("timed out waiting for clock") } }
// WaitAlarms waits until the supplied clock has sent count values on // its Alarms channel. func WaitAlarms(c *gc.C, clock *testing.Clock, count int) { timeout := time.After(jujutesting.LongWait) for i := 0; i < count; i++ { select { case <-timeout: c.Fatalf("never saw alarm %d", i) case <-clock.Alarms(): } } }
func waitAlarms(c *gc.C, clock *testing.Clock, count int) { timeout := time.After(coretesting.LongWait) for i := 0; i < count; i++ { select { case <-clock.Alarms(): case <-timeout: c.Fatalf("timed out waiting for %dth alarm set", i) } } }
func assertNextOp(c *gc.C, s *schedule.Schedule, clock *jujutesting.Clock, d time.Duration) { next := s.Next() c.Assert(next, gc.NotNil) if d > 0 { select { case <-next: c.Fatal("Next channel signalled too soon") default: } } // temporarily move time forward clock.Advance(d) defer clock.Advance(-d) select { case _, ok := <-next: c.Assert(ok, jc.IsTrue) // the time value is unimportant to us default: c.Fatal("Next channel not signalled") } }
// PrimeUnitStatusHistory will add count history elements, advancing the test clock by // one second for each entry. func PrimeUnitStatusHistory( c *gc.C, clock *testing.Clock, unit *Unit, statusVal status.Status, count, batchSize int, nextData func(int) map[string]interface{}, ) { globalKey := unit.globalKey() history, closer := unit.st.getCollection(statusesHistoryC) defer closer() historyW := history.Writeable() var data map[string]interface{} for i := 0; i < count; { var docs []interface{} for j := 0; j < batchSize && i < count; j++ { clock.Advance(time.Second) if nextData != nil { data = utils.EscapeKeys(nextData(i)) } docs = append(docs, &historicalStatusDoc{ Status: statusVal, StatusData: data, Updated: clock.Now().UnixNano(), GlobalKey: globalKey, }) // Seems like you can't increment two values in one loop i++ } err := historyW.Insert(docs...) c.Assert(err, jc.ErrorIsNil) } // Set the status for the unit itself. doc := statusDoc{ Status: statusVal, StatusData: data, Updated: clock.Now().UnixNano(), } buildTxn := updateStatusSource(unit.st, globalKey, doc) err := unit.st.run(buildTxn) c.Assert(err, jc.ErrorIsNil) }
func waitAndAdvance(c *gc.C, clock *testing.Clock, delta time.Duration) { waitForClock(c, clock) clock.Advance(delta) }
func assertReady(c *gc.C, s *schedule.Schedule, clock *jujutesting.Clock, expect ...interface{}) { ready := s.Ready(clock.Now()) c.Assert(ready, jc.DeepEquals, expect) }
func (s *pingerSuite) advanceClock(c *gc.C, clock *testing.Clock, delta time.Duration, count int) { for i := 0; i < count; i++ { clock.Advance(delta) } }