test_models.py 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import unittest
  2. from datetime import datetime, timedelta
  3. from celery import states
  4. from celery.utils import gen_unique_id
  5. from celery.models import TaskMeta, TaskSetMeta
  6. class TestModels(unittest.TestCase):
  7. def createTaskMeta(self):
  8. id = gen_unique_id()
  9. taskmeta, created = TaskMeta.objects.get_or_create(task_id=id)
  10. return taskmeta
  11. def createTaskSetMeta(self):
  12. id = gen_unique_id()
  13. tasksetmeta, created = TaskSetMeta.objects.get_or_create(taskset_id=id)
  14. return tasksetmeta
  15. def test_taskmeta(self):
  16. m1 = self.createTaskMeta()
  17. m2 = self.createTaskMeta()
  18. m3 = self.createTaskMeta()
  19. self.assertTrue(unicode(m1).startswith("<Task:"))
  20. self.assertTrue(m1.task_id)
  21. self.assertTrue(isinstance(m1.date_done, datetime))
  22. self.assertEquals(TaskMeta.objects.get_task(m1.task_id).task_id,
  23. m1.task_id)
  24. self.assertFalse(
  25. TaskMeta.objects.get_task(m1.task_id).status == states.SUCCESS)
  26. TaskMeta.objects.store_result(m1.task_id, True, status=states.SUCCESS)
  27. TaskMeta.objects.store_result(m2.task_id, True, status=states.SUCCESS)
  28. self.assertTrue(
  29. TaskMeta.objects.get_task(m1.task_id).status == states.SUCCESS)
  30. self.assertTrue(
  31. TaskMeta.objects.get_task(m2.task_id).status == states.SUCCESS)
  32. # Have to avoid save() because it applies the auto_now=True.
  33. TaskMeta.objects.filter(task_id=m1.task_id).update(
  34. date_done=datetime.now() - timedelta(days=10))
  35. expired = TaskMeta.objects.get_all_expired()
  36. self.assertTrue(m1 in expired)
  37. self.assertFalse(m2 in expired)
  38. self.assertFalse(m3 in expired)
  39. TaskMeta.objects.delete_expired()
  40. self.assertFalse(m1 in TaskMeta.objects.all())
  41. def test_tasksetmeta(self):
  42. m1 = self.createTaskSetMeta()
  43. m2 = self.createTaskSetMeta()
  44. m3 = self.createTaskSetMeta()
  45. self.assertTrue(unicode(m1).startswith("<TaskSet:"))
  46. self.assertTrue(m1.taskset_id)
  47. self.assertTrue(isinstance(m1.date_done, datetime))
  48. self.assertEquals(
  49. TaskSetMeta.objects.restore_taskset(m1.taskset_id).taskset_id,
  50. m1.taskset_id)
  51. # Have to avoid save() because it applies the auto_now=True.
  52. TaskSetMeta.objects.filter(taskset_id=m1.taskset_id).update(
  53. date_done=datetime.now() - timedelta(days=10))
  54. expired = TaskSetMeta.objects.get_all_expired()
  55. self.assertTrue(m1 in expired)
  56. self.assertFalse(m2 in expired)
  57. self.assertFalse(m3 in expired)
  58. TaskSetMeta.objects.delete_expired()
  59. self.assertFalse(m1 in TaskSetMeta.objects.all())