From 065aec2ad072673b2ecdb2f2fb5d256909dc4f6c Mon Sep 17 00:00:00 2001 From: Akshat Soni Date: Thu, 4 May 2023 00:25:03 +0530 Subject: [PATCH] TP-26660 | optional primary metric (#66) --- .../navi/medici/mapper/ExperimentMapper.java | 19 ++++++++++++++++++- .../experiment/ExperimentServiceImpl.java | 14 ++++++++------ 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/litmus-core/src/main/java/com/navi/medici/mapper/ExperimentMapper.java b/litmus-core/src/main/java/com/navi/medici/mapper/ExperimentMapper.java index 9b05ab3..018b85c 100644 --- a/litmus-core/src/main/java/com/navi/medici/mapper/ExperimentMapper.java +++ b/litmus-core/src/main/java/com/navi/medici/mapper/ExperimentMapper.java @@ -19,6 +19,7 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -69,7 +70,9 @@ public class ExperimentMapper { .experimentName(experimentEntity.getName()) .description(experimentEntity.getDescription()) .strategies(Objects.nonNull(experimentEntity.getStrategies()) - ? jacksonUtils.stringToListObject(experimentEntity.getStrategies(), ActivationStrategy.class) + ? addRolloutToSegmentsWithNoRollouts( + jacksonUtils.stringToListObject(experimentEntity.getStrategies(), ActivationStrategy.class) + ) : null) .variants(Objects.nonNull(experimentEntity.getVariants()) ? jacksonUtils.stringToListObject(experimentEntity.getVariants(), VariantDefinition.class) @@ -84,6 +87,20 @@ public class ExperimentMapper { .build(); } + + private List addRolloutToSegmentsWithNoRollouts(List strategies) { + return strategies.stream() + .map(strategy -> { + Map parameters = strategy.getParameters(); + if (parameters.containsKey("segment") && !parameters.containsKey("rollout")) { + parameters.put("rollout", "100"); + } + strategy.setParameters(parameters); + return strategy; + }) + .toList(); + } + public ExperimentInfoDTO mapExperimentInfoEntityToExperimentInfoDTO(ExperimentInfoEntity experimentInfo) { if (Objects.isNull(experimentInfo)) { return null; diff --git a/litmus-core/src/main/java/com/navi/medici/service/experiment/ExperimentServiceImpl.java b/litmus-core/src/main/java/com/navi/medici/service/experiment/ExperimentServiceImpl.java index 63c72f7..707c77d 100644 --- a/litmus-core/src/main/java/com/navi/medici/service/experiment/ExperimentServiceImpl.java +++ b/litmus-core/src/main/java/com/navi/medici/service/experiment/ExperimentServiceImpl.java @@ -142,12 +142,14 @@ public class ExperimentServiceImpl implements ExperimentService { .team(team.orElse(null)) .build(); experimentInfoQuery.save(experimentInfo); - ExperimentMetricMappingEntity primaryMetricMapping = ExperimentMetricMappingEntity.builder() - .experiment(experiment) - .metric(primaryMetric.get()) - .experimentMetricType(ExperimentMetricType.PRIMARY) - .build(); - experimentMetricMappingQuery.save(primaryMetricMapping); + if (primaryMetric.isPresent()) { + ExperimentMetricMappingEntity primaryMetricMapping = ExperimentMetricMappingEntity.builder() + .experiment(experiment) + .metric(primaryMetric.get()) + .experimentMetricType(ExperimentMetricType.PRIMARY) + .build(); + experimentMetricMappingQuery.save(primaryMetricMapping); + } if (secondaryMetric.isPresent()) { ExperimentMetricMappingEntity secondaryMetricMapping = ExperimentMetricMappingEntity.builder() .experiment(experiment)