/** * @group retry */ public function testRetry() { $job = new Job('jms-job-queue:sometimes-failing-cmd', array(time())); $job->setMaxRetries(5); $this->em->persist($job); $this->em->flush($job); $this->doRun(array('--max-runtime' => 12, '--verbose' => null)); $this->assertEquals('finished', $job->getState()); $this->assertCount(2, $job->getRetryJobs()); $this->assertEquals(1, $job->getExitCode()); $this->assertEquals('failed', $job->getRetryJobs()->get(0)->getState()); $this->assertEquals(1, $job->getRetryJobs()->get(0)->getExitCode()); $this->assertEquals('finished', $job->getRetryJobs()->get(1)->getState()); $this->assertEquals(0, $job->getRetryJobs()->get(1)->getExitCode()); }
public function testIsRetryAllowed() { $job = new Job('a'); $this->assertFalse($job->isRetryAllowed()); $job->setMaxRetries(1); $this->assertTrue($job->isRetryAllowed()); $job->setState('running'); $retry = new Job('a'); $job->addRetryJob($retry); $this->assertFalse($job->isRetryAllowed()); }
public function testCloseJobDoesNotCreateMoreThanAllowedRetries() { $a = new Job('a'); $a->setMaxRetries(2); $a->setState('running'); $this->em->persist($a); $this->em->flush(); $this->dispatcher->expects($this->at(0))->method('dispatch')->with('jms_job_queue.job_state_change', new StateChangeEvent($a, 'failed')); $this->dispatcher->expects($this->at(1))->method('dispatch')->with('jms_job_queue.job_state_change', new \PHPUnit_Framework_Constraint_Not($this->equalTo(new StateChangeEvent($a, 'failed')))); $this->dispatcher->expects($this->at(2))->method('dispatch')->with('jms_job_queue.job_state_change', new \PHPUnit_Framework_Constraint_Not($this->equalTo(new StateChangeEvent($a, 'failed')))); $this->assertCount(0, $a->getRetryJobs()); $this->repo->closeJob($a, 'failed'); $this->assertEquals('running', $a->getState()); $this->assertCount(1, $a->getRetryJobs()); $a->getRetryJobs()->first()->setState('running'); $this->repo->closeJob($a->getRetryJobs()->first(), 'failed'); $this->assertCount(2, $a->getRetryJobs()); $this->assertEquals('failed', $a->getRetryJobs()->first()->getState()); $this->assertEquals('running', $a->getState()); $a->getRetryJobs()->last()->setState('running'); $this->repo->closeJob($a->getRetryJobs()->last(), 'terminated'); $this->assertCount(2, $a->getRetryJobs()); $this->assertEquals('terminated', $a->getRetryJobs()->last()->getState()); $this->assertEquals('terminated', $a->getState()); $this->em->clear(); $reloadedA = $this->em->find('JMSJobQueueBundle:Job', $a->getId()); $this->assertCount(2, $reloadedA->getRetryJobs()); }