diff options
author | Aaron Schulz <aschulz@wikimedia.org> | 2016-08-21 22:35:12 -0700 |
---|---|---|
committer | Aaron Schulz <aschulz@wikimedia.org> | 2016-08-23 18:09:28 -0700 |
commit | 67f08d69904f248594d20a9513d5d9fd3d80e6c4 (patch) | |
tree | 6b474e73147f6141361e6c4a08b5d264cb434c6b /tests/phpunit/includes/db/DatabaseTest.php | |
parent | 1b21b48210fe54e48272897c030f6aa383c84466 (diff) | |
download | mediawikicore-67f08d69904f248594d20a9513d5d9fd3d80e6c4.tar.gz mediawikicore-67f08d69904f248594d20a9513d5d9fd3d80e6c4.zip |
Add LBFactory::beginMasterChanges() for doing DBO_TRX rounds
This is in intended to replace the DataUpdate transaction round logic.
It could also be useful for doing transaction rounds in maintenance
scripts.
Also renamed $db => $conn in a few LB methods for consistency.
Change-Id: If21c2ba5e8bac48c250b96137279e7edaa8289f7
Diffstat (limited to 'tests/phpunit/includes/db/DatabaseTest.php')
-rw-r--r-- | tests/phpunit/includes/db/DatabaseTest.php | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tests/phpunit/includes/db/DatabaseTest.php b/tests/phpunit/includes/db/DatabaseTest.php index 7e55a7327a4b..07514092def1 100644 --- a/tests/phpunit/includes/db/DatabaseTest.php +++ b/tests/phpunit/includes/db/DatabaseTest.php @@ -23,6 +23,7 @@ class DatabaseTest extends MediaWikiTestCase { $this->dropFunctions(); $this->functionTest = false; } + $this->db->restoreFlags( IDatabase::RESTORE_INITIAL ); } /** * @covers DatabaseBase::dropTable @@ -323,4 +324,42 @@ class DatabaseTest extends MediaWikiTestCase { $db->begin( __METHOD__ ); throw new RunTimeException( "Uh oh!" ); } + + /** + * @covers DatabaseBase::getFlag( + * @covers DatabaseBase::setFlag() + * @covers DatabaseBase::restoreFlags() + */ + public function testFlagSetting() { + $db = $this->db; + $origTrx = $db->getFlag( DBO_TRX ); + $origSsl = $db->getFlag( DBO_SSL ); + + if ( $origTrx ) { + $db->clearFlag( DBO_TRX, $db::REMEMBER_PRIOR ); + } else { + $db->setFlag( DBO_TRX, $db::REMEMBER_PRIOR ); + } + $this->assertEquals( !$origTrx, $db->getFlag( DBO_TRX ) ); + + if ( $origSsl ) { + $db->clearFlag( DBO_SSL, $db::REMEMBER_PRIOR ); + } else { + $db->setFlag( DBO_SSL, $db::REMEMBER_PRIOR ); + } + $this->assertEquals( !$origSsl, $db->getFlag( DBO_SSL ) ); + + $db2 = clone $db; + $db2->restoreFlags( $db::RESTORE_INITIAL ); + $this->assertEquals( $origTrx, $db2->getFlag( DBO_TRX ) ); + $this->assertEquals( $origSsl, $db2->getFlag( DBO_SSL ) ); + + $db->restoreFlags(); + $this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) ); + $this->assertEquals( !$origTrx, $db->getFlag( DBO_TRX ) ); + + $db->restoreFlags(); + $this->assertEquals( $origSsl, $db->getFlag( DBO_SSL ) ); + $this->assertEquals( $origTrx, $db->getFlag( DBO_TRX ) ); + } } |