From 3d75d2288bcb5731213566e60489b26254b7a802 Mon Sep 17 00:00:00 2001 From: "FOLIO3PK\\muhammadnoman" Date: Tue, 10 Nov 2020 20:46:23 +0500 Subject: [PATCH 1/2] Added enabled in createImpressionEvent --- .../main/java/com/optimizely/ab/Optimizely.java | 11 +++++++---- .../ab/event/internal/UserEventFactory.java | 4 +++- .../event/internal/payload/DecisionMetadata.java | 14 ++++++++++++-- .../ab/event/internal/EventFactoryTest.java | 5 +++-- .../ab/event/internal/UserEventFactoryTest.java | 8 +++++--- 5 files changed, 30 insertions(+), 12 deletions(-) diff --git a/core-api/src/main/java/com/optimizely/ab/Optimizely.java b/core-api/src/main/java/com/optimizely/ab/Optimizely.java index c3e035e2c..f06af8082 100644 --- a/core-api/src/main/java/com/optimizely/ab/Optimizely.java +++ b/core-api/src/main/java/com/optimizely/ab/Optimizely.java @@ -237,7 +237,7 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig, @Nonnull Map filteredAttributes, @Nonnull Variation variation, @Nonnull String ruleType) { - sendImpression(projectConfig, experiment, userId, filteredAttributes, variation, "", ruleType); + sendImpression(projectConfig, experiment, userId, filteredAttributes, variation, "", ruleType, true); } /** @@ -257,7 +257,8 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig, @Nonnull Map filteredAttributes, @Nonnull Variation variation, @Nonnull String flagKey, - @Nonnull String ruleType) { + @Nonnull String ruleType, + @Nonnull boolean enabled) { UserEvent userEvent = UserEventFactory.createImpressionEvent( projectConfig, @@ -266,7 +267,8 @@ private void sendImpression(@Nonnull ProjectConfig projectConfig, userId, filteredAttributes, flagKey, - ruleType); + ruleType, + enabled); if (userEvent == null) { return; @@ -430,7 +432,8 @@ private Boolean isFeatureEnabled(@Nonnull ProjectConfig projectConfig, copiedAttributes, featureDecision.variation, featureKey, - decisionSource.toString()); + decisionSource.toString(), + featureEnabled); if (featureDecision.variation != null) { // This information is only necessary for feature tests. diff --git a/core-api/src/main/java/com/optimizely/ab/event/internal/UserEventFactory.java b/core-api/src/main/java/com/optimizely/ab/event/internal/UserEventFactory.java index 74457922e..20d771033 100644 --- a/core-api/src/main/java/com/optimizely/ab/event/internal/UserEventFactory.java +++ b/core-api/src/main/java/com/optimizely/ab/event/internal/UserEventFactory.java @@ -37,7 +37,8 @@ public static ImpressionEvent createImpressionEvent(@Nonnull ProjectConfig proje @Nonnull String userId, @Nonnull Map attributes, @Nonnull String flagKey, - @Nonnull String ruleType) { + @Nonnull String ruleType, + @Nonnull boolean enabled) { if ((FeatureDecision.DecisionSource.ROLLOUT.toString().equals(ruleType) || variation == null) && !projectConfig.getSendFlagDecisions()) { @@ -69,6 +70,7 @@ public static ImpressionEvent createImpressionEvent(@Nonnull ProjectConfig proje .setRuleKey(experimentKey) .setRuleType(ruleType) .setVariationKey(variationKey) + .setEnabled(enabled) .build(); return new ImpressionEvent.Builder() diff --git a/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java b/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java index f5120b230..f8e62d4c9 100644 --- a/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java +++ b/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java @@ -29,16 +29,19 @@ public class DecisionMetadata { String ruleType; @JsonProperty("variation_key") String variationKey; + @JsonProperty("enabled") + boolean enabled; @VisibleForTesting public DecisionMetadata() { } - public DecisionMetadata(String flagKey, String ruleKey, String ruleType, String variationKey) { + public DecisionMetadata(String flagKey, String ruleKey, String ruleType, String variationKey, boolean enabled) { this.flagKey = flagKey; this.ruleKey = ruleKey; this.ruleType = ruleType; this.variationKey = variationKey; + this.enabled = enabled; } public String getRuleType() { @@ -67,6 +70,7 @@ public boolean equals(Object o) { if (!ruleType.equals(that.ruleType)) return false; if (!ruleKey.equals(that.ruleKey)) return false; if (!flagKey.equals(that.flagKey)) return false; + if (enabled != that.enabled) return false; return variationKey.equals(that.variationKey); } @@ -85,6 +89,12 @@ public static class Builder { private String ruleKey; private String flagKey; private String variationKey; + private boolean enabled; + + public Builder setEnabled(boolean enabled) { + this.enabled = enabled; + return this; + } public Builder setRuleType(String ruleType) { this.ruleType = ruleType; @@ -107,7 +117,7 @@ public Builder setVariationKey(String variationKey) { } public DecisionMetadata build() { - return new DecisionMetadata(flagKey, ruleKey, ruleType, variationKey); + return new DecisionMetadata(flagKey, ruleKey, ruleType, variationKey, enabled); } } } diff --git a/core-api/src/test/java/com/optimizely/ab/event/internal/EventFactoryTest.java b/core-api/src/test/java/com/optimizely/ab/event/internal/EventFactoryTest.java index f4be1b965..acb0cc5a4 100644 --- a/core-api/src/test/java/com/optimizely/ab/event/internal/EventFactoryTest.java +++ b/core-api/src/test/java/com/optimizely/ab/event/internal/EventFactoryTest.java @@ -103,7 +103,7 @@ public void createImpressionEventPassingUserAgentAttribute() throws Exception { Map attributeMap = new HashMap(); attributeMap.put(attribute.getKey(), "value"); attributeMap.put(ControlAttribute.USER_AGENT_ATTRIBUTE.toString(), "Chrome"); - DecisionMetadata metadata = new DecisionMetadata(activatedExperiment.getKey(), activatedExperiment.getKey(), ruleType, "variationKey"); + DecisionMetadata metadata = new DecisionMetadata(activatedExperiment.getKey(), activatedExperiment.getKey(), ruleType, "variationKey", true); Decision expectedDecision = new Decision.Builder() .setCampaignId(activatedExperiment.getLayerId()) .setExperimentId(activatedExperiment.getId()) @@ -1062,7 +1062,8 @@ public static LogEvent createImpressionEvent(ProjectConfig projectConfig, userId, attributes, activatedExperiment.getKey(), - "experiment"); + "experiment", + true); return EventFactory.createLogEvent(userEvent); diff --git a/core-api/src/test/java/com/optimizely/ab/event/internal/UserEventFactoryTest.java b/core-api/src/test/java/com/optimizely/ab/event/internal/UserEventFactoryTest.java index 87b667658..a7739bb73 100644 --- a/core-api/src/test/java/com/optimizely/ab/event/internal/UserEventFactoryTest.java +++ b/core-api/src/test/java/com/optimizely/ab/event/internal/UserEventFactoryTest.java @@ -67,7 +67,7 @@ public class UserEventFactoryTest { public void setUp() { experiment = new Experiment(EXPERIMENT_ID, EXPERIMENT_KEY, LAYER_ID); variation = new Variation(VARIATION_ID, VARIATION_KEY); - decisionMetadata = new DecisionMetadata("", EXPERIMENT_KEY, "experiment", VARIATION_KEY); + decisionMetadata = new DecisionMetadata("", EXPERIMENT_KEY, "experiment", VARIATION_KEY, true); } @Test @@ -80,7 +80,8 @@ public void createImpressionEventNull() { USER_ID, ATTRIBUTES, EXPERIMENT_KEY, - "rollout" + "rollout", + false ); assertNull(actual); } @@ -94,7 +95,8 @@ public void createImpressionEvent() { USER_ID, ATTRIBUTES, "", - "experiment" + "experiment", + true ); assertTrue(actual.getTimestamp() > 0); From 0cabae9ffbd30ec09011d3504dbc19039a39d58d Mon Sep 17 00:00:00 2001 From: "FOLIO3PK\\muhammadnoman" Date: Wed, 11 Nov 2020 18:27:47 +0500 Subject: [PATCH 2/2] Added getEnabled in decisionMetadata --- .../ab/event/internal/payload/DecisionMetadata.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java b/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java index f8e62d4c9..8189dae72 100644 --- a/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java +++ b/core-api/src/main/java/com/optimizely/ab/event/internal/payload/DecisionMetadata.java @@ -52,6 +52,10 @@ public String getRuleKey() { return ruleKey; } + public boolean getEnabled() { + return enabled; + } + public String getFlagKey() { return flagKey; }