def test_interval_adjustment(self): """Ensure the interval is adjusted to account for task duration.""" self.num_runs = 3 now = datetime.datetime.utcnow() second = datetime.timedelta(seconds=1) smidgen = datetime.timedelta(microseconds=10000) timeoverrides = [now, now + second - smidgen, now, now + second + second, now, now + second + smidgen] m = mox.Mox() m.StubOutWithMock(greenthread, 'sleep') greenthread.sleep(mox.IsAlmost(0.02)) greenthread.sleep(mox.IsAlmost(0.0)) greenthread.sleep(mox.IsAlmost(0.0)) m.ReplayAll() try: timeutils.set_time_override(timeoverrides) timer = loopingcall.FixedIntervalLoopingCall(self._wait_for_zero) timer.start(interval=1.01).wait() finally: timeutils.clear_time_override() m.UnsetStubs() m.VerifyAll()
def test_interval_adjustment(self): """Ensure the interval is adjusted to account for task duration.""" self.num_runs = 3 now = time.time() second = 1 smidgen = 0.01 m = mox.Mox() m.StubOutWithMock(greenthread, 'sleep') greenthread.sleep(mox.IsAlmost(0.02)) greenthread.sleep(mox.IsAlmost(0.0)) greenthread.sleep(mox.IsAlmost(0.0)) m.StubOutWithMock(loopingcall, '_ts') loopingcall._ts().AndReturn(now) loopingcall._ts().AndReturn(now + second - smidgen) loopingcall._ts().AndReturn(now) loopingcall._ts().AndReturn(now + second + second) loopingcall._ts().AndReturn(now) loopingcall._ts().AndReturn(now + second + smidgen) loopingcall._ts().AndReturn(now) m.ReplayAll() timer = loopingcall.FixedIntervalLoopingCall(self._wait_for_zero) timer.start(interval=1.01).wait() m.UnsetStubs() m.VerifyAll()
def add_timer(self, interval, callback, initial_delay=None, *args, **kwargs): pulse = loopingcall.FixedIntervalLoopingCall(callback, *args, **kwargs) pulse.start(interval=interval, initial_delay=initial_delay) self.timers.append(pulse)
def test_repeat(self): self.num_runs = 2 timer = loopingcall.FixedIntervalLoopingCall(self._wait_for_zero) self.assertFalse(timer.start(interval=0.5).wait())
def test_return_false(self): def _raise_it(): raise loopingcall.LoopingCallDone(False) timer = loopingcall.FixedIntervalLoopingCall(_raise_it) self.assertFalse(timer.start(interval=0.5).wait())