Skip to content

Commit 3f098e9

Browse files
committed
Updated unit tests and added logs
1 parent 0ea5e2a commit 3f098e9

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

core-api/src/main/java/com/optimizely/ab/optimizelyconfig/OptimizelyConfigService.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@
1717

1818
import com.optimizely.ab.annotations.VisibleForTesting;
1919
import com.optimizely.ab.config.*;
20-
20+
import org.slf4j.Logger;
21+
import org.slf4j.LoggerFactory;
2122
import java.util.*;
2223
import java.util.function.Function;
2324
import java.util.stream.Collectors;
2425

2526
public class OptimizelyConfigService {
2627

28+
private static final Logger logger = LoggerFactory.getLogger(OptimizelyConfigService.class);
2729
private ProjectConfig projectConfig;
2830
private OptimizelyConfig optimizelyConfig;
2931

@@ -34,7 +36,9 @@ public OptimizelyConfigService(ProjectConfig projectConfig) {
3436
this.projectConfig = projectConfig;
3537
this.featureKeyToVariablesMap = generateFeatureKeyToVariablesMap();
3638

39+
logger.info("Getting experiment map for project config");
3740
Map<String, OptimizelyExperiment> experimentsMap = getExperimentsMap();
41+
logger.info("Creating the complete optimizely config");
3842
optimizelyConfig = new OptimizelyConfig(
3943
experimentsMap,
4044
getFeaturesMap(experimentsMap),
@@ -59,6 +63,7 @@ public OptimizelyConfig getConfig() {
5963
Map<String, List<FeatureVariable>> generateFeatureKeyToVariablesMap() {
6064
List<FeatureFlag> featureFlags = projectConfig.getFeatureFlags();
6165
if (featureFlags == null) {
66+
logger.warn("Returning empty map because there are no feature flags in project config");
6267
return Collections.emptyMap();
6368
}
6469
return featureFlags.stream().collect(Collectors.toMap(FeatureFlag::getKey, featureFlag -> featureFlag.getVariables()));
@@ -67,13 +72,15 @@ Map<String, List<FeatureVariable>> generateFeatureKeyToVariablesMap() {
6772
@VisibleForTesting
6873
String getExperimentFeatureKey(String experimentId) {
6974
List<String> featureKeys = projectConfig.getExperimentFeatureKeyMapping().get(experimentId);
75+
logger.info("Keys for feature experiment is null {}", featureKeys == null);
7076
return featureKeys != null ? featureKeys.get(0) : null;
7177
}
7278

7379
@VisibleForTesting
7480
Map<String, OptimizelyExperiment> getExperimentsMap() {
7581
List<Experiment> experiments = projectConfig.getExperiments();
7682
if(experiments == null) {
83+
logger.warn("Returning empty map because there are no experiments in project config");
7784
return Collections.emptyMap();
7885
}
7986
return experiments.stream().collect(Collectors.toMap(Experiment::getKey, experiment -> new OptimizelyExperiment(
@@ -86,9 +93,11 @@ Map<String, OptimizelyExperiment> getExperimentsMap() {
8693
@VisibleForTesting
8794
Map<String, OptimizelyVariation> getVariationsMap(List<Variation> variations, String experimentId) {
8895
if(variations == null) {
96+
logger.warn("Returning empty map because there variations provided are null");
8997
return Collections.emptyMap();
9098
}
9199
Boolean isFeatureExperiment = this.getExperimentFeatureKey(experimentId) != null;
100+
logger.debug("Experiment id {} is a feature experiment: {}", experimentId, isFeatureExperiment);
92101
return variations.stream().collect(Collectors.toMap(Variation::getKey, variation -> new OptimizelyVariation(
93102
variation.getId(),
94103
variation.getKey(),
@@ -106,15 +115,16 @@ Map<String, OptimizelyVariation> getVariationsMap(List<Variation> variations, St
106115
@VisibleForTesting
107116
Map<String, OptimizelyVariable> getMergedVariablesMap(Variation variation, String experimentId) {
108117
String featureKey = this.getExperimentFeatureKey(experimentId);
109-
110118
if (featureKey != null) {
119+
logger.info("Merging the variables as feature key is available");
111120
// Generate temp map of all the available variable values from variation.
112121
Map<String, OptimizelyVariable> tempVariableIdMap = getFeatureVariableUsageInstanceMap(variation.getFeatureVariableUsageInstances());
113122

114123
// Iterate over all the variables available in associated feature.
115124
// Use value from variation variable if variable is available in variation and feature is enabled, otherwise use defaultValue from feature variable.
116125
List<FeatureVariable> featureVariables = featureKeyToVariablesMap.get(featureKey);
117126
if (featureVariables == null) {
127+
logger.warn("Returning empty map as featureKeyToVariablesMap is null");
118128
return Collections.emptyMap();
119129
}
120130

@@ -133,6 +143,7 @@ Map<String, OptimizelyVariable> getMergedVariablesMap(Variation variation, Strin
133143
@VisibleForTesting
134144
Map<String, OptimizelyVariable> getFeatureVariableUsageInstanceMap(List<FeatureVariableUsageInstance> featureVariableUsageInstances) {
135145
if(featureVariableUsageInstances == null) {
146+
logger.warn("Returning empty map because there FeatureVariableUsageInstance provided are null");
136147
return Collections.emptyMap();
137148
}
138149
return featureVariableUsageInstances.stream().collect(Collectors.toMap(FeatureVariableUsageInstance::getId, variable -> new OptimizelyVariable(
@@ -147,6 +158,7 @@ Map<String, OptimizelyVariable> getFeatureVariableUsageInstanceMap(List<FeatureV
147158
Map<String, OptimizelyFeature> getFeaturesMap(Map<String, OptimizelyExperiment> allExperimentsMap) {
148159
List<FeatureFlag> featureFlags = projectConfig.getFeatureFlags();
149160
if(featureFlags == null) {
161+
logger.warn("Returning empty map because there are no feature flags in project config");
150162
return Collections.emptyMap();
151163
}
152164
return featureFlags.stream().collect(Collectors.toMap(FeatureFlag::getKey, featureFlag -> new OptimizelyFeature(
@@ -160,6 +172,7 @@ Map<String, OptimizelyFeature> getFeaturesMap(Map<String, OptimizelyExperiment>
160172
@VisibleForTesting
161173
Map<String, OptimizelyExperiment> getExperimentsMapForFeature(List<String> experimentIds, Map<String, OptimizelyExperiment> allExperimentsMap) {
162174
if (experimentIds == null) {
175+
logger.warn("Returning empty map because the experiment id list is null");
163176
return Collections.emptyMap();
164177
}
165178

@@ -173,6 +186,7 @@ Map<String, OptimizelyExperiment> getExperimentsMapForFeature(List<String> exper
173186
@VisibleForTesting
174187
Map<String, OptimizelyVariable> getFeatureVariablesMap(List<FeatureVariable> featureVariables) {
175188
if (featureVariables == null) {
189+
logger.warn("Returning empty map because the feature variables list is null");
176190
return Collections.emptyMap();
177191
}
178192
return featureVariables.stream().collect(Collectors.toMap(FeatureVariable::getKey, featureVariable -> new OptimizelyVariable(

core-api/src/test/java/com/optimizely/ab/optimizelyconfig/OptimizelyConfigServiceTest.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,14 +150,15 @@ public void testGetVariationsMap() {
150150
OptimizelyVariation optimizelyVariation = optimizelyVariationMap.get(variation.getKey());
151151
assertEquals(optimizelyVariation.getId(), variation.getId());
152152
assertEquals(optimizelyVariation.getKey(), variation.getKey());
153-
Map<String, OptimizelyVariable> optimizelyVariableMap =
154-
optimizelyConfigService.getMergedVariablesMap(variation, experiment.getId());
155-
optimizelyVariableMap.forEach((variableKey, variable) -> {
156-
OptimizelyVariable optimizelyVariable = optimizelyVariableMap.get(variableKey);
157-
assertEquals(variable.getValue(), optimizelyVariable.getValue());
158-
assertEquals(variable.getType(), optimizelyVariable.getType());
159-
assertEquals(variable.getId(), optimizelyVariable.getId());
160-
assertEquals(variable.getKey(), optimizelyVariable.getKey());
153+
List<FeatureVariableUsageInstance> featureVariableUsageInstances = variation.getFeatureVariableUsageInstances();
154+
optimizelyVariation.getVariablesMap().forEach((variableKey, variable) -> {
155+
if(featureVariableUsageInstances != null) {
156+
featureVariableUsageInstances.forEach(featureVariableUsageInstance -> {
157+
if (variable.getId().equals(featureVariableUsageInstance.getId())) {
158+
assertEquals(variable.getValue(), featureVariableUsageInstance.getValue());
159+
}
160+
});
161+
}
161162
});
162163
});
163164
}

0 commit comments

Comments
 (0)