12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- from __future__ import absolute_import
- from datetime import timedelta
- import sys
- sys.modules.pop('celery.task', None)
- from celery.schedules import schedule
- from celery.task import (
- periodic_task,
- PeriodicTask
- )
- from celery.utils.timeutils import timedelta_seconds
- from celery.tests.case import AppCase, depends_on_current_app
- class test_Task(AppCase):
- def test_base_task_inherits_magic_kwargs_from_app(self):
- from celery.task import Task as OldTask
- class timkX(OldTask):
- abstract = True
- with self.Celery(set_as_current=False,
- accept_magic_kwargs=True) as app:
- timkX.bind(app)
- # see #918
- self.assertFalse(timkX.accept_magic_kwargs)
- from celery import Task as NewTask
- class timkY(NewTask):
- abstract = True
- timkY.bind(app)
- self.assertFalse(timkY.accept_magic_kwargs)
- @depends_on_current_app
- class test_periodic_tasks(AppCase):
- def setup(self):
- @periodic_task(app=self.app, shared=False,
- run_every=schedule(timedelta(hours=1), app=self.app))
- def my_periodic():
- pass
- self.my_periodic = my_periodic
- def now(self):
- return self.app.now()
- def test_must_have_run_every(self):
- with self.assertRaises(NotImplementedError):
- type('Foo', (PeriodicTask, ), {'__module__': __name__})
- def test_remaining_estimate(self):
- s = self.my_periodic.run_every
- self.assertIsInstance(
- s.remaining_estimate(s.maybe_make_aware(self.now())),
- timedelta)
- def test_is_due_not_due(self):
- due, remaining = self.my_periodic.run_every.is_due(self.now())
- self.assertFalse(due)
- # This assertion may fail if executed in the
- # first minute of an hour, thus 59 instead of 60
- self.assertGreater(remaining, 59)
- def test_is_due(self):
- p = self.my_periodic
- due, remaining = p.run_every.is_due(
- self.now() - p.run_every.run_every,
- )
- self.assertTrue(due)
- self.assertEqual(remaining,
- timedelta_seconds(p.run_every.run_every))
- def test_schedule_repr(self):
- p = self.my_periodic
- self.assertTrue(repr(p.run_every))
|