->getMock();
$lb1->method( 'getConnection' )->willReturn( $mockDB1 );
$lb1->method( 'getServerCount' )->willReturn( 2 );
+ $lb1->method( 'hasReplicaServers' )->willReturn( true );
+ $lb1->method( 'hasStreamingReplicaServers' )->willReturn( true );
$lb1->method( 'getAnyOpenConnection' )->willReturn( $mockDB1 );
$lb1->method( 'hasOrMadeRecentMasterChanges' )->will( $this->returnCallback(
function () use ( $mockDB1 ) {
}
) );
$lb1->method( 'getMasterPos' )->willReturn( $m1Pos );
+ $lb1->method( 'getReplicaResumePos' )->willReturn( $m1Pos );
$lb1->method( 'getServerName' )->with( 0 )->willReturn( 'master1' );
// Master DB 2
$mockDB2 = $this->getMockBuilder( IDatabase::class )
->getMock();
$lb2->method( 'getConnection' )->willReturn( $mockDB2 );
$lb2->method( 'getServerCount' )->willReturn( 2 );
+ $lb2->method( 'hasReplicaServers' )->willReturn( true );
+ $lb2->method( 'hasStreamingReplicaServers' )->willReturn( true );
$lb2->method( 'getAnyOpenConnection' )->willReturn( $mockDB2 );
$lb2->method( 'hasOrMadeRecentMasterChanges' )->will( $this->returnCallback(
function () use ( $mockDB2 ) {
}
) );
$lb2->method( 'getMasterPos' )->willReturn( $m2Pos );
+ $lb2->method( 'getReplicaResumePos' )->willReturn( $m2Pos );
$lb2->method( 'getServerName' )->with( 0 )->willReturn( 'master2' );
$bag = new HashBagOStuff();
->disableOriginalConstructor()
->getMock();
$lb1->method( 'getServerCount' )->willReturn( 2 );
+ $lb1->method( 'hasReplicaServers' )->willReturn( true );
+ $lb1->method( 'hasStreamingReplicaServers' )->willReturn( true );
$lb1->method( 'getServerName' )->with( 0 )->willReturn( 'master1' );
$lb1->expects( $this->once() )
->method( 'waitFor' )->with( $this->equalTo( $m1Pos ) );
->disableOriginalConstructor()
->getMock();
$lb2->method( 'getServerCount' )->willReturn( 2 );
+ $lb2->method( 'hasReplicaServers' )->willReturn( true );
+ $lb2->method( 'hasStreamingReplicaServers' )->willReturn( true );
$lb2->method( 'getServerName' )->with( 0 )->willReturn( 'master2' );
$lb2->expects( $this->once() )
->method( 'waitFor' )->with( $this->equalTo( $m2Pos ) );
* @covers \Wikimedia\Rdbms\LoadBalancer::getConnection
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::doSelectDomain
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::selectDB
- * @covers \Wikimedia\Rdbms\DatabaseMssql::selectDB
- * @covers DatabaseOracle::selectDB
*/
public function testNiceDomains() {
global $wgDBname;
* @covers \Wikimedia\Rdbms\LoadBalancer::getConnection
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::doSelectDomain
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::selectDB
- * @covers \Wikimedia\Rdbms\DatabaseMssql::selectDB
- * @covers DatabaseOracle::selectDB
*/
public function testTrickyDomain() {
global $wgDBname;
* @covers \Wikimedia\Rdbms\LoadBalancer::getConnection
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::doSelectDomain
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::selectDB
- * @covers \Wikimedia\Rdbms\DatabaseMssql::selectDB
- * @covers DatabaseOracle::selectDB
*/
public function testInvalidSelectDB() {
if ( wfGetDB( DB_MASTER )->databasesAreIndependent() ) {
* @covers \Wikimedia\Rdbms\DatabasePostgres::selectDB
* @expectedException \Wikimedia\Rdbms\DBConnectionError
*/
- public function testInvalidSelectDBIndependant() {
+ public function testInvalidSelectDBIndependent() {
$dbname = 'unittest-domain'; // explodes if DB is selected
$factory = $this->newLBFactoryMulti(
[ 'localDomain' => ( new DatabaseDomain( $dbname, null, '' ) )->getId() ],
[
- 'dbname' => 'do_not_select_me' // explodes if DB is selected
+ // Explodes with SQLite and Postgres during open/USE
+ 'dbname' => 'bad_dir/do_not_select_me'
]
);
$lb = $factory->getMainLB();
- if ( !wfGetDB( DB_MASTER )->databasesAreIndependent() ) {
+ if ( !$lb->getConnection( DB_MASTER )->databasesAreIndependent() ) {
$this->markTestSkipped( "Not applicable per databasesAreIndependent()" );
}
/**
* @covers \Wikimedia\Rdbms\DatabaseSqlite::selectDB
* @covers \Wikimedia\Rdbms\DatabasePostgres::selectDB
- * @expectedException \Wikimedia\Rdbms\DBConnectionError
+ * @expectedException \Wikimedia\Rdbms\DBExpectedError
*/
- public function testInvalidSelectDBIndependant2() {
+ public function testInvalidSelectDBIndependent2() {
$dbname = 'unittest-domain'; // explodes if DB is selected
$factory = $this->newLBFactoryMulti(
[ 'localDomain' => ( new DatabaseDomain( $dbname, null, '' ) )->getId() ],
[
- 'dbname' => 'do_not_select_me' // explodes if DB is selected
+ // Explodes with SQLite and Postgres during open/USE
+ 'dbname' => 'bad_dir/do_not_select_me'
]
);
$lb = $factory->getMainLB();
- if ( !wfGetDB( DB_MASTER )->databasesAreIndependent() ) {
+ if ( !$lb->getConnection( DB_MASTER )->databasesAreIndependent() ) {
$this->markTestSkipped( "Not applicable per databasesAreIndependent()" );
}
$db = $lb->getConnection( DB_MASTER );
- \Wikimedia\suppressWarnings();
$db->selectDB( 'garbage-db' );
- \Wikimedia\restoreWarnings();
}
/**
* @covers \Wikimedia\Rdbms\LoadBalancer::getConnection
* @covers \Wikimedia\Rdbms\LoadBalancer::redefineLocalDomain
* @covers \Wikimedia\Rdbms\DatabaseMysqlBase::selectDB
- * @covers \Wikimedia\Rdbms\DatabaseMssql::selectDB
- * @covers DatabaseOracle::selectDB
*/
public function testRedefineLocalDomain() {
global $wgDBname;