function testComplexExperimentIsEnabled() { // all criteria need to me meet in order to make the expirement enabled $this->assertTrue(Experiment::isEnabled(['criteria' => ['traffic' => 87, 'wikis' => 123]])); $this->assertFalse(Experiment::isEnabled(['criteria' => ['traffic' => 7, 'wikis' => 123]])); $this->assertFalse(Experiment::isEnabled(['criteria' => ['traffic' => 87, 'wikis' => 23]])); $this->assertFalse(Experiment::isEnabled(['criteria' => ['traffic' => 7, 'wikis' => 23]])); }
/** * Initialize performance experiments when MediaWiki starts the engine * * @param \Title $title * @param \Article $article * @param \OutputPage $output * @param \User $user * @param \WebRequest $request * @param \MediaWiki $wiki * @return bool it's a hook */ static function onAfterInitialize($title, $article, $output, $user, $request, $wiki) { global $wgAbPerformanceTestingExperiments; wfDebug(sprintf("%s - checking experiments (with beacon ID set to '%s')...\n", __METHOD__, wfGetBeaconId())); // loop through all registered experiments and run those matching criteria foreach ($wgAbPerformanceTestingExperiments as $experimentName => $experimentConfig) { if (Experiment::isEnabled($experimentConfig)) { self::startExperiment($experimentName, $experimentConfig); // leave now, we handle only a single experiment at a time now return true; } } return true; }