/** * @dataProvider getLBFactoryClassProvider */ public function testGetLBFactoryClass($expected, $deprecated) { $mockDB = $this->getMockBuilder('DatabaseMysql')->disableOriginalConstructor()->getMock(); $config = array('class' => $deprecated, 'connection' => $mockDB, 'sectionsByDB' => array(), 'sectionLoads' => array(), 'serverTemplate' => array()); $this->hideDeprecated('$wgLBFactoryConf must be updated. See RELEASE-NOTES for details'); $result = LBFactory::getLBFactoryClass($config); $this->assertEquals($expected, $result); }
* * @note As of version 1.27, MediaWiki is only beginning to use dependency injection. * The services defined here do not yet fully represent all services used by core, * much of the code still relies on global state for this accessing services. * * @since 1.27 * * @see docs/injection.txt for an overview of using dependency injection in the * MediaWiki code base. */ use MediaWiki\Interwiki\ClassicInterwikiLookup; use MediaWiki\Linker\LinkRendererFactory; use MediaWiki\MediaWikiServices; return ['DBLoadBalancerFactory' => function (MediaWikiServices $services) { $config = $services->getMainConfig()->get('LBFactoryConf'); $class = LBFactory::getLBFactoryClass($config); if (!isset($config['readOnlyReason'])) { // TODO: replace the global wfConfiguredReadOnlyReason() with a service. $config['readOnlyReason'] = wfConfiguredReadOnlyReason(); } return new $class($config); }, 'DBLoadBalancer' => function (MediaWikiServices $services) { // just return the default LB from the DBLoadBalancerFactory service return $services->getDBLoadBalancerFactory()->getMainLB(); }, 'SiteStore' => function (MediaWikiServices $services) { $rawSiteStore = new DBSiteStore($services->getDBLoadBalancer()); // TODO: replace wfGetCache with a CacheFactory service. // TODO: replace wfIsHHVM with a capabilities service. $cache = wfGetCache(wfIsHHVM() ? CACHE_ACCEL : CACHE_ANYTHING); return new CachingSiteStore($rawSiteStore, $cache); }, 'SiteLookup' => function (MediaWikiServices $services) {