def test_backend__pickle_serialization__str_result(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() result = 'foo' request = mock.MagicMock() request.task = 'my_task' request.args = ['a', 1, SomeClass(67)] request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} request.hostname = 'celery@ip-0-0-0-0' request.chord = None del request.argsrepr, request.kwargsrepr self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) assert mindb.get('result') == 'foo' assert mindb.get('task_name') == 'my_task' assert len(mindb.get('task_args')) == 3 assert mindb.get('task_args')[0] == 'a' assert mindb.get('task_args')[1] == 1 assert mindb.get('task_args')[2].data == 67 assert len(mindb.get('task_kwargs')) == 3 assert mindb.get('task_kwargs')['c'] == 6 assert mindb.get('task_kwargs')['d'] == 'e' assert mindb.get('task_kwargs')['f'].data == 89
def test_secrets__json_serialization__protocol_1(self): self.app.conf.result_serializer = 'json' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid = uuid() request = self._create_request( task_id=tid, name='my_task', args=['a', 1, True], kwargs={ 'c': 6, 'd': 'e', 'f': False }, argsrepr='argsrepr', kwargsrepr='kwargsrepr', task_protocol=1, ) result = {'foo': 'baz'} self.b.mark_as_done(tid, result, request=request) mindb = self.b.get_task_meta(tid) assert mindb.get('result') == {'foo': 'baz'} assert mindb.get('task_name') == 'my_task' assert mindb.get('task_args') == ['a', 1, True] assert mindb.get('task_kwargs') == {'c': 6, 'd': 'e', 'f': False} tr = TaskResult.objects.get(task_id=tid) assert json.loads(tr.task_args) == ['a', 1, True] assert json.loads(tr.task_kwargs) == {'c': 6, 'd': 'e', 'f': False}
def test_backend__json_serialization__str_result(self): self.app.conf.result_serializer = 'json' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, True], kwargs={'c': 6, 'd': 'e', 'f': False}, ) result = 'foo' self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result') == 'foo' assert mindb.get('task_name') == 'my_task' assert mindb.get('task_args') == "['a', 1, True]" assert mindb.get('task_kwargs') == "{'c': 6, 'd': 'e', 'f': False}" # check task_result object tr = TaskResult.objects.get(task_id=tid2) assert json.loads(tr.task_args) == "['a', 1, True]" assert json.loads(tr.task_kwargs) == "{'c': 6, 'd': 'e', 'f': False}" # check async_result ar = AsyncResult(tid2) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs')
def test_backend__json_serialization__dict_result(self): self.app.conf.result_serializer = 'json' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, True], kwargs={'c': 6, 'd': 'e', 'f': False}, ) result = {'foo': 'baz', 'bar': True} self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result').get('foo') == 'baz' assert mindb.get('result').get('bar') is True assert mindb.get('task_name') == 'my_task' assert mindb.get('task_args') == "['a', 1, True]" assert mindb.get('task_kwargs') == "{'c': 6, 'd': 'e', 'f': False}" # check task_result object tr = TaskResult.objects.get(task_id=tid2) assert json.loads(tr.task_args) == "['a', 1, True]" assert json.loads(tr.task_kwargs) == "{'c': 6, 'd': 'e', 'f': False}" # check async_result ar = AsyncResult(tid2) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs') # check backward compatibility task_kwargs2 = str(request.kwargs) task_args2 = str(request.args) assert tr.task_args != task_args2 assert tr.task_kwargs != task_kwargs2 tr.task_args = task_args2 tr.task_kwargs = task_kwargs2 tr.save() mindb = self.b.get_task_meta(tid2) assert mindb.get('task_args') == "['a', 1, True]" assert mindb.get('task_kwargs') == "{'c': 6, 'd': 'e', 'f': False}" ar = AsyncResult(tid2) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs') tid3 = uuid() try: raise KeyError('foo') except KeyError as exception: self.b.mark_as_failure(tid3, exception) assert self.b.get_status(tid3) == states.FAILURE assert isinstance(self.b.get_result(tid3), KeyError)
def test_backend__pickle_serialization__dict_result__protocol_1(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, SomeClass(67)], kwargs={ 'c': 6, 'd': 'e', 'f': SomeClass(89) }, task_protocol=1, ) result = {'foo': 'baz', 'bar': SomeClass(12345)} self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result').get('foo') == 'baz' assert mindb.get('result').get('bar').data == 12345 assert mindb.get('task_name') == 'my_task' assert mindb.get('task_args')[0] == 'a' assert mindb.get('task_args')[1] == 1 assert mindb.get('task_args')[2].data == 67 assert mindb.get('task_kwargs')['c'] == 6 assert mindb.get('task_kwargs')['d'] == 'e' assert mindb.get('task_kwargs')['f'].data == 89 # check task_result object tr = TaskResult.objects.get(task_id=tid2) task_args = pickle.loads(b64decode(tr.task_args)) assert task_args[0] == 'a' assert task_args[1] == 1 assert task_args[2].data == 67 task_kwargs = pickle.loads(b64decode(tr.task_kwargs)) assert task_kwargs['c'] == 6 assert task_kwargs['d'] == 'e' assert task_kwargs['f'].data == 89 tid3 = uuid() try: raise KeyError('foo') except KeyError as exception: self.b.mark_as_failure(tid3, exception) assert self.b.get_status(tid3) == states.FAILURE assert isinstance(self.b.get_result(tid3), KeyError)
def test_backend__pickle_serialization__bytes_result__protocol_1(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, SomeClass(67)], kwargs={ 'c': 6, 'd': 'e', 'f': SomeClass(89) }, task_protocol=1, ) result = b'foo' self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result') == b'foo' assert mindb.get('task_name') == 'my_task' assert mindb.get('task_args')[0] == 'a' assert mindb.get('task_args')[1] == 1 assert mindb.get('task_args')[2].data == 67 assert mindb.get('task_kwargs')['c'] == 6 assert mindb.get('task_kwargs')['d'] == 'e' assert mindb.get('task_kwargs')['f'].data == 89 # check task_result object tr = TaskResult.objects.get(task_id=tid2) task_args = pickle.loads(b64decode(tr.task_args)) assert task_args[0] == 'a' assert task_args[1] == 1 assert task_args[2].data == 67 task_kwargs = pickle.loads(b64decode(tr.task_kwargs)) assert task_kwargs['c'] == 6 assert task_kwargs['d'] == 'e' assert task_kwargs['f'].data == 89
def test_backend__pickle_serialization__bytes_result(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, SomeClass(67)], kwargs={ 'c': 6, 'd': 'e', 'f': SomeClass(89) }, ) result = b'foo' self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result') == b'foo' assert mindb.get('task_name') == 'my_task' assert len(mindb.get('worker')) > 1 assert bool( re.match(r"\['a', 1, <.*SomeClass object at .*>\]", mindb.get('task_args'))) assert bool( re.match(r"{'c': 6, 'd': 'e', 'f': <.*SomeClass object at .*>}", mindb.get('task_kwargs'))) # check task_result objects tr = TaskResult.objects.get(task_id=tid2) task_args = pickle.loads(b64decode(tr.task_args)) task_kwargs = pickle.loads(b64decode(tr.task_kwargs)) assert task_args == mindb.get('task_args') assert task_kwargs == mindb.get('task_kwargs') # check async_result ar = AsyncResult(tid2) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs')
def test_backend__json_serialization__dict_result__protocol_1(self): self.app.conf.result_serializer = 'json' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, True], kwargs={ 'c': 6, 'd': 'e', 'f': False }, task_protocol=1, ) result = {'foo': 'baz', 'bar': True} self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result').get('foo') == 'baz' assert mindb.get('result').get('bar') is True assert mindb.get('task_name') == 'my_task' assert mindb.get('task_args') == ['a', 1, True] assert mindb.get('task_kwargs') == {'c': 6, 'd': 'e', 'f': False} # check task_result object tr = TaskResult.objects.get(task_id=tid2) assert json.loads(tr.task_args) == ['a', 1, True] assert json.loads(tr.task_kwargs) == {'c': 6, 'd': 'e', 'f': False} tid3 = uuid() try: raise KeyError('foo') except KeyError as exception: self.b.mark_as_failure(tid3, exception) assert self.b.get_status(tid3) == states.FAILURE assert isinstance(self.b.get_result(tid3), KeyError)
def test_backend__pickle_serialization(self): self.app.conf.result_serializer = 'pickle' self.b = DatabaseBackend(app=self.app) tid2 = uuid() result = {'foo': 'baz', 'bar': SomeClass(12345)} self.b.mark_as_done(tid2, result) # is serialized properly. rindb = self.b.get_result(tid2) assert rindb.get('foo') == 'baz' assert rindb.get('bar').data == 12345 tid3 = uuid() try: raise KeyError('foo') except KeyError as exception: self.b.mark_as_failure(tid3, exception) assert self.b.get_status(tid3) == states.FAILURE assert isinstance(self.b.get_result(tid3), KeyError)
def test_secrets__pickle_serialization(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid = uuid() request = self._create_request( task_id=tid, name='my_task', args=['a', 1, 'password'], kwargs={ 'c': 3, 'd': 'e', 'password': '******' }, argsrepr='argsrepr', kwargsrepr='kwargsrepr', ) result = {'foo': 'baz'} self.b.mark_as_done(tid, result, request=request) mindb = self.b.get_task_meta(tid) # check task meta assert mindb.get('result') == {'foo': 'baz'} assert mindb.get('task_args') == 'argsrepr' assert mindb.get('task_kwargs') == 'kwargsrepr' assert len(mindb.get('worker')) > 1 # check task_result object tr = TaskResult.objects.get(task_id=tid) task_args = pickle.loads(b64decode(tr.task_args)) task_kwargs = pickle.loads(b64decode(tr.task_kwargs)) assert task_args == 'argsrepr' assert task_kwargs == 'kwargsrepr' # check async_result ar = AsyncResult(tid) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs')
def test_backend__pickle_serialization__dict_result(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() result = {'foo': 'baz', 'bar': SomeClass(12345)} request = mock.MagicMock() request.task = 'my_task' request.args = ['a', 1, SomeClass(67)] request.kwargs = {'c': 6, 'd': 'e', 'f': SomeClass(89)} request.hostname = 'celery@ip-0-0-0-0' request.chord = None del request.argsrepr, request.kwargsrepr self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) assert mindb.get('result').get('foo') == 'baz' assert mindb.get('result').get('bar').data == 12345 assert mindb.get('task_name') == 'my_task' assert len(mindb.get('task_args')) == 3 assert mindb.get('task_args')[0] == 'a' assert mindb.get('task_args')[1] == 1 assert mindb.get('task_args')[2].data == 67 assert len(mindb.get('task_kwargs')) == 3 assert mindb.get('task_kwargs')['c'] == 6 assert mindb.get('task_kwargs')['d'] == 'e' assert mindb.get('task_kwargs')['f'].data == 89 tid3 = uuid() try: raise KeyError('foo') except KeyError as exception: self.b.mark_as_failure(tid3, exception) assert self.b.get_status(tid3) == states.FAILURE assert isinstance(self.b.get_result(tid3), KeyError)
def setup_backend(self): self.app.conf.result_serializer = 'json' self.app.conf.result_backend = ( 'django_celery_results.backends:DatabaseBackend') self.b = DatabaseBackend(app=self.app)
def test_backend__pickle_serialization__dict_result(self): self.app.conf.result_serializer = 'pickle' self.app.conf.accept_content = {'pickle', 'json'} self.b = DatabaseBackend(app=self.app) tid2 = uuid() request = self._create_request( task_id=tid2, name='my_task', args=['a', 1, SomeClass(67)], kwargs={ 'c': 6, 'd': 'e', 'f': SomeClass(89) }, ) result = {'foo': 'baz', 'bar': SomeClass(12345)} self.b.mark_as_done(tid2, result, request=request) mindb = self.b.get_task_meta(tid2) # check task meta assert mindb.get('result').get('foo') == 'baz' assert mindb.get('result').get('bar').data == 12345 assert len(mindb.get('worker')) > 1 assert mindb.get('task_name') == 'my_task' assert bool( re.match(r"\['a', 1, <.*SomeClass object at .*>\]", mindb.get('task_args'))) assert bool( re.match(r"{'c': 6, 'd': 'e', 'f': <.*SomeClass object at .*>}", mindb.get('task_kwargs'))) # check task_result object tr = TaskResult.objects.get(task_id=tid2) task_args = pickle.loads(b64decode(tr.task_args)) task_kwargs = pickle.loads(b64decode(tr.task_kwargs)) assert task_args == mindb.get('task_args') assert task_kwargs == mindb.get('task_kwargs') # check async_result ar = AsyncResult(tid2) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs') # check backward compatibility task_kwargs2 = str(request.kwargs) task_args2 = str(request.args) assert tr.task_args != task_args2 assert tr.task_kwargs != task_kwargs2 tr.task_args = task_args2 tr.task_kwargs = task_kwargs2 tr.save() mindb = self.b.get_task_meta(tid2) assert bool( re.match(r"\['a', 1, <.*SomeClass object at .*>\]", mindb.get('task_args'))) assert bool( re.match(r"{'c': 6, 'd': 'e', 'f': <.*SomeClass object at .*>}", mindb.get('task_kwargs'))) ar = AsyncResult(tid2) assert ar.args == mindb.get('task_args') assert ar.kwargs == mindb.get('task_kwargs') tid3 = uuid() try: raise KeyError('foo') except KeyError as exception: self.b.mark_as_failure(tid3, exception) assert self.b.get_status(tid3) == states.FAILURE assert isinstance(self.b.get_result(tid3), KeyError)