test_loaders.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import os
  2. import unittest
  3. from billiard.utils.functional import wraps
  4. from celery import loaders
  5. from celery.loaders import base
  6. from celery.loaders import djangoapp
  7. from celery.tests.utils import with_environ
  8. class TestLoaders(unittest.TestCase):
  9. def test_get_loader_cls(self):
  10. self.assertEquals(loaders.get_loader_cls("django"),
  11. loaders.DjangoLoader)
  12. self.assertEquals(loaders.get_loader_cls("default"),
  13. loaders.DefaultLoader)
  14. # Execute cached branch.
  15. self.assertEquals(loaders.get_loader_cls("django"),
  16. loaders.DjangoLoader)
  17. self.assertEquals(loaders.get_loader_cls("default"),
  18. loaders.DefaultLoader)
  19. @with_environ("CELERY_LOADER", "default")
  20. def test_detect_loader_CELERY_LOADER(self):
  21. self.assertEquals(loaders._detect_loader(), loaders.DefaultLoader)
  22. class DummyLoader(base.BaseLoader):
  23. class Config(object):
  24. def __init__(self, **kwargs):
  25. for attr, val in kwargs.items():
  26. setattr(self, attr, val)
  27. def read_configuration(self):
  28. return self.Config(foo="bar", CELERY_IMPORTS=("os", "sys"))
  29. class TestLoaderBase(unittest.TestCase):
  30. def setUp(self):
  31. self.loader = DummyLoader()
  32. def test_handlers_pass(self):
  33. self.loader.on_task_init("foo.task", "feedface-cafebabe")
  34. self.loader.on_worker_init()
  35. def test_import_task_module(self):
  36. import sys
  37. self.assertEquals(sys, self.loader.import_task_module("sys"))
  38. def test_conf_property(self):
  39. self.assertEquals(self.loader.conf.foo, "bar")
  40. self.assertEquals(self.loader._conf_cache.foo, "bar")
  41. self.assertEquals(self.loader.conf.foo, "bar")
  42. def test_import_default_modules(self):
  43. import os
  44. import sys
  45. self.assertEquals(self.loader.import_default_modules(), [os, sys])
  46. class TestDjangoLoader(unittest.TestCase):
  47. def setUp(self):
  48. self.loader = loaders.DjangoLoader()
  49. def test_on_worker_init(self):
  50. self.assertRaises(ImportError, self.loader.on_worker_init)
  51. def test_race_protection(self):
  52. djangoapp._RACE_PROTECTION = True
  53. try:
  54. self.assertFalse(self.loader.on_worker_init())
  55. finally:
  56. djangoapp._RACE_PROTECTION = False
  57. def test_find_related_module_no_path(self):
  58. self.assertFalse(djangoapp.find_related_module("sys", "tasks"))
  59. def test_find_related_module_no_related(self):
  60. self.assertFalse(djangoapp.find_related_module("someapp", "frobulators"))