Avoid DatabaseBase type errors in setupDatabaseWithTestPrefix()
authorAaron Schulz <aschulz@wikimedia.org>
Fri, 23 Sep 2016 22:59:22 +0000 (15:59 -0700)
committerKrinkle <krinklemail@gmail.com>
Fri, 23 Sep 2016 23:30:47 +0000 (23:30 +0000)
Change-Id: I94cc0672a487d547a09c27997fe36274d7d62977

tests/phpunit/MediaWikiTestCase.php

index 43577ca..3cfd0b6 100644 (file)
@@ -1178,19 +1178,23 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
         * Gets master database connections for all of the ExternalStoreDB
         * stores configured in $wgDefaultExternalStore.
         *
-        * @return array Array of DatabaseBase master connections
+        * @return DatabaseBase[] Array of DatabaseBase master connections
         */
 
        protected static function getExternalStoreDatabaseConnections() {
                global $wgDefaultExternalStore;
 
+               /** @var ExternalStoreDB $externalStoreDB */
                $externalStoreDB = ExternalStore::getStoreObject( 'DB' );
                $defaultArray = (array) $wgDefaultExternalStore;
                $dbws = [];
                foreach ( $defaultArray as $url ) {
                        if ( strpos( $url, 'DB://' ) === 0 ) {
                                list( $proto, $cluster ) = explode( '://', $url, 2 );
-                               $dbw = $externalStoreDB->getMaster( $cluster );
+                               // Avoid getMaster() because setupDatabaseWithTestPrefix()
+                               // requires DatabaseBase instead of plain DBConnRef/IDatabase
+                               $lb = $externalStoreDB->getLoadBalancer( $cluster );
+                               $dbw = $lb->getConnection( DB_MASTER );
                                $dbws[] = $dbw;
                        }
                }