test_registry.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 assertRegisterUnregisterCls(self, r, task):
  17. with self.assertRaises(r.NotRegistered):
  18. r.unregister(task)
  19. r.register(task)
  20. self.assertIn(task.name, r)
  21. def assertRegisterUnregisterFunc(self, r, task, task_name):
  22. with self.assertRaises(r.NotRegistered):
  23. r.unregister(task_name)
  24. r.register(task, task_name)
  25. self.assertIn(task_name, r)
  26. def test_task_registry(self):
  27. r = TaskRegistry()
  28. self.assertIsInstance(r, dict,
  29. "TaskRegistry is mapping")
  30. self.assertRegisterUnregisterCls(r, MockTask)
  31. self.assertRegisterUnregisterCls(r, MockPeriodicTask)
  32. r.register(MockPeriodicTask)
  33. r.unregister(MockPeriodicTask.name)
  34. self.assertNotIn(MockPeriodicTask, r)
  35. r.register(MockPeriodicTask)
  36. tasks = dict(r)
  37. self.assertIsInstance(tasks.get(MockTask.name), MockTask)
  38. self.assertIsInstance(tasks.get(MockPeriodicTask.name),
  39. MockPeriodicTask)
  40. self.assertIsInstance(r[MockTask.name], MockTask)
  41. self.assertIsInstance(r[MockPeriodicTask.name],
  42. MockPeriodicTask)
  43. r.unregister(MockTask)
  44. self.assertNotIn(MockTask.name, r)
  45. r.unregister(MockPeriodicTask)
  46. self.assertNotIn(MockPeriodicTask.name, r)
  47. self.assertTrue(MockTask().run())
  48. self.assertTrue(MockPeriodicTask().run())