Krinkle has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/368093 )
Change subject: [WIP] Failing DatabaseTest::testTransactionPreCommitOrIdle_TRX ...................................................................... [WIP] Failing DatabaseTest::testTransactionPreCommitOrIdle_TRX Change-Id: Icb9dfe8a7384150ddb5a92f7c0637170138ef039 --- M tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php 1 file changed, 62 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/mediawiki/core refs/changes/93/368093/1 diff --git a/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php b/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php index 9bea7ff..94983c0 100644 --- a/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php +++ b/tests/phpunit/includes/libs/rdbms/database/DatabaseTest.php @@ -1,6 +1,7 @@ <?php use Wikimedia\Rdbms\IDatabase; +use Wikimedia\Rdbms\LBFactorySingle; use Wikimedia\Rdbms\TransactionProfiler; use Wikimedia\TestingAccessWrapper; @@ -136,6 +137,67 @@ } /** + * @covers Wikimedia\Rdbms\Database::onTransactionPreCommitOrIdle + * @covers Wikimedia\Rdbms\Database::runOnTransactionPreCommitCallbacks + */ + public function testTransactionPreCommitOrIdle() { + $db = $this->getMockDB( [ 'isOpen' ] ); + $db->method( 'isOpen' )->willReturn( true ); + $db->clearFlag( DBO_TRX ); + + $this->assertFalse( $db->getFlag( DBO_TRX ), 'DBO_TRX is not set' ); + + $called = false; + $db->onTransactionPreCommitOrIdle( + function () use ( &$called ) { + $called = true; + }, + __METHOD__ + ); + $this->assertTrue( $called, 'Called when idle' ); + + $db->begin( __METHOD__ ); + $called = false; + $db->onTransactionPreCommitOrIdle( + function () use ( &$called ) { + $called = true; + }, + __METHOD__ + ); + $this->assertFalse( $called, 'Not called when transaction is active' ); + $db->commit( __METHOD__ ); + $this->assertTrue( $called, 'Called when transaction is committed' ); + } + + /** + * @covers Wikimedia\Rdbms\Database::onTransactionPreCommitOrIdle + * @covers Wikimedia\Rdbms\Database::runOnTransactionPreCommitCallbacks + */ + public function testTransactionPreCommitOrIdle_TRX() { + $db = $this->getMockDB( [ 'isOpen' ] ); + $db->method( 'isOpen' )->willReturn( true ); + $db->setFlag( DBO_TRX ); + + $lbFactory = LBFactorySingle::newFromConnection( $db ); + + $this->assertTrue( $db->getFlag( DBO_TRX ), 'DBO_TRX was set' ); + + $called = false; + $db->onTransactionPreCommitOrIdle( + function () use ( &$called ) { + $called = true; + } + ); + $this->assertFalse( $called, 'Not called when idle if DBO_TRX is set' ); + + $lbFactory->beginMasterChanges( __METHOD__ ); + $this->assertFalse( $called, 'Not called when lb-transaction is active' ); + + $lbFactory->commitMasterChanges( __METHOD__ ); + $this->assertTrue( $called, 'Called when lb-transaction is committed' ); + } + + /** * @covers Wikimedia\Rdbms\Database::onTransactionResolution * @covers Wikimedia\Rdbms\Database::runOnTransactionIdleCallbacks */ -- To view, visit https://gerrit.wikimedia.org/r/368093 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Icb9dfe8a7384150ddb5a92f7c0637170138ef039 Gerrit-PatchSet: 1 Gerrit-Project: mediawiki/core Gerrit-Branch: master Gerrit-Owner: Krinkle <krinklem...@gmail.com> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits