Skip to content

Commit 494c76f

Browse files
committed
test cases fixed
1 parent c9f901a commit 494c76f

File tree

4 files changed

+33
-16
lines changed

4 files changed

+33
-16
lines changed

src/Optimizely/Config/DatafileProjectConfig.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,20 +282,22 @@ public function __construct($datafile, $logger, $errorHandler)
282282

283283
$this->_variationKeyMap = [];
284284
$this->_variationIdMap = [];
285+
$this->_variationKeyMapByExperimentId = [];
286+
$this->_variationIdMapByExperimentId = [];
285287
$this->_experimentKeyMap = [];
286288

287289
foreach (array_values($this->_experimentIdMap) as $experiment) {
288290
$this->_variationKeyMap[$experiment->getKey()] = [];
289291
$this->_variationIdMap[$experiment->getKey()] = [];
290-
$this->_variationIdMapByExperimentId[$experiment->getID()] = [];
291-
$this->_variationKeyMapByExperimentId[$experiment->getID()] = [];
292+
$this->_variationIdMapByExperimentId[$experiment->getId()] = [];
293+
$this->_variationKeyMapByExperimentId[$experiment->getId()] = [];
292294
$this->_experimentKeyMap[$experiment->getKey()] = $experiment;
293295

294296
foreach ($experiment->getVariations() as $variation) {
295297
$this->_variationKeyMap[$experiment->getKey()][$variation->getKey()] = $variation;
296298
$this->_variationIdMap[$experiment->getKey()][$variation->getId()] = $variation;
297-
$this->_variationKeyMapByExperimentId[$experiment->getID()][$variation->getKey()] = $variation;
298-
$this->_variationIdMapByExperimentId[$experiment->getID()][$variation->getId()] = $variation;
299+
$this->_variationKeyMapByExperimentId[$experiment->getId()][$variation->getKey()] = $variation;
300+
$this->_variationIdMapByExperimentId[$experiment->getId()][$variation->getId()] = $variation;
299301
}
300302
}
301303

@@ -314,24 +316,32 @@ public function __construct($datafile, $logger, $errorHandler)
314316

315317
$rolloutVariationIdMap = [];
316318
$rolloutVariationKeyMap = [];
319+
$rolloutVariationIdMapByExperimentId = [];
320+
$rolloutVariationKeyMapByExperimentId = [];
317321
foreach ($this->_rollouts as $rollout) {
318322
$this->_rolloutIdMap[$rollout->getId()] = $rollout;
319323

320324
foreach ($rollout->getExperiments() as $rule) {
321325
$rolloutVariationIdMap[$rule->getKey()] = [];
322326
$rolloutVariationKeyMap[$rule->getKey()] = [];
327+
$rolloutVariationIdMapByExperimentId[$rule->getId()] = [];
328+
$rolloutVariationKeyMapByExperimentId[$rule->getId()] = [];
323329

324330
$variations = $rule->getVariations();
325331
foreach ($variations as $variation) {
326332
$rolloutVariationIdMap[$rule->getKey()][$variation->getId()] = $variation;
327333
$rolloutVariationKeyMap[$rule->getKey()][$variation->getKey()] = $variation;
334+
$rolloutVariationIdMapByExperimentId[$rule->getId()][$variation->getId()] = $variation;
335+
$rolloutVariationKeyMapByExperimentId[$rule->getId()][$variation->getKey()] = $variation;
328336
}
329337
}
330338
}
331339

332340
// Add variations for rollout experiments to variationIdMap and variationKeyMap
333341
$this->_variationIdMap = $this->_variationIdMap + $rolloutVariationIdMap;
334342
$this->_variationKeyMap = $this->_variationKeyMap + $rolloutVariationKeyMap;
343+
$this->_variationIdMapByExperimentId = $this->_variationIdMapByExperimentId + $rolloutVariationIdMapByExperimentId;
344+
$this->_variationKeyMapByExperimentId = $this->_variationKeyMapByExperimentId + $rolloutVariationKeyMapByExperimentId;
335345

336346
foreach (array_values($this->_featureFlags) as $featureFlag) {
337347
$this->_featureKeyMap[$featureFlag->getKey()] = $featureFlag;

src/Optimizely/DecisionService/DecisionService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,7 @@ private function getWhitelistedVariation(ProjectConfigInterface $projectConfig,
518518
$forcedVariations = $experiment->getForcedVariations();
519519
if (!is_null($forcedVariations) && isset($forcedVariations[$userId])) {
520520
$variationKey = $forcedVariations[$userId];
521-
$variation = $projectConfig->getVariationFromKey($experiment->getKey(), $variationKey);
521+
$variation = $projectConfig->getVariationFromKeyByExperimentId($experiment->getId(), $variationKey);
522522
if ($variationKey && !empty($variation->getKey())) {
523523
$message = sprintf('User "%s" is forced in variation "%s" of experiment "%s".', $userId, $variationKey, $experiment->getKey());
524524

src/Optimizely/Event/Builder/EventBuilder.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -229,12 +229,12 @@ private function getConversionParams($eventEntity, $eventTags)
229229
*
230230
* @return LogEvent Event object to be sent to dispatcher.
231231
*/
232-
public function createImpressionEvent($config, $experimentKey, $variationKey, $flagKey, $ruleKey, $ruleType, $enabled, $userId, $attributes)
232+
public function createImpressionEvent($config, $experimentId, $variationKey, $flagKey, $ruleKey, $ruleType, $enabled, $userId, $attributes)
233233
{
234234
$eventParams = $this->getCommonParams($config, $userId, $attributes);
235235

236-
$experiment = $config->getExperimentFromKey($experimentKey);
237-
$variation = $config->getVariationFromKey($experimentKey, $variationKey);
236+
$experiment = $config->getExperimentFromId($experimentId);
237+
$variation = $config->getVariationFromKeyByExperimentId($experimentId, $variationKey);
238238
$impressionParams = $this->getImpressionParams($experiment, $variation, $flagKey, $ruleKey, $ruleType, $enabled);
239239

240240
$eventParams[VISITORS][0][SNAPSHOTS][] = $impressionParams;

src/Optimizely/Optimizely.php

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,11 @@ private function validateUserInputs($attributes, $eventTags = null)
207207
* @param array Associative array of user attributes
208208
* @param DatafileProjectConfig DatafileProjectConfig instance
209209
*/
210-
protected function sendImpressionEvent($config, $experimentKey, $variationKey, $flagKey, $ruleKey, $ruleType, $enabled, $userId, $attributes)
210+
protected function sendImpressionEvent($config, $experimentId, $variationKey, $flagKey, $ruleKey, $ruleType, $enabled, $userId, $attributes)
211211
{
212+
$experimentKey = $config->getExperimentFromId($experimentId)->getId();
212213
$impressionEvent = $this->_eventBuilder
213-
->createImpressionEvent($config, $experimentKey, $variationKey, $flagKey, $ruleKey, $ruleType, $enabled, $userId, $attributes);
214+
->createImpressionEvent($config, $experimentId, $variationKey, $flagKey, $ruleKey, $ruleType, $enabled, $userId, $attributes);
214215
$this->_logger->log(Logger::INFO, sprintf('Activating user "%s" in experiment "%s".', $userId, $experimentKey));
215216
$this->_logger->log(
216217
Logger::DEBUG,
@@ -244,10 +245,10 @@ protected function sendImpressionEvent($config, $experimentKey, $variationKey, $
244245
$this->notificationCenter->sendNotifications(
245246
NotificationType::ACTIVATE,
246247
array(
247-
$config->getExperimentFromKey($experimentKey),
248+
$config->getExperimentFromId($experimentId),
248249
$userId,
249250
$attributes,
250-
$config->getVariationFromKey($experimentKey, $variationKey),
251+
$config->getVariationFromKeyByExperimentId($experimentId, $variationKey),
251252
$impressionEvent
252253
)
253254
);
@@ -340,6 +341,7 @@ public function decide(OptimizelyUserContext $userContext, $key, array $decideOp
340341
$variationKey = null;
341342
$featureEnabled = false;
342343
$ruleKey = null;
344+
$experimentId = null;
343345
$flagKey = $key;
344346
$allVariables = [];
345347
$decisionEventDispatched = false;
@@ -360,9 +362,11 @@ public function decide(OptimizelyUserContext $userContext, $key, array $decideOp
360362
$variationKey = $variation->getKey();
361363
$featureEnabled = $variation->getFeatureEnabled();
362364
$ruleKey = $decision->getExperiment()->getKey();
365+
$experimentId = $decision->getExperiment()->getId();
363366
} else {
364367
$variationKey = null;
365368
$ruleKey = null;
369+
$experimentId = null;
366370
}
367371

368372
// send impression only if decide options do not contain DISABLE_DECISION_EVENT
@@ -374,7 +378,7 @@ public function decide(OptimizelyUserContext $userContext, $key, array $decideOp
374378
if ($source == FeatureDecision::DECISION_SOURCE_FEATURE_TEST || $sendFlagDecisions) {
375379
$this->sendImpressionEvent(
376380
$config,
377-
$ruleKey,
381+
$experimentId,
378382
$variationKey === null ? '' : $variationKey,
379383
$flagKey,
380384
$ruleKey === null ? '' : $ruleKey,
@@ -531,8 +535,9 @@ public function activate($experimentKey, $userId, $attributes = null)
531535
$this->_logger->log(Logger::INFO, sprintf('Not activating user "%s".', $userId));
532536
return null;
533537
}
538+
$experimentId = $config->getExperimentFromKey($experimentKey)->getId();
534539

535-
$this->sendImpressionEvent($config, $experimentKey, $variationKey, '', $experimentKey, FeatureDecision::DECISION_SOURCE_EXPERIMENT, true, $userId, $attributes);
540+
$this->sendImpressionEvent($config, $experimentId, $variationKey, '', $experimentKey, FeatureDecision::DECISION_SOURCE_EXPERIMENT, true, $userId, $attributes);
536541

537542
return $variationKey;
538543
}
@@ -818,19 +823,21 @@ public function isFeatureEnabled($featureFlagKey, $userId, $attributes = null)
818823
$featureEnabled = $variation->getFeatureEnabled();
819824
}
820825
$ruleKey = $decision->getExperiment() ? $decision->getExperiment()->getKey() : '';
821-
$this->sendImpressionEvent($config, $ruleKey, $variation ? $variation->getKey() : '', $featureFlagKey, $ruleKey, $decision->getSource(), $featureEnabled, $userId, $attributes);
826+
$experimentId = $decision->getExperiment() ? $decision->getExperiment()->getId() : '';
827+
$this->sendImpressionEvent($config, $experimentId, $variation ? $variation->getKey() : '', $featureFlagKey, $ruleKey, $decision->getSource(), $featureEnabled, $userId, $attributes);
822828
}
823829

824830
if ($variation) {
825831
$experimentKey = $decision->getExperiment()->getKey();
832+
$experimentId = $decision->getExperiment()->getId();
826833
$featureEnabled = $variation->getFeatureEnabled();
827834
if ($decision->getSource() == FeatureDecision::DECISION_SOURCE_FEATURE_TEST) {
828835
$sourceInfo = (object) array(
829836
'experimentKey'=> $experimentKey,
830837
'variationKey'=> $variation->getKey()
831838
);
832839

833-
$this->sendImpressionEvent($config, $experimentKey, $variation->getKey(), $featureFlagKey, $experimentKey, $decision->getSource(), $featureEnabled, $userId, $attributes);
840+
$this->sendImpressionEvent($config, $experimentId, $variation->getKey(), $featureFlagKey, $experimentKey, $decision->getSource(), $featureEnabled, $userId, $attributes);
834841
} else {
835842
$this->_logger->log(Logger::INFO, "The user '{$userId}' is not being experimented on Feature Flag '{$featureFlagKey}'.");
836843
}

0 commit comments

Comments
 (0)