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)
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)
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)
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)
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)