/**
  * @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();
 }
Esempio n. 3
0
 /**
  * @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));
 }