/** * {@inheritdoc} */ public function load(ObjectManager $manager) { foreach ($this->data as $data) { $entity = new Job($data['command'], $data['args'], $data['confirmed']); foreach ($data['state'] as $state) { $entity->setState($state); } $this->setReference($data['reference'], $entity); $manager->persist($entity); } $manager->flush(); }
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()); }