test_registry.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. from __future__ import absolute_import
  2. from __future__ import with_statement
  3. from celery.app.registry import TaskRegistry
  4. from celery.task import Task, PeriodicTask
  5. from celery.tests.utils import Case
  6. class MockTask(Task):
  7. name = 'celery.unittest.test_task'
  8. def run(self, **kwargs):
  9. return True
  10. class MockPeriodicTask(PeriodicTask):
  11. name = 'celery.unittest.test_periodic_task'
  12. run_every = 10
  13. def run(self, **kwargs):
  14. return True
  15. class test_TaskRegistry(Case):
  16. def test_NotRegistered_str(self):
  17. self.assertTrue(repr(TaskRegistry.NotRegistered('tasks.add')))
  18. def assertRegisterUnregisterCls(self, r, task):
  19. with self.assertRaises(r.NotRegistered):
  20. r.unregister(task)
  21. r.register(task)
  22. self.assertIn(task.name, r)
  23. def assertRegisterUnregisterFunc(self, r, task, task_name):
  24. with self.assertRaises(r.NotRegistered):
  25. r.unregister(task_name)
  26. r.register(task, task_name)
  27. self.assertIn(task_name, r)
  28. def test_task_registry(self):
  29. r = TaskRegistry()
  30. self.assertIsInstance(r, dict, 'TaskRegistry is mapping')
  31. self.assertRegisterUnregisterCls(r, MockTask)
  32. self.assertRegisterUnregisterCls(r, MockPeriodicTask)
  33. r.register(MockPeriodicTask)
  34. r.unregister(MockPeriodicTask.name)
  35. self.assertNotIn(MockPeriodicTask, r)
  36. r.register(MockPeriodicTask)
  37. tasks = dict(r)
  38. self.assertIsInstance(tasks.get(MockTask.name), MockTask)
  39. self.assertIsInstance(tasks.get(MockPeriodicTask.name),
  40. MockPeriodicTask)
  41. self.assertIsInstance(r[MockTask.name], MockTask)
  42. self.assertIsInstance(r[MockPeriodicTask.name],
  43. MockPeriodicTask)
  44. r.unregister(MockTask)
  45. self.assertNotIn(MockTask.name, r)
  46. r.unregister(MockPeriodicTask)
  47. self.assertNotIn(MockPeriodicTask.name, r)
  48. self.assertTrue(MockTask().run())
  49. self.assertTrue(MockPeriodicTask().run())
  50. def test_compat(self):
  51. r = TaskRegistry()
  52. r.regular()
  53. r.periodic()