test_backends.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from __future__ import absolute_import
  2. from __future__ import with_statement
  3. from mock import patch
  4. from celery import current_app
  5. from celery import backends
  6. from celery.backends.amqp import AMQPBackend
  7. from celery.backends.cache import CacheBackend
  8. from celery.tests.utils import Case
  9. class test_backends(Case):
  10. def test_get_backend_aliases(self):
  11. expects = [("amqp", AMQPBackend),
  12. ("cache", CacheBackend)]
  13. for expect_name, expect_cls in expects:
  14. self.assertIsInstance(backends.get_backend_cls(expect_name)(),
  15. expect_cls)
  16. def test_get_backend_cache(self):
  17. backends.get_backend_cls.clear()
  18. hits = backends.get_backend_cls.hits
  19. misses = backends.get_backend_cls.misses
  20. self.assertTrue(backends.get_backend_cls("amqp"))
  21. self.assertEqual(backends.get_backend_cls.misses, misses + 1)
  22. self.assertTrue(backends.get_backend_cls("amqp"))
  23. self.assertEqual(backends.get_backend_cls.hits, hits + 1)
  24. def test_unknown_backend(self):
  25. with self.assertRaises(ImportError):
  26. backends.get_backend_cls("fasodaopjeqijwqe")
  27. def test_default_backend(self):
  28. self.assertEqual(backends.default_backend, current_app.backend)
  29. def test_backend_by_url(self, url="redis://localhost/1"):
  30. from celery.backends.redis import RedisBackend
  31. backend, url_ = backends.get_backend_by_url(url)
  32. self.assertIs(backend, RedisBackend)
  33. self.assertEqual(url_, url)
  34. def test_sym_raises_ValuError(self):
  35. with patch("celery.backends.symbol_by_name") as sbn:
  36. sbn.side_effect = ValueError()
  37. with self.assertRaises(ValueError):
  38. backends.get_backend_cls("xxx.xxx:foo")