669 |
669 |
for op in job.ops))
|
670 |
670 |
|
671 |
671 |
opexec = _FakeExecOpCodeForProc(queue, None, None)
|
672 |
|
jqueue._JobProcessor(queue, opexec, job)()
|
|
672 |
self.assert_(jqueue._JobProcessor(queue, opexec, job)())
|
|
673 |
|
|
674 |
# Check result
|
|
675 |
self.assertEqual(job.CalcStatus(), constants.JOB_STATUS_CANCELED)
|
|
676 |
self.assertEqual(job.GetInfo(["status"]), [constants.JOB_STATUS_CANCELED])
|
|
677 |
self.assertFalse(job.start_timestamp)
|
|
678 |
self.assert_(job.end_timestamp)
|
|
679 |
self.assertFalse(compat.any(op.start_timestamp or op.end_timestamp
|
|
680 |
for op in job.ops))
|
|
681 |
self.assertEqual(job.GetInfo(["opstatus", "opresult"]),
|
|
682 |
[[constants.OP_STATUS_CANCELED for _ in job.ops],
|
|
683 |
["Job canceled by request" for _ in job.ops]])
|
|
684 |
|
|
685 |
def testCancelWhileWaitlockInQueue(self):
|
|
686 |
queue = _FakeQueueForProc()
|
|
687 |
|
|
688 |
ops = [opcodes.OpTestDummy(result="Res%s" % i, fail=False)
|
|
689 |
for i in range(5)]
|
|
690 |
|
|
691 |
# Create job
|
|
692 |
job_id = 8645
|
|
693 |
job = self._CreateJob(queue, job_id, ops)
|
|
694 |
|
|
695 |
self.assertEqual(job.CalcStatus(), constants.JOB_STATUS_QUEUED)
|
|
696 |
|
|
697 |
job.ops[0].status = constants.OP_STATUS_WAITLOCK
|
|
698 |
|
|
699 |
assert len(job.ops) == 5
|
|
700 |
|
|
701 |
self.assertEqual(job.CalcStatus(), constants.JOB_STATUS_WAITLOCK)
|
|
702 |
|
|
703 |
# Mark as cancelling
|
|
704 |
(success, _) = job.Cancel()
|
|
705 |
self.assert_(success)
|
|
706 |
|
|
707 |
self.assertRaises(IndexError, queue.GetNextUpdate)
|
|
708 |
|
|
709 |
self.assert_(compat.all(op.status == constants.OP_STATUS_CANCELING
|
|
710 |
for op in job.ops))
|
|
711 |
|
|
712 |
opexec = _FakeExecOpCodeForProc(queue, None, None)
|
|
713 |
self.assert_(jqueue._JobProcessor(queue, opexec, job)())
|
673 |
714 |
|
674 |
715 |
# Check result
|
675 |
716 |
self.assertEqual(job.CalcStatus(), constants.JOB_STATUS_CANCELED)
|