Beispiel #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)
Beispiel #2
0
    def test_start(self):
        """Job.start should update the object appropriately.

        It should set date_started, clear date_finished, and set the status to
        RUNNING."""
        job = Job(date_finished=UTC_NOW)
        self.assertEqual(None, job.date_started)
        self.assertNotEqual(None, job.date_finished)
        job.start()
        self.assertNotEqual(None, job.date_started)
        self.assertEqual(None, job.date_finished)
        self.assertEqual(job.status, JobStatus.RUNNING)
Beispiel #3
0
    def test_start_manages_transactions(self):
        # Job.start() does not commit the transaction by default.
        with TransactionRecorder() as recorder:
            job = Job()
            job.start()
            self.assertEqual([], recorder.transaction_calls)

        # If explicitly specified, Job.start() commits the transaction.
        with TransactionRecorder() as recorder:
            job = Job()
            job.start(manage_transaction=True)
            self.assertEqual(['commit'], recorder.transaction_calls)
Beispiel #4
0
    def test_fail_manages_transactions(self):
        # Job.fail() does not commit the transaction by default.
        job = Job()
        job.start()
        with TransactionRecorder() as recorder:
            job.fail()
            self.assertEqual([], recorder.transaction_calls)

        # If explicitly specified, Job.fail() commits the transaction.
        # Note that there is an additional commit to update the job status.
        job = Job()
        job.start()
        with TransactionRecorder() as recorder:
            job.fail(manage_transaction=True)
            self.assertEqual(['abort', 'commit'], recorder.transaction_calls)
Beispiel #5
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)