Esempio n. 1
0
 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));
     }
 }
Esempio n. 2
0
 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));
 }