From e53f3abde8302f22a191214b4d641246c9d6474e Mon Sep 17 00:00:00 2001 From: muhammadnoman Date: Tue, 31 Aug 2021 17:04:39 +0500 Subject: [PATCH 1/5] Changed experiment map order to match as given in experiment ids array of feature flag --- OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs index 53ad7899..e2f8e6e4 100644 --- a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs +++ b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs @@ -227,9 +227,12 @@ private IDictionary GetFeaturesMap(ProjectConfig proj foreach (var featureFlag in projectConfig.FeatureFlags) { - var featureExperimentMap = experimentsMapById.Where(expMap => featureFlag.ExperimentIds.Contains(expMap.Key)) - .ToDictionary(k => k.Value.Key, v => v.Value); - + var featureExperimentMap = new Dictionary(); + foreach (var experimentId in featureFlag.ExperimentIds) + { + var experimentDictionary = experimentsMapById[experimentId]; + featureExperimentMap.Add(experimentDictionary.Key, experimentDictionary); + } var featureVariableMap = featureFlag.Variables.Select(v => (OptimizelyVariable)v).ToDictionary(k => k.Key, v => v) ?? new Dictionary(); var experimentRules = featureExperimentMap.Select(exMap => exMap.Value).ToList(); From c467bf2103e1f579bb7a91294ac1a6e32b5c38d3 Mon Sep 17 00:00:00 2001 From: Sohail Hussain Date: Wed, 1 Sep 2021 14:34:34 -0700 Subject: [PATCH 2/5] updated config service sequence for experimentRules --- OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs index e2f8e6e4..d6061e46 100644 --- a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs +++ b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs @@ -227,12 +227,9 @@ private IDictionary GetFeaturesMap(ProjectConfig proj foreach (var featureFlag in projectConfig.FeatureFlags) { - var featureExperimentMap = new Dictionary(); - foreach (var experimentId in featureFlag.ExperimentIds) - { - var experimentDictionary = experimentsMapById[experimentId]; - featureExperimentMap.Add(experimentDictionary.Key, experimentDictionary); - } + var featureExperimentMap = featureFlag.ExperimentIds.Select(experimentId => experimentsMapById[experimentId]) + .ToDictionary(experiment => experiment.Key, experiment => experiment); + var featureVariableMap = featureFlag.Variables.Select(v => (OptimizelyVariable)v).ToDictionary(k => k.Key, v => v) ?? new Dictionary(); var experimentRules = featureExperimentMap.Select(exMap => exMap.Value).ToList(); From 2b163803240aa124d16d235ccad0212b9adf67d6 Mon Sep 17 00:00:00 2001 From: msohailhussain Date: Wed, 1 Sep 2021 15:07:34 -0700 Subject: [PATCH 3/5] updated mono and dotnet version --- .travis.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index cd46dcf5..3d0d53d6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,7 +48,7 @@ jobs: - stage: 'Unit Tests' language: csharp dist: xenial - mono: 5.2.0 + mono: 6.12.0 solution: "./OptimizelySDK.Travis.sln" install: - nuget restore ./OptimizelySDK.Travis.sln @@ -69,7 +69,7 @@ jobs: # dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189 dist: trusty mono: none - dotnet: 2.1.502 + dotnet: 3.1 install: - dotnet restore OptimizelySDK.NetStandard16/OptimizelySDK.NetStandard16.csproj script: @@ -86,7 +86,7 @@ jobs: # dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189 dist: trusty mono: none - dotnet: 2.1.502 + dotnet: 3.1 install: - dotnet restore OptimizelySDK.NetStandard20/OptimizelySDK.NetStandard20.csproj script: From 36c0ce80283e31246ffa0e39cb87aa5a4e2a691e Mon Sep 17 00:00:00 2001 From: msohailhussain Date: Wed, 1 Sep 2021 15:34:08 -0700 Subject: [PATCH 4/5] updated xenial --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3d0d53d6..1b16400a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -67,7 +67,7 @@ jobs: - stage: 'NetStandard16' language: csharp # dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189 - dist: trusty + dist: xenial mono: none dotnet: 3.1 install: @@ -84,7 +84,7 @@ jobs: - stage: 'NetStandard20' language: csharp # dotnet only works on trusty https://github.com/travis-ci/travis-ci/issues/5189 - dist: trusty + dist: xenial mono: none dotnet: 3.1 install: From b18d93ecc87fe9e4b0b75abcaf8678a31a9ffcf8 Mon Sep 17 00:00:00 2001 From: Sohail Hussain Date: Wed, 1 Sep 2021 16:43:52 -0700 Subject: [PATCH 5/5] made sure order is maintained via array --- OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs index d6061e46..ae7a26e1 100644 --- a/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs +++ b/OptimizelySDK/OptlyConfig/OptimizelyConfigService.cs @@ -227,12 +227,11 @@ private IDictionary GetFeaturesMap(ProjectConfig proj foreach (var featureFlag in projectConfig.FeatureFlags) { - var featureExperimentMap = featureFlag.ExperimentIds.Select(experimentId => experimentsMapById[experimentId]) - .ToDictionary(experiment => experiment.Key, experiment => experiment); + var experimentRules = featureFlag.ExperimentIds.Select(experimentId => experimentsMapById[experimentId]).ToList(); var featureVariableMap = featureFlag.Variables.Select(v => (OptimizelyVariable)v).ToDictionary(k => k.Key, v => v) ?? new Dictionary(); - var experimentRules = featureExperimentMap.Select(exMap => exMap.Value).ToList(); + var featureExperimentMap = experimentRules.ToDictionary(experiment => experiment.Key, experiment => experiment); var rollout = projectConfig.GetRolloutFromId(featureFlag.RolloutId); var deliveryRules = GetDeliveryRules(featureFlag.Id, rollout.Experiments, projectConfig);