Example #1
0
    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))
        ]
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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')
Example #6
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())