Esempio n. 1
0
 def test_start_increments_attempt_count(self):
     """Job.start should increment the attempt count."""
     job = Job(date_finished=UTC_NOW)
     self.assertEqual(0, job.attempt_count)
     job.start()
     self.assertEqual(1, job.attempt_count)
     job.queue()
     job.start()
     self.assertEqual(2, job.attempt_count)
Esempio n. 2
0
    def test_queue(self):
        """Job.queue should update the job appropriately.

        It should set date_finished, and set status to WAITING.
        """
        job = Job(_status=JobStatus.RUNNING)
        self.assertEqual(None, job.date_finished)
        job.queue()
        self.assertNotEqual(None, job.date_finished)
        self.assertEqual(job.status, JobStatus.WAITING)
Esempio n. 3
0
    def test_queue_manages_transactions(self):
        # Job.queue() does not commit the transaction by default.
        job = Job()
        job.start()
        with TransactionRecorder() as recorder:
            job.queue()
            self.assertEqual([], recorder.transaction_calls)

        # If explicitly specified, Job.queue() commits the transaction.
        # Note that there is an additional commit to update the job status.
        job = Job()
        job.start()
        with TransactionRecorder() as recorder:
            job.queue(manage_transaction=True)
            self.assertEqual(['commit', 'commit'], recorder.transaction_calls)

        # If abort_transaction=True is also passed to Job.queue()
        # the transaction is first aborted, then two times committed.
        job = Job()
        job.start()
        with TransactionRecorder() as recorder:
            job.queue(manage_transaction=True, abort_transaction=True)
            self.assertEqual(
                ['abort', 'commit', 'commit'], recorder.transaction_calls)
Esempio n. 4
0
 def test_queue_clears_lease_expires(self):
     """Queueing a job releases its lease."""
     job = Job(_status=JobStatus.RUNNING)
     job.lease_expires = UTC_NOW
     job.queue()
     self.assertIsNone(job.lease_expires)