test_registry.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from celery.tests.utils import unittest
  2. from celery import registry
  3. from celery.task import Task, PeriodicTask
  4. class TestTask(Task):
  5. name = "celery.unittest.test_task"
  6. def run(self, **kwargs):
  7. return True
  8. class TestPeriodicTask(PeriodicTask):
  9. name = "celery.unittest.test_periodic_task"
  10. run_every = 10
  11. def run(self, **kwargs):
  12. return True
  13. class TestTaskRegistry(unittest.TestCase):
  14. def assertRegisterUnregisterCls(self, r, task):
  15. self.assertRaises(r.NotRegistered, r.unregister, task)
  16. r.register(task)
  17. self.assertIn(task.name, r)
  18. def assertRegisterUnregisterFunc(self, r, task, task_name):
  19. self.assertRaises(r.NotRegistered, r.unregister, task_name)
  20. r.register(task, task_name)
  21. self.assertIn(task_name, r)
  22. def test_task_registry(self):
  23. r = registry.TaskRegistry()
  24. self.assertIsInstance(r.data, dict,
  25. "TaskRegistry has composited dict")
  26. self.assertRegisterUnregisterCls(r, TestTask)
  27. self.assertRegisterUnregisterCls(r, TestPeriodicTask)
  28. r.register(TestPeriodicTask)
  29. r.unregister(TestPeriodicTask.name)
  30. self.assertNotIn(TestPeriodicTask, r)
  31. r.register(TestPeriodicTask)
  32. tasks = dict(r)
  33. self.assertIsInstance(tasks.get(TestTask.name), TestTask)
  34. self.assertIsInstance(tasks.get(TestPeriodicTask.name),
  35. TestPeriodicTask)
  36. regular = r.regular()
  37. self.assertIn(TestTask.name, regular)
  38. self.assertNotIn(TestPeriodicTask.name, regular)
  39. periodic = r.periodic()
  40. self.assertNotIn(TestTask.name, periodic)
  41. self.assertIn(TestPeriodicTask.name, periodic)
  42. self.assertIsInstance(r[TestTask.name], TestTask)
  43. self.assertIsInstance(r[TestPeriodicTask.name],
  44. TestPeriodicTask)
  45. r.unregister(TestTask)
  46. self.assertNotIn(TestTask.name, r)
  47. r.unregister(TestPeriodicTask)
  48. self.assertNotIn(TestPeriodicTask.name, r)
  49. self.assertTrue(TestTask().run())
  50. self.assertTrue(TestPeriodicTask().run())