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)
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)
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)
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)
def run_task(self, *args, **kwargs): raise exceptions.TaskException('Task failed.')
def _c(self): raise exceptions.TaskException('Task failed.')