def setUp(self): self.schedule_at = timezone.now() - timedelta(days=1) self.jobs = [ schedule_job(self.schedule_at, 'math.pow', args=(2, 3)), schedule_job(self.schedule_at, 'math.pow', args=(5, 2)) ]
def test_run_jobs_failed(self): job = schedule_job(self.now - timedelta(hours=1), 'math.pow') self.assertEqual(job.status, ScheduledJob.STATUS_SCHEDULED) with self.assertRaises(TypeError): run_jobs(now=self.now) job.refresh_from_db() self.assertEqual(job.status, ScheduledJob.STATUS_FAILED)
def test_run_scheduled_jobs(self): job1 = schedule_job(self.now - timedelta(hours=2), 'math.pow', args=(2, 2)) job2 = schedule_job(self.now - timedelta(hours=1), 'math.pow', args=(2, 3)) _run_scheduled_jobs(self.now, False, False) job1.refresh_from_db() self.assertEqual(job1.status, ScheduledJob.STATUS_COMPLETE) self.assertEqual(job1.return_value, u'4.0') job2.refresh_from_db() self.assertEqual(job2.status, ScheduledJob.STATUS_COMPLETE) self.assertEqual(job2.return_value, u'8.0') self.assertLess(job1.execution_start, job2.execution_start)
def test_expire_jobs(self): job = schedule_job(self.now - timedelta(hours=1), 'math.pow', args=(2, 3)) self.assertEqual(job.status, ScheduledJob.STATUS_SCHEDULED) _expire_jobs(self.now + timedelta(days=60)) job.refresh_from_db() self.assertEqual(job.status, ScheduledJob.STATUS_EXPIRED)
def test_run_jobs_complete(self): job = schedule_job(self.now - timedelta(hours=1), 'math.pow', args=(2, 3)) self.assertEqual(job.status, ScheduledJob.STATUS_SCHEDULED) run_jobs(now=self.now) job.refresh_from_db() self.assertEqual(job.status, ScheduledJob.STATUS_COMPLETE) self.assertEqual(job.return_value, u'8.0')
def test_cmd_ignore_errors(self): """ Test invocation of command with '-i' argument to keep processing jobs even if a job fails. Ensure the non-failing jobs are marked as completed and the error job is marked as failed. """ schedule_at = self.schedule_at - timedelta(days=1) error_job = schedule_job(schedule_at, 'math.funky_error') self.assertEqual( 3, ScheduledJob.objects.filter( status=ScheduledJob.STATUS_SCHEDULED).count()) call_command('runscheduledjobs', '-i') error_job.refresh_from_db() self.assertEqual(error_job.status, ScheduledJob.STATUS_FAILED) self.assertEqual( 2, ScheduledJob.objects.filter( status=ScheduledJob.STATUS_COMPLETE).count())