ReplicaKillSwitchTest.php in Drupal 8
File
core/tests/Drupal/KernelTests/Core/Database/ReplicaKillSwitchTest.php
View source
<?php
namespace Drupal\KernelTests\Core\Database;
use Drupal\Core\Database\Database;
use Drupal\Core\DrupalKernel;
use Drupal\Core\Site\Settings;
use Drupal\KernelTests\KernelTestBase;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class ReplicaKillSwitchTest extends KernelTestBase {
public function testSystemInitIgnoresSecondaries() {
$connection_info = Database::getConnectionInfo('default');
Database::addConnectionInfo('default', 'replica', $connection_info['default']);
$service = \Drupal::service('database.replica_kill_switch');
$service
->trigger();
$class_loader = (require $this->root . '/autoload.php');
$kernel = new DrupalKernel('testing', $class_loader, FALSE);
$event = new GetResponseEvent($kernel, Request::create('http://example.com'), HttpKernelInterface::MASTER_REQUEST);
$service
->checkReplicaServer($event);
$db1 = Database::getConnection('default', 'default');
$db2 = Database::getConnection('replica', 'default');
$this
->assertSame($db1, $db2, 'System Init ignores secondaries when requested.');
$session = \Drupal::service('session');
$this
->assertTrue($session
->has('ignore_replica_server'));
$expected = \Drupal::time()
->getRequestTime() + Settings::get('maximum_replication_lag', 300);
$this
->assertEquals($expected, $session
->get('ignore_replica_server'));
}
}