aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/includes/db/DatabaseTest.php
diff options
context:
space:
mode:
authorAaron Schulz <aschulz@wikimedia.org>2016-08-21 22:35:12 -0700
committerAaron Schulz <aschulz@wikimedia.org>2016-08-23 18:09:28 -0700
commit67f08d69904f248594d20a9513d5d9fd3d80e6c4 (patch)
tree6b474e73147f6141361e6c4a08b5d264cb434c6b /tests/phpunit/includes/db/DatabaseTest.php
parent1b21b48210fe54e48272897c030f6aa383c84466 (diff)
downloadmediawikicore-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.php39
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 ) );
+ }
}