public function testScan() { $queueName = 'test-' . substr(sha1(mt_rand()), 0, 6); $oneElementQueueName = 'test-' . substr(sha1(mt_rand()), 0, 6); $buffer = []; $jobs = []; $i = 0; $queue = new Queue($this->stream); $producer = new Producer($this->stream); $consumer = new Consumer($this->stream); $this->assertSame(0, $queue->len($queueName)); $jobs[] = $producer->addJob($queueName, Job::create(['body' => 'test-scan'])); $jobs[] = $producer->addJob($queueName, Job::create(['body' => 'test-scan'])); $jobs[] = $producer->addJob($queueName, Job::create(['body' => 'test-scan'])); $jobs[] = $producer->addJob($oneElementQueueName, Job::create(['body' => 'test-scan'])); $iterator = $queue->scan(0, 3, 1000, 0); $this->assertTrue($iterator->valid()); $first = $iterator->current(); while ($iterator->valid()) { $buffer[] = $iterator->current(); $this->assertSame($i++, $iterator->key()); $iterator->next(); } $this->assertContains($queueName, $buffer); $this->assertNotContains($oneElementQueueName, $buffer); $iterator->rewind(); $this->assertSame($first, $iterator->current()); // cleanup foreach ($jobs as $job) { $this->assertSame(1, $consumer->ack($job)); } }
public function testNack() { $queue = 'test-' . substr(sha1(mt_rand()), 0, 6); $consumer = new Consumer($this->stream); $producer = new Producer($this->stream); // unknown jobid $this->assertEquals(0, $consumer->nack(['D-dcb833cf-8YL1NT17e9+wsA/09NqxscQI-0551'])); $job = $producer->addJob($queue, Job::create(['body' => __METHOD__])); $jobConsumed = $consumer->getJob($queue); $this->assertSame($job->getId(), $jobConsumed->getId()); $this->assertEquals(1, $consumer->nack([$jobConsumed->getId()])); // NACK'd job should be reinserted $nackdJob = $consumer->getJob($queue); $this->assertEquals($job->getId(), $nackdJob->getId()); // cleanup $this->assertEquals(1, $consumer->ack($nackdJob)); }