test_pickle.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. from __future__ import absolute_import
  2. from celery.utils.serialization import pickle
  3. from celery.tests.utils import Case
  4. class RegularException(Exception):
  5. pass
  6. class ArgOverrideException(Exception):
  7. def __init__(self, message, status_code=10):
  8. self.status_code = status_code
  9. Exception.__init__(self, message, status_code)
  10. class test_Pickle(Case):
  11. def test_pickle_regular_exception(self):
  12. exc = None
  13. try:
  14. raise RegularException('RegularException raised')
  15. except RegularException as exc_:
  16. exc = exc_
  17. pickled = pickle.dumps({'exception': exc})
  18. unpickled = pickle.loads(pickled)
  19. exception = unpickled.get('exception')
  20. self.assertTrue(exception)
  21. self.assertIsInstance(exception, RegularException)
  22. self.assertTupleEqual(exception.args, ('RegularException raised', ))
  23. def test_pickle_arg_override_exception(self):
  24. exc = None
  25. try:
  26. raise ArgOverrideException('ArgOverrideException raised',
  27. status_code=100)
  28. except ArgOverrideException as exc_:
  29. exc = exc_
  30. pickled = pickle.dumps({'exception': exc})
  31. unpickled = pickle.loads(pickled)
  32. exception = unpickled.get('exception')
  33. self.assertTrue(exception)
  34. self.assertIsInstance(exception, ArgOverrideException)
  35. self.assertTupleEqual(exception.args, (
  36. 'ArgOverrideException raised', 100))
  37. self.assertEqual(exception.status_code, 100)