Exemple #1
0
    def test_keeps_new(self):
        watcher = scheduler.FailureWatcher()
        watcher.add('some_task', 'some_schedule', False)

        watcher.trim()

        self.assertEqual(len(watcher), 1)
Exemple #2
0
    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)
Exemple #3
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)
Exemple #4
0
    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')
Exemple #5
0
    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)
Exemple #6
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)
Exemple #7
0
    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)
Exemple #8
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
Exemple #9
0
    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
Exemple #10
0
 def setUp(self):
     self.failure_watcher = scheduler.FailureWatcher()
     self.event_monitor = scheduler.EventMonitor(self.failure_watcher)
Exemple #11
0
 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)
Exemple #12
0
    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)
Exemple #13
0
    def test_empty(self):
        watcher = scheduler.FailureWatcher()

        self.assertEqual(len(watcher), 0)