def test_periodic_tasks_idle_calculation(self): fake_time = datetime.datetime(3000, 1, 1) timeutils.set_time_override(fake_time) class Manager(periodic_task.PeriodicTasks): __metaclass__ = periodic_task._PeriodicTasksMeta @periodic_task.periodic_task(spacing=10) def bar(self, context): return 'bar' m = Manager() # Ensure initial values are correct self.assertEqual(1, len(m._periodic_tasks)) task_name, task = m._periodic_tasks[0] # Test task values self.assertEqual('bar', task_name) self.assertEqual(10, task._periodic_spacing) self.assertEqual(True, task._periodic_enabled) self.assertEqual(False, task._periodic_external_ok) self.assertEqual(False, task._periodic_immediate) self.assertNotEqual(None, task._periodic_last_run) # Test the manager's representation of those values self.assertEqual(10, m._periodic_spacing[task_name]) self.assertNotEqual(None, m._periodic_last_run[task_name]) timeutils.advance_time_delta(datetime.timedelta(seconds=5)) m.run_periodic_tasks(None) timeutils.advance_time_delta(datetime.timedelta(seconds=5)) idle = m.run_periodic_tasks(None) self.assertAlmostEqual(10, idle, 1)
def test_advance_time_delta(self): timeutils.set_time_override(self.one_minute_before) timeutils.advance_time_delta(datetime.timedelta(seconds=60)) self.assertEqual(timeutils.utcnow(), self.skynet_self_aware_time)