jobManager = $this->getContainer()->get('jobManager'); $this->entityManager = $this->getContainer()->get('entityManager'); $this->schedulerFactory = $this->getContainer() ->get('injectableFactory') ->create(JobSchedulerFactory::class); } public function testScheduler(): void { $job = $this->schedulerFactory ->create() ->setClassName(TestJob::class) ->setQueue(QueueName::Q0) ->schedule(); $this->jobManager->processQueue(QueueName::Q0, 10); $jobReloaded = $this->entityManager->getEntity('Job', $job->getId()); $this->assertEquals(Status::SUCCESS, $jobReloaded->getStatus()); } public function testProcessQueueNoGroup(): void { $job = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'queue' => 'q0', ]); $this->jobManager->processQueue('q0', 10); $jobReloaded = $this->entityManager->getEntity('Job', $job->getId()); $this->assertEquals(Status::SUCCESS, $jobReloaded->getStatus()); } public function testProcessQueueGroupAll(): void { $job1 = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'group' => 'group-0', ]); $job2 = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'group' => 'group-1', ]); $job3 = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'group' => 'group-1', ]); $this->jobManager->process(); $job1Reloaded = $this->entityManager->getEntity('Job', $job1->getId()); $job2Reloaded = $this->entityManager->getEntity('Job', $job2->getId()); $job3Reloaded = $this->entityManager->getEntity('Job', $job3->getId()); $this->assertEquals(Status::SUCCESS, $job1Reloaded->getStatus()); $this->assertEquals(Status::SUCCESS, $job2Reloaded->getStatus()); $this->assertEquals(Status::SUCCESS, $job3Reloaded->getStatus()); } public function testProcessQueueGroupSeparate(): void { $job1 = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'group' => 'group-0', ]); $job2 = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'group' => 'group-1', ]); $job3 = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'group' => 'group-1', ]); $this->jobManager->processGroup('group-1', 100); $job1Reloaded = $this->entityManager->getEntity('Job', $job1->getId()); $job2Reloaded = $this->entityManager->getEntity('Job', $job2->getId()); $job3Reloaded = $this->entityManager->getEntity('Job', $job3->getId()); $this->assertEquals(Status::PENDING, $job1Reloaded->getStatus()); $this->assertEquals(Status::SUCCESS, $job2Reloaded->getStatus()); $this->assertEquals(Status::SUCCESS, $job3Reloaded->getStatus()); $this->jobManager->processGroup('group-0', 100); $job1Reloaded2 = $this->entityManager->getEntity('Job', $job1->getId()); $this->assertEquals(Status::SUCCESS, $job1Reloaded2->getStatus()); } public function testRunJobById(): void { $job = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', 'status' => Status::READY, ]); $this->jobManager->runJobById($job->id); $jobReloaded = $this->entityManager->getEntity('Job', $job->id); $this->assertEquals(Status::SUCCESS, $jobReloaded->getStatus()); } public function testRunJobByEntity(): void { $job = $this->entityManager->createEntity('Job', [ 'job' => 'Dummy', ]); $this->jobManager->runJob($job); $jobReloaded = $this->entityManager->getEntity('Job', $job->id); $this->assertEquals(Status::SUCCESS, $jobReloaded->getStatus()); } public function testRunJobWithClassName(): void { $job = $this->entityManager->createEntity('Job', [ 'className' => TestJob::class, 'data' => (object) [ 'test' => '1', ], ]); $this->jobManager->runJob($job); $jobReloaded = $this->entityManager->getEntity('Job', $job->getId()); $this->assertEquals(Status::SUCCESS, $jobReloaded->getStatus()); } }