/** * Defer task. * * @param int $pid * @param callable $deferrer * * @return $this */ public function defer($pid, $deferrer) { $connection = $this->entityManager->getConnection(); $this->entity->setPid($pid); $this->entityManager->flush(); $connection->close(); $exitCode = $deferrer(); $connection->connect(); $this->entity->setExitCode($exitCode); $this->entityManager->flush(); return $this; }
/** * Test that all terminated tasks can be found. * * @group database */ public function testFindingAllTerminated() { $entityManager = $this->getEntityManager(); $entityOne = new TaskEntity(); $entityOne->setPriority(TaskEntity::DEFAULT_PRIORITY); $entityOne->setCommandline('foo'); $entityOne->setExitCode(0); $entityTwo = new TaskEntity(); $entityTwo->setPriority(TaskEntity::DEFAULT_PRIORITY); $entityTwo->setCommandline('bar'); $entityManager->persist($entityOne); $entityManager->persist($entityTwo); $entityManager->flush(); $class = $entityManager->getClassMetadata(TaskEntity::class); $repository = new TaskEntityRepository($entityManager, $class); $entities = $repository->findAllWithNoExitCode(); $this->assertCount(1, $entities); $this->assertSame('foo', $entities[0]->getCommandline()); }