def test_create(self):
        fixed_dt = timezone.now() + timedelta(seconds=10)
        schedule = TaskSchedule.create({'run_at': fixed_dt})
        self.assertEqual(schedule.run_at, fixed_dt)
        self.assertEqual(0, schedule.priority)
        self.assertEqual(TaskSchedule.SCHEDULE, schedule.action)

        schedule = {
            'run_at': fixed_dt,
            'priority': 2,
            'action': TaskSchedule.RESCHEDULE_EXISTING
        }
        schedule = TaskSchedule.create(schedule)
        self.assertEqual(schedule.run_at, fixed_dt)
        self.assertEqual(2, schedule.priority)
        self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)

        schedule = TaskSchedule.create(0)
        self._within_one_second(schedule.run_at, timezone.now())

        schedule = TaskSchedule.create(10)
        self._within_one_second(schedule.run_at,
                                timezone.now() + timedelta(seconds=10))

        schedule = TaskSchedule.create(TaskSchedule(run_at=fixed_dt))
        self.assertEqual(schedule.run_at, fixed_dt)
        self.assertEqual(0, schedule.priority)
        self.assertEqual(TaskSchedule.SCHEDULE, schedule.action)
    def test_create(self):
        fixed_dt = timezone.now() + timedelta(seconds=10)
        schedule = TaskSchedule.create({'run_at': fixed_dt})
        self.assertEqual(schedule.run_at, fixed_dt)
        self.assertEqual(0, schedule.priority)
        self.assertEqual(TaskSchedule.SCHEDULE, schedule.action)

        schedule = {'run_at': fixed_dt, 'priority': 2,
                    'action': TaskSchedule.RESCHEDULE_EXISTING}
        schedule = TaskSchedule.create(schedule)
        self.assertEqual(schedule.run_at, fixed_dt)
        self.assertEqual(2, schedule.priority)
        self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)

        schedule = TaskSchedule.create(0)
        self._within_one_second(schedule.run_at, timezone.now())

        schedule = TaskSchedule.create(10)
        self._within_one_second(schedule.run_at,
                                timezone.now() + timedelta(seconds=10))

        schedule = TaskSchedule.create(TaskSchedule(run_at=fixed_dt))
        self.assertEqual(schedule.run_at, fixed_dt)
        self.assertEqual(0, schedule.priority)
        self.assertEqual(TaskSchedule.SCHEDULE, schedule.action)
    def test_merge(self):
        default = TaskSchedule(run_at=10, priority=2,
                               action=TaskSchedule.RESCHEDULE_EXISTING)
        schedule = TaskSchedule.create(20).merge(default)

        self._within_one_second(timezone.now() + timedelta(seconds=20),
                                schedule.run_at)
        self.assertEqual(2, schedule.priority)
        self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)

        schedule = TaskSchedule.create({'priority': 0}).merge(default)
        self._within_one_second(timezone.now() + timedelta(seconds=10),
                                schedule.run_at)
        self.assertEqual(0, schedule.priority)
        self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)

        action = TaskSchedule.CHECK_EXISTING
        schedule = TaskSchedule.create({'action': action}).merge(default)
        self._within_one_second(timezone.now() + timedelta(seconds=10),
                                schedule.run_at)
        self.assertEqual(2, schedule.priority)
        self.assertEqual(action, schedule.action)
Example #4
0
    def test_merge(self):
        default = TaskSchedule(run_at=10, priority=2,
                               action=TaskSchedule.RESCHEDULE_EXISTING)
        schedule = TaskSchedule.create(20).merge(default)

        self._within_one_second(timezone.now() + timedelta(seconds=20),
                                schedule.run_at)
        self.assertEqual(2, schedule.priority)
        self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)

        schedule = TaskSchedule.create({'priority': 0}).merge(default)
        self._within_one_second(timezone.now() + timedelta(seconds=10),
                                schedule.run_at)
        self.assertEqual(0, schedule.priority)
        self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)

        action = TaskSchedule.CHECK_EXISTING
        schedule = TaskSchedule.create({'action': action}).merge(default)
        self._within_one_second(timezone.now() + timedelta(seconds=10),
                                schedule.run_at)
        self.assertEqual(2, schedule.priority)
        self.assertEqual(action, schedule.action)
Example #5
0
class TestTaskProxy(unittest.TestCase):
 def setUp(self): super(TestTaskProxy, self).setUp() self.proxy = tasks.background()(record_task)
 def test_run_task(self):        tasks.run_task(self.proxy.name, [], {}) self.assertEqual(((), {}), _recorded.pop())
        tasks.run_task(self.proxy.name, ['hi'], {}) self.assertEqual((('hi',), {}), _recorded.pop())
        tasks.run_task(self.proxy.name, [], {'kw': 1}) self.assertEqual(((), {'kw': 1}), _recorded.pop())

class TestTaskSchedule(unittest.TestCase):
 def test_priority(self): self.assertEqual(0, TaskSchedule().priority) self.assertEqual(0, TaskSchedule(priority=0).priority) self.assertEqual(1, TaskSchedule(priority=1).priority) self.assertEqual(2, TaskSchedule(priority=2).priority)
 def _within_one_second(self, d1, d2): self.failUnless(isinstance(d1, datetime)) self.failUnless(isinstance(d2, datetime)) self.failUnless(abs(d1 - d2) <= timedelta(seconds=1))
 def test_run_at(self): for schedule in [None, 0, timedelta(seconds=0)]:            now = datetime_now()            run_at = TaskSchedule(run_at=schedule).run_at self._within_one_second(run_at, now)
        now = datetime_now()        run_at = TaskSchedule(run_at=now).run_at self._within_one_second(run_at, now)
        fixed_dt = datetime_now() + timedelta(seconds=60)        run_at = TaskSchedule(run_at=fixed_dt).run_at self._within_one_second(run_at, fixed_dt)
        run_at = TaskSchedule(run_at=90).run_at self._within_one_second(run_at, datetime_now() + timedelta(seconds=90))
        run_at = TaskSchedule(run_at=timedelta(seconds=35)).run_at self._within_one_second(run_at, datetime_now() + timedelta(seconds=35))
 def test_create(self):        fixed_dt = datetime_now() + timedelta(seconds=10)        schedule = TaskSchedule.create({'run_at': fixed_dt}) self.assertEqual(schedule.run_at, fixed_dt) self.assertEqual(0, schedule.priority) self.assertEqual(TaskSchedule.SCHEDULE, schedule.action)
        schedule = {'run_at': fixed_dt, 'priority': 2, 'action': TaskSchedule.RESCHEDULE_EXISTING}        schedule = TaskSchedule.create(schedule) self.assertEqual(schedule.run_at, fixed_dt) self.assertEqual(2, schedule.priority) self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)
        schedule = TaskSchedule.create(0) self._within_one_second(schedule.run_at, datetime_now())
        schedule = TaskSchedule.create(10) self._within_one_second(schedule.run_at,                                datetime_now() + timedelta(seconds=10))
        schedule = TaskSchedule.create(TaskSchedule(run_at=fixed_dt)) self.assertEqual(schedule.run_at, fixed_dt) self.assertEqual(0, schedule.priority) self.assertEqual(TaskSchedule.SCHEDULE, schedule.action)
 def test_merge(self):        default = TaskSchedule(run_at=10, priority=2, action=TaskSchedule.RESCHEDULE_EXISTING)        schedule = TaskSchedule.create(20).merge(default)
 self._within_one_second(datetime_now() + timedelta(seconds=20),                                schedule.run_at) self.assertEqual(2, schedule.priority) self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)
        schedule = TaskSchedule.create({'priority': 0}).merge(default) self._within_one_second(datetime_now() + timedelta(seconds=10),                                schedule.run_at) self.assertEqual(0, schedule.priority) self.assertEqual(TaskSchedule.RESCHEDULE_EXISTING, schedule.action)
        action = TaskSchedule.CHECK_EXISTING        schedule = TaskSchedule.create({'action': action}).merge(default) self._within_one_second(datetime_now() + timedelta(seconds=10),                                schedule.run_at) self.assertEqual(2, schedule.priority) self.assertEqual(action, schedule.action)
 def test_repr(self): self.assertEqual('TaskSchedule(run_at=10, priority=0)', repr(TaskSchedule(run_at=10, priority=0)))

class TestSchedulingTasks(TransactionTestCase):
 def test_background_gets_scheduled(self): self.result = None
 @tasks.background(name='test_background_gets_scheduled') def set_result(result): self.result = result
 # calling set_result should now actually create a record in the db        set_result(1)
        all_tasks = Task.objects.all() self.assertEqual(1, all_tasks.count())        task = all_tasks[0] self.assertEqual('test_background_gets_scheduled', task.task_name) self.assertEqual('[[1], {}]', task.task_params)