public function testFindSchedules() { /** * @var ScheduleManager $scheduleManager */ $scheduleManager = $this->getContainer()->get('abc.job.schedule_manager'); /** * @var JobManagerInterface $jobManager */ $jobManager = $this->getContainer()->get('abc.job.job_manager'); $schedule1 = $scheduleManager->create(); $schedule1->setType('cron'); $schedule1->setExpression('foobar'); $schedule1->setIsActive(true); $job1 = $jobManager->create('foo'); $job1->setStatus(Status::REQUESTED()); $job1->addSchedule($schedule1); $jobManager->save($job1); $schedule2 = $scheduleManager->create(); $schedule2->setType('cron'); $schedule2->setExpression('barfoo'); $schedule2->setIsActive(false); $job2 = $jobManager->create('foo'); $job2->setStatus(Status::REQUESTED()); $job2->addSchedule($schedule2); $jobManager->save($job2); $scheduleManager->save($schedule2); $schedules = $scheduleManager->findSchedules(); $this->assertCount(1, $schedules); $this->assertEquals($schedule1->getExpression(), $schedules[0]->getExpression()); }
public function testJobCanRemoveSchedule() { // create scheduled job $schedule = $this->getScheduleManager()->create('cron', '* * * * *'); $ticket = $this->getJobManager()->addJob('remove_schedule', null, $schedule); $this->assertCount(1, $this->getScheduleManager()->findSchedules()); $this->assertEquals(Status::REQUESTED(), $this->getJobManager()->get($ticket)->getStatus()); // process schedules $this->runConsole("abc:scheduler:process", array("--iteration" => 1)); $this->processJobs(); $this->assertTrue($this->containsMessage('removed schedule', $this->getJobManager()->getLogs($ticket))); $this->assertEquals(Status::PROCESSED(), $this->getJobManager()->get($ticket)->getStatus()); $this->assertEmpty($this->getScheduleManager()->findSchedules()); }
/** * {@inheritdoc} */ public function add(JobInterface $job) { if (null != $this->validator) { $this->logger->debug('Validate job'); $errors = $this->validator->validate($job); if (count($errors) > 0) { $this->logger->debug('Validation failed with errors', ['errors' => $errors]); throw new ValidationFailedException($errors); } } if (!$this->jobManager->isManagerOf($job)) { $job = $this->helper->copyJob($job, $this->jobManager->create()); } $job->setStatus(Status::REQUESTED()); $job->setProcessingTime(0); $this->jobManager->save($job); $this->logger->info(sprintf('Added job %s of type "%s"', $job->getTicket(), $job->getType()), ['parameters' => $job->getParameters(), 'schedules' => $job->getSchedules()]); if (!$job->hasSchedules()) { $this->publishJob($job); } return $job; }
public function testDoExitControllerReturnsFalse() { $this->controller->expects($this->any())->method('doStop')->willReturn(false); $this->assertFalse($this->subject->doStop()); $this->assertEquals(Status::REQUESTED(), $this->job->getStatus()); }
public static function provideNonCancelStatus() { return [[Status::REQUESTED()], [Status::PROCESSING()], [Status::PROCESSED()], [Status::SLEEPING()], [Status::ERROR()]]; }
/** * @return array */ public static function getNonTerminatedStatus() { return [[Status::REQUESTED()], [Status::SLEEPING()], [Status::PROCESSING()]]; }
/** * @return array */ public static function getFindByCountData() { return [[['type' => 'foo'], 1], [['type' => ['foo', 'bar']], 2], [['type' => 'undefined'], 0], [['type' => 'foo', 'status' => Status::REQUESTED()], 1], [['type' => 'foo', 'status' => Status::PROCESSING()], 0], [['type' => ['$match' => 'foo']], 2]]; }
public function testFindByWithStatus() { $job = $this->subject->create('JobType', null, new Schedule('Type', 'Expression')); $job->setStatus(Status::REQUESTED()); $this->subject->save($job); $this->assertCount(1, $this->subject->findBy(['status' => Status::REQUESTED()])); $this->assertEmpty($this->subject->findBy(['status' => Status::PROCESSED()])); }