Esempio n. 1
0
    def test_task_prerun_canceling(self, refreshStatus, request):
        task = mock.MagicMock()
        task.request.jobInfoSpec = self.headers['jobInfoSpec']
        task.request.parent_id = None

        validation_error = {'field': 'status', 'message': 'invalid state'}
        r = request.return_value
        r.raise_for_status.side_effect = [MockHTTPError(400, validation_error)]

        refreshStatus.return_value = JobStatus.CANCELING

        gw_task_prerun(task=task)

        refreshStatus.assert_called_once()
        self.assertEqual(request.call_args_list[0][1]['data']['status'],
                         JobStatus.RUNNING)

        # Now try with QUEUED
        request.reset_mock()
        refreshStatus.reset_mock()
        r.raise_for_status.side_effect = [None]
        refreshStatus.return_value = JobStatus.QUEUED

        gw_task_prerun(task=task)

        refreshStatus.assert_not_called()
        self.assertEqual(request.call_args_list[0][1]['data']['status'],
                         JobStatus.RUNNING)
Esempio n. 2
0
    def test_task_success_canceling(self, refreshStatus, request, is_revoked):
        task = mock.MagicMock()
        task.request.jobInfoSpec = self.headers['jobInfoSpec']
        task.request.parent_id = None

        validation_error = {'field': 'status', 'message': 'invalid'}
        r = request.return_value
        r.raise_for_status.side_effect = [
            None, MockHTTPError(400, validation_error)
        ]
        refreshStatus.return_value = JobStatus.CANCELING
        is_revoked.return_value = True

        gw_task_prerun(task)
        gw_task_success(sender=task)

        # We where in the canceling state so we should move into CANCELED
        refreshStatus.assert_called_once()
        self.assertEqual(request.call_args_list[1][1]['data']['status'],
                         JobStatus.CANCELED)

        # Now try with RUNNING
        request.reset_mock()
        is_revoked.return_value = False
        refreshStatus.reset_mock()
        r.raise_for_status.side_effect = [None, None]

        gw_task_prerun(task)
        gw_task_success(sender=task)

        # We should move into SUCCESS
        refreshStatus.assert_not_called()
        self.assertEqual(request.call_args_list[1][1]['data']['status'],
                         JobStatus.SUCCESS)
Esempio n. 3
0
    def test_task_prerun(self, jm):
        task = mock.MagicMock()
        task.request.jobInfoSpec = self.headers['jobInfoSpec']
        task.request.parent_id = None

        gw_task_prerun(task=task)

        task.job_manager.updateStatus.assert_called_once_with(
            JobStatus.RUNNING)
    def test_task_prerun(self, jm):
        task = mock.MagicMock()
        task.request.jobInfoSpec = self.headers['jobInfoSpec']
        task.request.parent_id = None

        gw_task_prerun(task=task)

        task.job_manager.updateStatus.assert_called_once_with(
            JobStatus.RUNNING)
Esempio n. 5
0
    def test_task_success_canceling(self, refreshStatus, is_revoked):
        task = mock.MagicMock()
        task.name = 'example.task'
        task.request.jobInfoSpec = self.headers['jobInfoSpec']
        task.request.parent_id = None

        validation_error = {
            'field': 'status',
            'message': 'invalid'
        }

        class SessionMock(requests.Session):

            def __init__(self, *args, **kwargs):
                self.request = mock.MagicMock()
                self.response = self.request.return_value
                self.response.raise_for_status.side_effect = [
                    None, MockHTTPError(400, validation_error)]
                self.adapters = {}

        with unittest.mock.patch(
            'girder_worker.utils.requests.Session'
        ) as session:
            sessionMock = SessionMock()
            session.return_value = sessionMock

            refreshStatus.return_value = JobStatus.CANCELING
            is_revoked.return_value = True

            gw_task_prerun(task=task, sender=task)
            gw_task_success(sender=task)

            # We where in the canceling state so we should move into CANCELED
            refreshStatus.assert_called_once()
            self.assertEqual(
                sessionMock.request.call_args_list[1][1]['data']['status'], JobStatus.CANCELED)

            # Now try with RUNNING
            sessionMock.request.reset_mock()
            is_revoked.return_value = False
            refreshStatus.reset_mock()
            sessionMock.response.raise_for_status.side_effect = [None, None]

            gw_task_prerun(task=task, sender=task)
            gw_task_success(sender=task)

            # We should move into SUCCESS
            refreshStatus.assert_not_called()
            self.assertEqual(
                sessionMock.request.call_args_list[1][1]['data']['status'], JobStatus.SUCCESS)
Esempio n. 6
0
    def test_task_prerun_canceling(self, refreshStatus):
        task = mock.MagicMock()
        task.name = 'example.task'
        task.request.jobInfoSpec = self.headers['jobInfoSpec']
        task.request.parent_id = None

        validation_error = {
            'field': 'status',
            'message': 'invalid state'
        }

        class SessionMock(requests.Session):

            def __init__(self, *args, **kwargs):
                self.request = mock.MagicMock()
                self.response = self.request.return_value
                self.response.raise_for_status.side_effect = [
                    MockHTTPError(400, validation_error), None]
                self.adapters = {}

        with unittest.mock.patch(
            'girder_worker.utils.requests.Session'
        ) as session:
            sessionMock = SessionMock()
            session.return_value = sessionMock

            refreshStatus.return_value = JobStatus.CANCELING

            gw_task_prerun(task=task, sender=task)

            refreshStatus.assert_called_once()
            self.assertEqual(
                sessionMock.request.call_args_list[0][1]['data']['status'], JobStatus.RUNNING)

            # Now try with QUEUED
            sessionMock.request.reset_mock()
            refreshStatus.reset_mock()
            sessionMock.response.raise_for_status.side_effect = [None]
            refreshStatus.return_value = JobStatus.QUEUED

            gw_task_prerun(task=task, sender=task)

            refreshStatus.assert_not_called()
            self.assertEqual(
                sessionMock.request.call_args_list[0][1]['data']['status'], JobStatus.RUNNING)
Esempio n. 7
0
def test_gw_task_prerun_with_builtin_tasks_should_noop(name):
    with mock.patch('girder_worker.app._job_manager') as jm:
        task = mock.MagicMock()
        task.name = name
        gw_task_prerun(sender=task)
        jm.assert_not_called()