Skip to content
Snippets Groups Projects
Commit ab81caa3 authored by Sascha Grossenbacher's avatar Sascha Grossenbacher
Browse files

Issue #3425760: implement QueueFactoryInterface

parent 481fc171
Branches
Tags
1 merge request!28enable next minor/major testing
Pipeline #194285 canceled
......@@ -2,13 +2,21 @@
namespace Drupal\redis\Queue;
use Drupal\Core\Queue\QueueFactoryInterface;
use Drupal\Core\Site\Settings;
use Drupal\redis\ClientFactory;
// BC for Drupal core 10.1 and earlier.
if (!interface_exists(QueueFactoryInterface::class)) {
interface BCQueueFactoryInterface {
}
class_alias(BCQueueFactoryInterface::class, QueueFactoryInterface::class);
}
/**
* Defines the queue factory for the Redis backend.
*/
class QueueRedisFactory {
class QueueRedisFactory implements QueueFactoryInterface {
/**
* Queue implementation class namespace prefix.
......
......@@ -5,6 +5,7 @@ namespace Drupal\Tests\redis\Functional;
use Drupal\Component\Utility\OpCodeCache;
use Drupal\Core\Database\Database;
use Drupal\Core\Site\Settings;
use Drupal\cron_queue_test\Plugin\QueueWorker\CronQueueTestException;
use Drupal\Tests\BrowserTestBase;
use Drupal\Tests\field_ui\Traits\FieldUiTestTrait;
use Drupal\Tests\redis\Traits\RedisTestInterfaceTrait;
......@@ -24,7 +25,7 @@ class WebTest extends BrowserTestBase {
*
* @var array
*/
protected static $modules = ['redis', 'block'];
protected static $modules = ['redis', 'block', 'cron_queue_test'];
/**
* {@inheritdoc}
......@@ -196,6 +197,18 @@ class WebTest extends BrowserTestBase {
$this->clickLink($update['title[0][value]']);
$this->assertSession()->responseContains($edit['body[0][value]']);
// Manually add a queue item and process it, to test the queue factory.
// Get the queue to test the normal Exception.
$queue = \Drupal::queue(CronQueueTestException::PLUGIN_ID);
// Enqueue an item for processing.
$queue->createItem([$this->randomMachineName() => $this->randomMachineName()]);
// Run cron; the worker for this queue should throw an exception and handle
// it.
\Drupal::service('cron')->run();
$this->assertEquals(1, \Drupal::state()->get('cron_queue_test_exception'));
// Get database schema.
$db_schema = Database::getConnection()->schema();
$this->assertFalse($db_schema->tableExists('cache_default'));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment