Exemplo n.º 1
0
    def testTaskRuntimeExceeded(self):
        """Task task failing from timeout."""

        task_inst = test_utils.new_mock_task(task_class=test_utils.FailTask)
        sample_values = [(i, test_utils.FailTask._get_delay_sec_for_retry(i))
                         for i in range(task_inst.max_retries)]
        payload = {'args': [], 'kwargs': {}, 'app_data': {}}

        for retry, delay_sec in sample_values:
            with mock.patch(
                    'kale.publisher.Publisher.publish') as publish_func:
                message = test_utils.MockMessage(task_inst, retry_num=retry)

                retried = test_utils.FailTask.handle_failure(
                    message, exceptions.TaskException('Exception'))
                self.assertTrue(retried)
                publish_func.assert_called_once_with(test_utils.FailTask,
                                                     message.task_id,
                                                     payload,
                                                     current_retry_num=(retry +
                                                                        1),
                                                     delay_sec=delay_sec)

        retry = retry + 1
        with mock.patch(
                'kale.task.Task._report_permanent_failure') as fail_func:
            exc = exceptions.TaskException('Exception')
            message = test_utils.MockMessage(task_inst, retry_num=retry)
            retried = test_utils.FailTask.handle_failure(message, exc)
            self.assertFalse(retried)
            fail_func.assert_called_once_with(
                message, exc, task.PERMANENT_FAILURE_RETRIES_EXCEEDED, False)
Exemplo n.º 2
0
    def testTaskRetryDelayWithFailure(self):
        """Task task retrying with delay with failure"""

        task_inst = test_utils.new_mock_task(task_class=test_utils.FailTask)
        sample_values = [(i, test_utils.FailTask._get_delay_sec_for_retry(i))
                         for i in range(task_inst.max_retries)]
        payload = {'args': [], 'kwargs': {}, 'app_data': {}}

        for failure, delay_sec in sample_values:
            with mock.patch(
                    'kale.publisher.Publisher.publish') as publish_func:
                message = test_utils.MockMessage(task_inst,
                                                 failure_num=failure,
                                                 retry_num=failure)

                retried = test_utils.FailTask.handle_failure(
                    message,
                    exceptions.TaskException('Exception'),
                    increment_failure_num=True)
                self.assertTrue(retried)
                publish_func.assert_called_once_with(
                    test_utils.FailTask,
                    message.task_id,
                    payload,
                    current_failure_num=(failure + 1),
                    current_retry_num=(failure + 1),
                    delay_sec=delay_sec)
Exemplo n.º 3
0
    def testTaskRuntimeExceeded(self):
        """Task task failing from timeout."""

        task_inst = test_utils.new_mock_task(task_class=test_utils.FailTask)

        with mock.patch(
                'kale.task.Task._report_permanent_failure') as fail_func:
            exc = exceptions.TaskException('Exception')
            message = test_utils.MockMessage(
                task_inst, retry_num=0, failure_num=task_inst.max_retries + 1)
            retried = test_utils.FailTask.handle_failure(message, exc)
            self.assertFalse(retried)
            fail_func.assert_called_once_with(
                message, exc, task.PERMANENT_FAILURE_RETRIES_EXCEEDED, False)
Exemplo n.º 4
0
    def testTaskNoRetries(self):
        """Task task failing with retries disabled."""

        task_inst = test_utils.new_mock_task(
            task_class=test_utils.FailTaskNoRetries)
        message = test_utils.MockMessage(task_inst)

        with mock.patch(
                'kale.task.Task._report_permanent_failure') as fail_func:
            exc = exceptions.TaskException('Exception')
            retried = test_utils.FailTaskNoRetries.handle_failure(message, exc)
            self.assertFalse(retried)
            fail_func.assert_called_once_with(
                message, exc, task.PERMANENT_FAILURE_NO_RETRY, True)
Exemplo n.º 5
0
 def run_task(self, *args, **kwargs):
     raise exceptions.TaskException('Task failed.')
Exemplo n.º 6
0
 def _c(self):
     raise exceptions.TaskException('Task failed.')