DatabaseQueue example


class QueueTest extends KernelTestBase {

  /** * Tests the System queue. */
  public function testSystemQueue() {
    // Create two queues.     $queue1 = new DatabaseQueue($this->randomMachineName(), Database::getConnection());
    $queue1->createQueue();
    $queue2 = new DatabaseQueue($this->randomMachineName(), Database::getConnection());
    $queue2->createQueue();

    $this->runQueueTest($queue1$queue2);
  }

  /** * Tests the Memory queue. */
  public function testMemoryQueue() {
    
$time = $this->prophesize('Drupal\Component\Datetime\TimeInterface');
    $time->getCurrentTime()->willReturn($this->currentTime);
    $time->getCurrentMicroTime()->willReturn(100.0);
    $time->getRequestTime()->willReturn($this->currentTime);
    \Drupal::getContainer()->set('datetime.time', $time->reveal());
    $this->assertEquals($this->currentTime, \Drupal::time()->getCurrentTime());
    $this->assertEquals($this->currentTime, \Drupal::time()->getRequestTime());

    $realQueueFactory = $this->container->get('queue');
    $queue_factory = $this->prophesize(get_class($realQueueFactory));
    $database = new DatabaseQueue('cron_queue_test_database_delay_exception', $this->connection);
    $memory = new Memory('cron_queue_test_memory_delay_exception');
    $queue_factory->get('cron_queue_test_database_delay_exception', Argument::cetera())->willReturn($database);
    $queue_factory->get('cron_queue_test_memory_delay_exception', Argument::cetera())->willReturn($memory);
    $queue_factory->get(Argument::any(), Argument::cetera())->will(function D$args) use ($realQueueFactory) {
      return $realQueueFactory->get($args[0]$args[1] ?? FALSE);
    });

    $this->container->set('queue', $queue_factory->reveal());
  }

  /** * Tests that DelayedRequeueException behaves as expected when running cron. */
/** * Constructs a new queue object for a given name. * * @param string $name * The name of the collection holding key and value pairs. * * @return \Drupal\Core\Queue\DatabaseQueue * A key/value store implementation for the given $collection. */
  public function get($name) {
    return new DatabaseQueue($name$this->connection);
  }

}
Home | Imprint | This part of the site doesn't use cookies.