def test_keeps_new(self): watcher = scheduler.FailureWatcher() watcher.add('some_task', 'some_schedule', False) watcher.trim() self.assertEqual(len(watcher), 1)
def test_removes(self): watcher = scheduler.FailureWatcher() watcher.add('some_task', 'some_schedule', False) schedule_id, has_failure = watcher.pop('some_task') self.assertEqual(len(watcher), 0)
def test_time(self): watcher = scheduler.FailureWatcher() watcher.add('some_task', 'some_schedule', False) watched_task = watcher._watches['some_task'] self.assertTrue(time.time() - watched_task.timestamp < 1)
def test_found(self, mock_increment): watcher = scheduler.FailureWatcher() watcher.add('task_1', 'some_schedule', True) watcher.handle_failed_task(self.event) mock_increment.assert_called_once_with('some_schedule')
def test_not_found(self, mock_increment): watcher = scheduler.FailureWatcher() watcher.handle_failed_task(self.event) # did not try to fetch a result self.assertEqual(mock_increment.call_count, 0)
def test_can_retrieve(self): watcher = scheduler.FailureWatcher() watcher.add('some_task', 'some_schedule', False) schedule_id, has_failure = watcher.pop('some_task') self.assertEqual(schedule_id, 'some_schedule') self.assertFalse(has_failure)
def test_removes_old(self): watcher = scheduler.FailureWatcher() watcher._watches['some_task'] = watcher.WatchedTask( int(time.time()) - watcher.ttl - 1, 'some_schedule', False) watcher.trim() self.assertEqual(len(watcher), 0)
def test_has_failure(self, mock_result, mock_reset): watcher = scheduler.FailureWatcher() watcher.add('task_1', 'some_schedule', True) # this seems to be the only way to mock isinstance scheduler.isinstance = mock.MagicMock(return_value=False) try: watcher.handle_succeeded_task(self.event) mock_reset.assert_called_once_with('some_schedule') finally: del scheduler.isinstance
def test_rewatch(self, mock_result, mock_add): """ if a task's return value is an AsyncResult, that means it queued another task that we should now watch. """ mock_result.return_value.result.id = 'task_1' # this seems to be the only way to mock isinstance scheduler.isinstance = mock.MagicMock(return_value=True) try: watcher = scheduler.FailureWatcher() watcher._watches['task_1'] = watcher.WatchedTask( int(time.time()), 'some_schedule', False) watcher.handle_succeeded_task(self.event) mock_add.assert_called_once_with('task_1', 'some_schedule', False) finally: del scheduler.isinstance
def setUp(self): self.failure_watcher = scheduler.FailureWatcher() self.event_monitor = scheduler.EventMonitor(self.failure_watcher)
def test_event_monitor__init__(self, mock_thread__init__): failure_watcher = scheduler.FailureWatcher() event_monitor = scheduler.EventMonitor(failure_watcher) mock_thread__init__.assert_called_once_with() self.assertTrue(failure_watcher is event_monitor._failure_watcher)
def test_increments(self): watcher = scheduler.FailureWatcher() for i in range(1, 10): watcher.add('task-%d' % i, 'schedule-%d' % i, False) self.assertEqual(len(watcher), i)
def test_empty(self): watcher = scheduler.FailureWatcher() self.assertEqual(len(watcher), 0)