* @copyright © 2013 Wikimedia Foundation Inc.
*/
+use Wikimedia\AtEase\AtEase;
use Wikimedia\Rdbms\IDatabase;
use Wikimedia\Rdbms\IMaintainableDatabase;
use Wikimedia\Rdbms\LBFactory;
}
) );
$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 )
}
) );
$lb2->method( 'getMasterPos' )->willReturn( $m2Pos );
+ $lb2->method( 'getReplicaResumePos' )->willReturn( $m2Pos );
$lb2->method( 'getServerName' )->with( 0 )->willReturn( 'master2' );
$bag = new HashBagOStuff();
* @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;
unset( $db );
/** @var IMaintainableDatabase $db */
- $db = $lb->getConnection( DB_MASTER, [], '' );
+ $db = $lb->getConnection( DB_MASTER, [], $lb::DOMAIN_ANY );
$this->assertEquals(
'',
* @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;
);
$lb = $factory->getMainLB();
/** @var IMaintainableDatabase $db */
- $db = $lb->getConnection( DB_MASTER, [], '' );
+ $db = $lb->getConnection( DB_MASTER, [], $lb::DOMAIN_ANY );
$this->assertEquals( '', $db->getDomainID(), "Null domain used" );
* @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() ) {
);
$lb = $factory->getMainLB();
/** @var IDatabase $db */
- $db = $lb->getConnection( DB_MASTER, [], '' );
+ $db = $lb->getConnection( DB_MASTER, [], $lb::DOMAIN_ANY );
- \Wikimedia\suppressWarnings();
+ AtEase::suppressWarnings();
try {
- $this->assertFalse( $db->selectDB( 'garbage-db' ) );
+ $this->assertFalse( $db->selectDomain( 'garbagedb' ) );
$this->fail( "No error thrown." );
} catch ( \Wikimedia\Rdbms\DBQueryError $e ) {
- $this->assertRegExp( '/[\'"]garbage-db[\'"]/', $e->getMessage() );
+ $this->assertRegExp( '/[\'"]garbagedb[\'"]/', $e->getMessage() );
}
- \Wikimedia\restoreWarnings();
+ AtEase::restoreWarnings();
}
/**
* @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() ) {
- $this->markTestSkipped( "Not applicable per databasesAreIndependent()" );
+ if ( !$factory->getMainLB()->getServerAttributes( 0 )[Database::ATTR_DB_IS_FILE] ) {
+ $this->markTestSkipped( "Not applicable per ATTR_DB_IS_FILE" );
}
/** @var IDatabase $db */
- $lb->getConnection( DB_MASTER, [], '' );
+ $this->assertNotNull( $lb->getConnection( DB_MASTER, [], $lb::DOMAIN_ANY ) );
}
/**
* @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();
+ $db->selectDomain( 'garbage-db' );
}
/**
* @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;