func (s *ResumerSuite) TestResumerCalls(c *gc.C) { // Shorter interval and mock help to count // the resumer calls in a given timespan. testInterval := 10 * time.Millisecond resumer.SetInterval(testInterval) defer resumer.RestoreInterval() tr := &transactionResumerMock{[]time.Time{}} rr := resumer.NewResumer(tr) defer func() { c.Assert(rr.Stop(), gc.IsNil) }() time.Sleep(10 * testInterval) // Check that a numner of calls has happened with a time // difference somewhere between the interval and twice the // interval. A more precise time behavior cannot be // specified due to the load during the test. c.Assert(len(tr.timestamps) > 0, gc.Equals, true) for i := 1; i < len(tr.timestamps); i++ { diff := tr.timestamps[i].Sub(tr.timestamps[i-1]) c.Assert(diff >= testInterval, gc.Equals, true) c.Assert(diff <= 4*testInterval, gc.Equals, true) } }
func (s *ResumerSuite) TestResumerCalls(c *gc.C) { // Shorter interval and mock help to count // the resumer calls in a given timespan. testInterval := coretesting.ShortWait resumer.SetInterval(testInterval) defer resumer.RestoreInterval() rr := resumer.NewResumer(s.mockState) defer func() { c.Assert(rr.Stop(), gc.IsNil) }() time.Sleep(10 * testInterval) s.mockState.CheckTimestamps(c, testInterval) }
func (s *ResumerSuite) TestResumeTransactionsFailure(c *gc.C) { // Force the first call to ResumeTransactions() to fail, the // remaining returning no error. s.mockState.SetErrors(errors.New("boom!")) // Shorter interval and mock help to count // the resumer calls in a given timespan. testInterval := coretesting.ShortWait resumer.SetInterval(testInterval) defer resumer.RestoreInterval() rr := resumer.NewResumer(s.mockState) defer func() { c.Assert(rr.Stop(), gc.IsNil) }() // For 4 intervals between 2 and 3 calls should be made. time.Sleep(4 * testInterval) s.mockState.CheckNumCallsBetween(c, 2, 3) }