/** * @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']); }
/** * @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); } }
/** * @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']]); } }