Пример #1
0
 def test_runJob(self):
     """Ensure status is set to completed when a job runs to completion."""
     job_1, job_2 = self.makeTwoJobs()
     runner = JobRunner(job_1)
     runner.runJob(job_1, None)
     self.assertEqual(JobStatus.COMPLETED, job_1.job.status)
     self.assertEqual([job_1], runner.completed_jobs)
Пример #2
0
 def test_runJob(self):
     """Ensure status is set to completed when a job runs to completion."""
     job_1, job_2 = self.makeTwoJobs()
     runner = JobRunner(job_1)
     runner.runJob(job_1, None)
     self.assertEqual(JobStatus.COMPLETED, job_1.job.status)
     self.assertEqual([job_1], runner.completed_jobs)
Пример #3
0
 def test_runJob_raising_retry_error(self):
     """If a job raises a retry_error, it should be re-queued."""
     job = RaisingRetryJob('completion')
     runner = JobRunner([job])
     with self.expectedLog('Scheduling retry due to RetryError'):
         runner.runJob(job, None)
     self.assertEqual(JobStatus.WAITING, job.status)
     self.assertNotIn(job, runner.completed_jobs)
     self.assertIn(job, runner.incomplete_jobs)
Пример #4
0
 def test_runJob_raising_retry_error(self):
     """If a job raises a retry_error, it should be re-queued."""
     job = RaisingRetryJob('completion')
     runner = JobRunner([job])
     with self.expectedLog('Scheduling retry due to RetryError'):
         runner.runJob(job, None)
     self.assertEqual(JobStatus.WAITING, job.status)
     self.assertNotIn(job, runner.completed_jobs)
     self.assertIn(job, runner.incomplete_jobs)
Пример #5
0
    def test_runJob_with_SuspendJobException(self):
        # A job that raises SuspendJobError should end up suspended.
        job = NullJob('suspended')
        job.run = FakeMethod(failure=SuspendJobException())
        runner = JobRunner([job])
        runner.runJob(job, None)

        self.assertEqual(JobStatus.SUSPENDED, job.status)
        self.assertNotIn(job, runner.completed_jobs)
        self.assertIn(job, runner.incomplete_jobs)
Пример #6
0
    def test_runJob_with_SuspendJobException(self):
        # A job that raises SuspendJobError should end up suspended.
        job = NullJob('suspended')
        job.run = FakeMethod(failure=SuspendJobException())
        runner = JobRunner([job])
        runner.runJob(job, None)

        self.assertEqual(JobStatus.SUSPENDED, job.status)
        self.assertNotIn(job, runner.completed_jobs)
        self.assertIn(job, runner.incomplete_jobs)
Пример #7
0
 def test_runJob_exceeding_max_retries(self):
     """If a job exceeds maximum retries, it should raise normally."""
     job = RaisingRetryJob('completion')
     JobRunner([job]).runJob(job, None)
     self.assertEqual(JobStatus.WAITING, job.status)
     runner = JobRunner([job])
     with ExpectedException(RetryError, ''):
         runner.runJob(job, None)
     self.assertEqual(JobStatus.FAILED, job.status)
     self.assertNotIn(job, runner.completed_jobs)
     self.assertIn(job, runner.incomplete_jobs)
Пример #8
0
 def test_runJob_exceeding_max_retries(self):
     """If a job exceeds maximum retries, it should raise normally."""
     job = RaisingRetryJob('completion')
     JobRunner([job]).runJob(job, None)
     self.assertEqual(JobStatus.WAITING, job.status)
     runner = JobRunner([job])
     with ExpectedException(RetryError, ''):
         runner.runJob(job, None)
     self.assertEqual(JobStatus.FAILED, job.status)
     self.assertNotIn(job, runner.completed_jobs)
     self.assertIn(job, runner.incomplete_jobs)
Пример #9
0
 def test_runJob_raising_retry_error(self):
     """If a job raises a retry_error, it should be re-queued."""
     job = RaisingRetryJob('completion')
     runner = JobRunner([job])
     self.assertIs(None, job.scheduled_start)
     with self.expectedLog('Scheduling retry due to RetryError'):
         runner.runJob(job, None)
     self.assertEqual(JobStatus.WAITING, job.status)
     expected_delay = datetime.now(UTC) + timedelta(minutes=10)
     self.assertThat(
         job.scheduled_start,
         MatchesAll(GreaterThan(expected_delay - timedelta(minutes=1)),
                    LessThan(expected_delay + timedelta(minutes=1))))
     self.assertIsNone(job.lease_expires)
     self.assertNotIn(job, runner.completed_jobs)
     self.assertIn(job, runner.incomplete_jobs)