def test_cleanup_inconsistent_task(self, notify, active_tasks, considered_jobs, reapable_jobs, running_tasks, waiting_tasks, mocker): tm = TaskManager() tm.get_running_tasks = mocker.Mock(return_value=(running_tasks, waiting_tasks)) tm.get_active_tasks = mocker.Mock(return_value=active_tasks) tm.cleanup_inconsistent_celery_tasks() for j in considered_jobs: if j not in reapable_jobs: j.save.assert_not_called() assert notify.call_count == 4 notify.assert_has_calls( [mock.call(j, 'failed') for j in reapable_jobs], any_order=True) for j in reapable_jobs: j.websocket_emit_status.assert_called_once_with('failed') assert j.status == 'failed' assert j.job_explanation == ( 'Task was marked as running in Tower but was not present in Celery, so it has been marked as failed.' )
def test_multiple_active_instances_sanity_check(self, inspect_mock, *args): class MockInspector: pass mock_inspector = MockInspector() mock_inspector.active = lambda: { 'celery@host1': [], 'celery@host2': [] } inspect_mock.return_value = mock_inspector tm = TaskManager() active_task_queues, queues = tm.get_active_tasks() assert 'host1' in queues assert 'host2' in queues