예제 #1
0
 def test_mark_as_done__chord(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     b.on_chord_part_return = Mock()
     b.mark_as_done('id', 10, request=request)
     b.on_chord_part_return.assert_called_with(request, states.SUCCESS, 10)
예제 #2
0
    def test_store_result_reaching_max_retries(self):
        self.app.conf.result_backend_always_retry, prev = True, self.app.conf.result_backend_always_retry
        self.app.conf.result_backend_max_retries, prev_max_retries = 0, self.app.conf.result_backend_max_retries

        try:
            b = BaseBackend(app=self.app)
            b.exception_safe_to_retry = lambda exc: True
            b._sleep = Mock()
            b._get_task_meta_for = Mock()
            b._get_task_meta_for.return_value = {
                'status': states.RETRY,
                'result': {
                    "exc_type": "Exception",
                    "exc_message": ["failed"],
                    "exc_module": "builtins",
                },
            }
            b._store_result = Mock()
            b._store_result.side_effect = [Exception("failed"), 42]
            try:
                b.store_result(sentinel.task_id, 42, states.SUCCESS)
                assert False
            except BackendStoreError:
                assert b._sleep.call_count == 0
        finally:
            self.app.conf.result_backend_always_retry = prev
            self.app.conf.result_backend_max_retries = prev_max_retries
예제 #3
0
파일: test_base.py 프로젝트: Awingu/celery
 def test_mark_as_revoked__chord(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     b.on_chord_part_return = Mock()
     b.mark_as_revoked('id', 'revoked', request=request)
     b.on_chord_part_return.assert_called_with(request, states.REVOKED, ANY)
예제 #4
0
    def test_store_result_never_retries(self):
        self.app.conf.result_backend_always_retry, prev = False, self.app.conf.result_backend_always_retry

        expected_exc = Exception("failed")
        try:
            b = BaseBackend(app=self.app)
            b.exception_safe_to_retry = lambda exc: True
            b._sleep = Mock()
            b._get_task_meta_for = Mock()
            b._get_task_meta_for.return_value = {
                'status': states.RETRY,
                'result': {
                    "exc_type": "Exception",
                    "exc_message": ["failed"],
                    "exc_module": "builtins",
                },
            }
            b._store_result = Mock()
            b._store_result.side_effect = [expected_exc, 42]
            try:
                b.store_result(sentinel.task_id, 42, states.SUCCESS)
            except Exception as exc:
                assert b._sleep.call_count == 0
                assert exc == expected_exc
        finally:
            self.app.conf.result_backend_always_retry = prev
예제 #5
0
파일: test_base.py 프로젝트: xmn1986/celery
 def test_mark_as_revoked__chord(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     b.on_chord_part_return = Mock()
     b.mark_as_revoked('id', 'revoked', request=request)
     b.on_chord_part_return.assert_called_with(request, states.REVOKED, ANY)
예제 #6
0
 def test_mark_as_failure__errback(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     request.errbacks = [self.errback.subtask(args=[2, 3], immutable=True)]
     exc = KeyError()
     b.mark_as_failure('id', exc, request=request)
     assert self.errback.last_result == 5
예제 #7
0
파일: test_base.py 프로젝트: celery/celery
 def test_mark_as_failure__errback(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     request.errbacks = [self.errback.subtask(args=[2, 3], immutable=True)]
     exc = KeyError()
     b.mark_as_failure('id', exc, request=request)
     assert self.errback.last_result == 5
예제 #8
0
파일: test_base.py 프로젝트: Awingu/celery
 def test_mark_as_failure__chord(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     b.on_chord_part_return = Mock()
     exc = KeyError()
     b.mark_as_failure('id', exc, request=request)
     b.on_chord_part_return.assert_called_with(request, states.FAILURE, exc)
예제 #9
0
파일: test_base.py 프로젝트: m4ddav3/celery
 def test_mark_as_revoked__chord(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name="request")
     request.errbacks = []
     b.on_chord_part_return = Mock()
     b.mark_as_revoked("id", "revoked", request=request)
     b.on_chord_part_return.assert_called_with(request, states.REVOKED, ANY)
예제 #10
0
파일: test_base.py 프로젝트: xmn1986/celery
 def test_mark_as_failure__chord(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     b.on_chord_part_return = Mock()
     exc = KeyError()
     b.mark_as_failure('id', exc, request=request)
     b.on_chord_part_return.assert_called_with(request, states.FAILURE, exc)
예제 #11
0
    def test_unregistered_task_can_be_used_as_error_callback(self, mock_group):
        b = BaseBackend(app=self.app)
        b._store_result = Mock()

        request = Mock(name='request')
        request.errbacks = [signature('doesnotexist', immutable=True)]
        exc = KeyError()
        b.mark_as_failure('id', exc, request=request)
        mock_group.assert_called_once_with(request.errbacks, app=self.app)
예제 #12
0
파일: test_base.py 프로젝트: celery/celery
    def test_unregistered_task_can_be_used_as_error_callback(self, mock_group):
        b = BaseBackend(app=self.app)
        b._store_result = Mock()

        request = Mock(name='request')
        request.errbacks = [signature('doesnotexist',
                                      immutable=True)]
        exc = KeyError()
        b.mark_as_failure('id', exc, request=request)
        mock_group.assert_called_once_with(request.errbacks, app=self.app)
예제 #13
0
파일: test_base.py 프로젝트: celery/celery
 def test_mark_as_failure__bound_errback(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     request.errbacks = [
         self.bound_errback.subtask(args=[1], immutable=True)]
     exc = KeyError()
     group = self.patching('celery.backends.base.group')
     b.mark_as_failure('id', exc, request=request)
     group.assert_called_with(request.errbacks, app=self.app)
     group.return_value.apply_async.assert_called_with(
         (request.id, ), parent_id=request.id, root_id=request.root_id)
예제 #14
0
파일: test_base.py 프로젝트: zpzhue/celery
 def test_mark_as_failure__bound_errback(self):
     b = BaseBackend(app=self.app)
     b._store_result = Mock()
     request = Mock(name='request')
     request.errbacks = [
         self.bound_errback.subtask(args=[1], immutable=True)]
     exc = KeyError()
     group = self.patching('celery.backends.base.group')
     b.mark_as_failure('id', exc, request=request)
     group.assert_called_with(request.errbacks, app=self.app)
     group.return_value.apply_async.assert_called_with(
         (request.id, ), parent_id=request.id, root_id=request.root_id)
예제 #15
0
    def test_class_based_task_can_be_used_as_error_callback(self, mock_group):
        b = BaseBackend(app=self.app)
        b._store_result = Mock()

        class TaskBasedClass(Task):
            def run(self):
                pass

        TaskBasedClass = self.app.register_task(TaskBasedClass())

        request = Mock(name='request')
        request.errbacks = [TaskBasedClass.subtask(args=[], immutable=True)]
        exc = KeyError()
        b.mark_as_failure('id', exc, request=request)
        mock_group.assert_called_once_with(request.errbacks, app=self.app)
예제 #16
0
파일: test_base.py 프로젝트: celery/celery
    def test_class_based_task_can_be_used_as_error_callback(self, mock_group):
        b = BaseBackend(app=self.app)
        b._store_result = Mock()

        class TaskBasedClass(Task):
            def run(self):
                pass

        TaskBasedClass = self.app.register_task(TaskBasedClass())

        request = Mock(name='request')
        request.errbacks = [TaskBasedClass.subtask(args=[], immutable=True)]
        exc = KeyError()
        b.mark_as_failure('id', exc, request=request)
        mock_group.assert_called_once_with(request.errbacks, app=self.app)