Exemplo n.º 1
0
 /**
  * @covers ::delete
  */
 public function testRowCanBeDeletedFromTable()
 {
     $object = new stdClass();
     $this->database->insert('buffered_jobs', 1, ['object' => $object]);
     $row = $this->database->delete('buffered_jobs', 1);
     $this->assertSame([], $this->database->getAll('buffered_jobs'));
     $this->assertSame($object, $row['object']);
 }
Exemplo n.º 2
0
 /**
  * @return Generator
  */
 public function getJobsToRunGenerator()
 {
     $buffered_jobs = $this->sortBufferedJobs($this->filterFutureJobs($this->database->getAll('buffered_jobs')));
     $active_mutexes = $this->determineActiveMutexes($this->database->getAll('queued_jobs'));
     foreach ($buffered_jobs as $buffered_job) {
         if (isset($active_mutexes[$buffered_job['mutex_id']])) {
             continue;
         }
         $active_mutexes[$buffered_job['mutex_id']] = $buffered_job;
         if (isset($this->batched_jobs[$buffered_job['buffered_job_id']])) {
             continue;
         }
         (yield $buffered_job);
     }
 }
Exemplo n.º 3
0
 /**
  * @param string $finished_jobs_table
  * @param callable $job_runner
  */
 private function checkDatabaseRecordIsMoved($finished_jobs_table, callable $job_runner)
 {
     $uniqid = uniqid();
     $expected_job = ['name' => "some-job-{$uniqid}", 'params' => ['value' => $uniqid], 'meta' => ['buffered_job_id' => rand(1, 10)]];
     $this->database->insert('queued_jobs', $expected_job['meta']['buffered_job_id'], ['job_name' => $expected_job['name'], 'job_params' => json_encode($expected_job['params'])]);
     $this->worker_queue->push($expected_job['name'], $expected_job['params'], $expected_job['meta']);
     try {
         $this->worker_queue->runNext($job_runner);
     } finally {
         $job = current($this->database->getAll($finished_jobs_table));
         $this->assertEquals(['job_name' => $expected_job['name'], 'param' => $expected_job['params']['value'], 'meta' => $expected_job['meta']['buffered_job_id']], ['job_name' => $job['job_name'], 'param' => json_decode($job['job_params'], true)['value'], 'meta' => $expected_job['meta']['buffered_job_id']]);
     }
 }