// 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 assertReady(c *gc.C, s *schedule.Schedule, clock *jujutesting.Clock, expect ...interface{}) { ready := s.Ready(clock.Now()) c.Assert(ready, jc.DeepEquals, expect) }