use Wikimedia\Rdbms\LBFactorySimple;
use Wikimedia\Rdbms\LBFactoryMulti;
+use Wikimedia\Rdbms\LoadBalancer;
use Wikimedia\Rdbms\ChronologyProtector;
+use Wikimedia\Rdbms\DatabaseMysqli;
use Wikimedia\Rdbms\MySQLMasterPos;
use Wikimedia\Rdbms\DatabaseDomain;
* @dataProvider getLBFactoryClassProvider
*/
public function testGetLBFactoryClass( $expected, $deprecated ) {
- $mockDB = $this->getMockBuilder( 'DatabaseMysqli' )
+ $mockDB = $this->getMockBuilder( DatabaseMysqli::class )
->disableOriginalConstructor()
->getMock();
$factory = new LBFactorySimple( [
'servers' => $servers,
- 'loadMonitorClass' => 'LoadMonitorNull'
+ 'loadMonitorClass' => LoadMonitorNull::class
] );
$lb = $factory->getMainLB();
'test-db1' => $wgDBserver,
'test-db2' => $wgDBserver
],
- 'loadMonitorClass' => 'LoadMonitorNull'
+ 'loadMonitorClass' => LoadMonitorNull::class
] );
$lb = $factory->getMainLB();
* @covers \Wikimedia\Rdbms\ChronologyProtector
*/
public function testChronologyProtector() {
- // (a) First HTTP request
- $m1Pos = new MySQLMasterPos( 'db1034-bin.000976', '843431247' );
- $m2Pos = new MySQLMasterPos( 'db1064-bin.002400', '794074907' );
-
$now = microtime( true );
+ // (a) First HTTP request
+ $m1Pos = new MySQLMasterPos( 'db1034-bin.000976/843431247', $now );
+ $m2Pos = new MySQLMasterPos( 'db1064-bin.002400/794074907', $now );
+
// Master DB 1
- $mockDB1 = $this->getMockBuilder( 'DatabaseMysqli' )
+ $mockDB1 = $this->getMockBuilder( DatabaseMysqli::class )
->disableOriginalConstructor()
->getMock();
$mockDB1->method( 'writesOrCallbacksPending' )->willReturn( true );
$mockDB1->method( 'lastDoneWrites' )->willReturn( $now );
$mockDB1->method( 'getMasterPos' )->willReturn( $m1Pos );
// Load balancer for master DB 1
- $lb1 = $this->getMockBuilder( 'LoadBalancer' )
+ $lb1 = $this->getMockBuilder( LoadBalancer::class )
->disableOriginalConstructor()
->getMock();
$lb1->method( 'getConnection' )->willReturn( $mockDB1 );
$lb1->method( 'getMasterPos' )->willReturn( $m1Pos );
$lb1->method( 'getServerName' )->with( 0 )->willReturn( 'master1' );
// Master DB 2
- $mockDB2 = $this->getMockBuilder( 'DatabaseMysqli' )
+ $mockDB2 = $this->getMockBuilder( DatabaseMysqli::class )
->disableOriginalConstructor()
->getMock();
$mockDB2->method( 'writesOrCallbacksPending' )->willReturn( true );
$mockDB2->method( 'lastDoneWrites' )->willReturn( $now );
$mockDB2->method( 'getMasterPos' )->willReturn( $m2Pos );
// Load balancer for master DB 2
- $lb2 = $this->getMockBuilder( 'LoadBalancer' )
+ $lb2 = $this->getMockBuilder( LoadBalancer::class )
->disableOriginalConstructor()
->getMock();
$lb2->method( 'getConnection' )->willReturn( $mockDB2 );
// (b) Second HTTP request
// Load balancer for master DB 1
- $lb1 = $this->getMockBuilder( 'LoadBalancer' )
+ $lb1 = $this->getMockBuilder( LoadBalancer::class )
->disableOriginalConstructor()
->getMock();
$lb1->method( 'getServerCount' )->willReturn( 2 );
$lb1->expects( $this->once() )
->method( 'waitFor' )->with( $this->equalTo( $m1Pos ) );
// Load balancer for master DB 2
- $lb2 = $this->getMockBuilder( 'LoadBalancer' )
+ $lb2 = $this->getMockBuilder( LoadBalancer::class )
->disableOriginalConstructor()
->getMock();
$lb2->method( 'getServerCount' )->willReturn( 2 );
'hostsByName' => [
'test-db1' => $wgDBserver,
],
- 'loadMonitorClass' => 'LoadMonitorNull',
+ 'loadMonitorClass' => LoadMonitorNull::class,
'localDomain' => new DatabaseDomain( $wgDBname, null, $wgDBprefix )
] );
}
$db = $lb->getConnection( DB_MASTER, [], '' );
$this->assertEquals(
- $wgDBname,
+ '',
$db->getDomainId(),
- 'Main domain ID handle used; same DB name'
+ 'Null domain ID handle used'
);
$this->assertEquals(
- $wgDBname,
+ '',
$db->getDBname(),
- 'Main domain ID handle used; same DB name'
+ 'Null domain ID handle used'
);
$this->assertEquals(
'',
$dbname = 'unittest-domain'; // explodes if DB is selected
$factory = $this->newLBFactoryMulti(
[ 'localDomain' => ( new DatabaseDomain( $dbname, null, '' ) )->getId() ],
- [ 'dbFilePath' => $dbPath ]
+ [
+ 'dbFilePath' => $dbPath,
+ 'dbName' => 'do_not_select_me' // explodes if DB is selected
+ ]
);
$lb = $factory->getMainLB();
/** @var Database $db */
$db = $lb->getConnection( DB_MASTER, [], '' );
- $this->assertEquals(
- $wgDBname,
- $db->getDomainID()
- );
+ $this->assertEquals( '', $db->getDomainID(), "Null domain used" );
$this->assertEquals(
$this->quoteTable( $db, 'page' ),
} catch ( \Wikimedia\Rdbms\DBConnectionError $e ) {
// expected
}
- $this->assertInstanceOf( '\Wikimedia\Rdbms\DBConnectionError', $e );
+ $this->assertInstanceOf( \Wikimedia\Rdbms\DBConnectionError::class, $e );
$this->assertFalse( $db->isOpen() );
} else {
- \MediaWiki\suppressWarnings();
+ \Wikimedia\suppressWarnings();
$this->assertFalse( $db->selectDB( 'garbage-db' ) );
- \MediaWiki\restoreWarnings();
+ \Wikimedia\restoreWarnings();
}
$lb->reuseConnection( $db ); // don't care