/** * @param \PHPUnit_Framework_MockObject_MockObject $entityManager * @param array $expected * @param int $callOrder */ protected function assertJMSJobPersist($entityManager, array $expected, $callOrder) { $entityManager->expects($this->at($callOrder))->method('persist')->with($this->isInstanceOf('JMS\\JobQueueBundle\\Entity\\Job'))->will($this->returnCallback(function (Job $jmsJob) use($expected) { $this->assertEquals(ExecuteProcessJobCommand::NAME, $jmsJob->getCommand()); $this->assertEquals($expected['commandArgs'], $jmsJob->getArgs()); $this->assertEquals($expected['priority'], $jmsJob->getPriority()); $timeShiftInterval = ProcessTrigger::convertSecondsToDateInterval($expected['timeShift']); $executeAfter = new \DateTime('now', new \DateTimeZone('UTC')); $executeAfter->add($timeShiftInterval); $this->assertLessThanOrEqual($executeAfter, $jmsJob->getExecuteAfter()); })); }
/** * Create JMS jobs for queued process jobs * * @param \Doctrine\ORM\EntityManager $entityManager */ protected function createJobs($entityManager) { if (empty($this->queuedJobs)) { return; } foreach ($this->queuedJobs as $timeShift => $processJobBatch) { foreach ($processJobBatch as $priority => $processJobs) { $args = array(); /** @var ProcessJob $processJob */ foreach ($processJobs as $processJob) { $args[] = '--id=' . $processJob->getId(); $this->logger->debug('Process queued', $processJob->getProcessTrigger(), $processJob->getData()); } $jmsJob = new Job(ExecuteProcessJobCommand::NAME, $args, true, Job::DEFAULT_QUEUE, $priority); if ($timeShift) { $timeShiftInterval = ProcessTrigger::convertSecondsToDateInterval($timeShift); $executeAfter = new \DateTime('now', new \DateTimeZone('UTC')); $executeAfter->add($timeShiftInterval); $jmsJob->setExecuteAfter($executeAfter); } $entityManager->persist($jmsJob); } } $this->queuedJobs = array(); $entityManager->flush(); }
/** * @param \DateInterval $interval * @param $seconds * @dataProvider dateIntervalAndSecondsDataProvider */ public function testConvertSecondsToDateInterval(\DateInterval $interval, $seconds) { $actualInterval = ProcessTrigger::convertSecondsToDateInterval($seconds); $this->assertEquals(ProcessTrigger::convertDateIntervalToSeconds($interval), ProcessTrigger::convertDateIntervalToSeconds($actualInterval)); }