def test_one_minute_tick_after_60_seconds(self): seconds_clock = SynchronizingClock(max_ticks=60) minutes_clock = SynchronizingClock() seconds_clock.add_tick_listener( InterClockSynchronization(minutes_clock, granularity=60)) while minutes_clock.current_tick < 1: seconds_clock.tick() self.assertEqual(60, seconds_clock.current_tick) self.assertEqual(1, minutes_clock.current_tick)
class ClockTestCase(unittest.TestCase): def setUp(self): self.clock = SynchronizingClock(max_ticks=2) def test_synchronization(self): self.tick_listener = Mock() self.tick_listener.waiting_for_tick = Mock(spec=_Event) self.clock.add_tick_listener(self.tick_listener) self.clock.tick() self.tick_listener.waiting_for_tick.wait.assert_called_once_with() self.tick_listener.notify_new_tick.assert_called_once_with()
def test_for_handling_imprecision(self): seconds_clock = SynchronizingClock(max_ticks=3600) minutes_clock = SynchronizingClock() hours_clock = SynchronizingClock() seconds_clock.add_tick_listener( InterClockSynchronization(minutes_clock, granularity=60)) minutes_clock.add_tick_listener( InterClockSynchronization( hours_clock, granularity=60, precision=lambda granularity: granularity - 5)) while hours_clock.current_tick < 1: seconds_clock.tick() self.assertEqual(3300, seconds_clock.current_tick) self.assertEqual(55, minutes_clock.current_tick) self.assertEqual(1, hours_clock.current_tick)
class ClockTestCase(unittest.TestCase): def test_synchronization(self): self.clock = SynchronizingClock(max_ticks=2) self.tick_listener = Mock() self.clock.add_tick_listener(self.tick_listener) self.clock.tick() self.tick_listener.wait_for_tick.assert_called_once_with() self.tick_listener.notify_new_tick.assert_called_once_with() def test_ticks_until_stopped(self): self.clock = SynchronizingClock() self.clock.tick() self.clock.tick() self.clock.issue_ticks = False self.clock.tick() self.assertEqual(self.clock.current_tick, 2)
def test_non_blocking_for_actors(self): seconds_clock = SynchronizingClock(max_ticks=3600) minutes_clock = SynchronizingClock() hours_clock = SynchronizingClock() seconds_clock.add_tick_listener(InterClockSynchronization(minutes_clock, granularity=60)) minutes_clock.add_tick_listener(InterClockSynchronization(hours_clock, granularity=60)) actor = TaskQueueActor(0, minutes_clock) example_workflow = ExampleWorkflow() actor.allocate_task(example_workflow.task_a, example_workflow) actor.initiate_shutdown() actor.start() while hours_clock.current_tick < 1: seconds_clock.tick() self.assertEqual(actor.last_task.finish_tick, 2) self.assertEqual(3600, seconds_clock.current_tick) self.assertEqual(60, minutes_clock.current_tick) self.assertEqual(1, hours_clock.current_tick)