public void TestBucketVariationInvalidExperimentsWithBucketingId() { var bucketer = new Bucketer(LoggerMock.Object); var expectedVariation = new Variation(); Assert.AreEqual(expectedVariation, bucketer.Bucket(Config, Config.GetExperimentFromKey("invalid_experiment"), TestBucketingIdVariation, TestUserId)); }
public void TestBucketRolloutRule() { var bucketer = new Bucketer(LoggerMock.Object); var rollout = Config.GetRolloutFromId("166660"); var rolloutRule = rollout.Experiments[1]; var expectedVariation = Config.GetVariationFromId(rolloutRule.Key, "177773"); Assert.True(TestData.CompareObjects(expectedVariation, bucketer.Bucket(Config, rolloutRule, "testBucketingId", TestUserId))); }
public void TestBucketRolloutRule() { var bucketer = new Bucketer(LoggerMock.Object); var rollout = Config.GetRolloutFromId("166660"); var rolloutRule = rollout.Experiments[1]; var expectedVariation = Config.GetVariationFromId(rolloutRule.Key, "177773"); var variationResult = bucketer.Bucket(Config, rolloutRule, "testBucketingId", TestUserId); Assert.True(TestData.CompareObjects(expectedVariation, variationResult.ResultObject)); Assert.AreEqual(variationResult.DecisionReasons.ToReport().Count, 0); var variationsResult = bucketer.Bucket(Config, rolloutRule, "testBucketingId", TestUserId); Assert.True(TestData.CompareObjects(expectedVariation, variationsResult.ResultObject)); Assert.AreEqual(variationsResult.DecisionReasons.ToReport(true).Count, 1); Assert.AreEqual(variationsResult.DecisionReasons.ToReport(true)[0], "User [testUserId] is in variation [177773] of experiment [177772]."); }
public void TestBucketInvalidExperiment() { var bucketer = new Bucketer(LoggerMock.Object); Assert.AreEqual(new Variation { }, bucketer.Bucket(Config, new Experiment(), TestBucketingIdControl, TestUserId)); LoggerMock.Verify(l => l.Log(It.IsAny <LogLevel>(), It.IsAny <string>()), Times.Never); }
public void TestBucketVariationInvalidExperimentsWithBucketingId() { var bucketer = new Bucketer(LoggerMock.Object); var expectedVariation = new Variation(); var variationResult = bucketer.Bucket(Config, Config.GetExperimentFromKey("invalid_experiment"), TestBucketingIdVariation, TestUserId); Assert.AreEqual(expectedVariation, variationResult.ResultObject); Assert.AreEqual(variationResult.DecisionReasons.ToReport().Count, 0); }
public void TestBucketVariationGroupedExperimentsWithBucketingId() { var bucketer = new Bucketer(LoggerMock.Object); var expectedVariation = new Variation(); var expectedGroupVariation = new Variation { Id = "7725250007", Key = "group_exp_2_var_2" }; Assert.AreEqual(expectedGroupVariation, bucketer.Bucket(Config, Config.GetExperimentFromKey("group_experiment_2"), TestBucketingIdGroupExp2Var2, TestUserIdBucketsToNoGroup)); }
public void TestBucketValidExperimentInGroupUserInForcedVariation() { var bucketer = new Bucketer(LoggerMock.Object); Assert.AreEqual(new Variation { Id = "7722260071", Key = "group_exp_1_var_1" }, bucketer.Bucket(Config, Config.GetExperimentFromKey("group_experiment_1"), TestBucketingIdControl, "user1")); LoggerMock.Verify(l => l.Log(LogLevel.INFO, "User [user1] is forced into variation [group_exp_1_var_1].")); LoggerMock.Verify(l => l.Log(It.IsAny <LogLevel>(), It.IsAny <string>()), Times.Exactly(1)); }
public void TestBucketVariationGroupedExperimentsWithBucketingId() { var bucketer = new Bucketer(LoggerMock.Object); var expectedVariation = new Variation(); var expectedGroupVariation = new Variation { Id = "7725250007", Key = "group_exp_2_var_2" }; var variationResult = bucketer.Bucket(Config, Config.GetExperimentFromKey("group_experiment_2"), TestBucketingIdGroupExp2Var2, TestUserIdBucketsToNoGroup); Assert.AreEqual(expectedGroupVariation, variationResult.ResultObject); Assert.AreEqual(variationResult.DecisionReasons.ToReport().Count, 0); bucketer.Bucket(Config, Config.GetExperimentFromKey("group_experiment_2"), TestBucketingIdGroupExp2Var2, TestUserIdBucketsToNoGroup); var report = variationResult.DecisionReasons.ToReport(true); Assert.AreEqual(report.Count, 2); Assert.AreEqual(report[0], "User [testUserId] is in experiment [group_experiment_2] of group [7722400015]."); Assert.AreEqual(report[1], "User [testUserId] is in variation [group_exp_2_var_2] of experiment [group_experiment_2]."); }
public void TestBucketWithBucketingId() { var bucketer = new Bucketer(LoggerMock.Object); var experiment = Config.GetExperimentFromKey("test_experiment"); var expectedVariation = new Variation { Id = "7722370027", Key = "control" }; var expectedVariation2 = new Variation { Id = "7721010009", Key = "variation" }; // make sure that the bucketing ID is used for the variation bucketing and not the user ID var variationResult = bucketer.Bucket(Config, experiment, TestBucketingIdControl, TestUserIdBucketsToVariation); Assert.AreEqual(expectedVariation, variationResult.ResultObject); Assert.AreEqual(variationResult.DecisionReasons.ToReport().Count, 0); variationResult = bucketer.Bucket(Config, experiment, TestBucketingIdControl, TestUserIdBucketsToVariation); Assert.AreEqual(expectedVariation, variationResult.ResultObject); Assert.AreEqual(variationResult.DecisionReasons.ToReport(true).Count, 1); Assert.AreEqual(variationResult.DecisionReasons.ToReport(true)[0], "User [bucketsToVariation!] is in variation [control] of experiment [test_experiment]."); }
public void TestBucketWithBucketingId() { var bucketer = new Bucketer(LoggerMock.Object); var experiment = Config.GetExperimentFromKey("test_experiment"); var expectedVariation = new Variation { Id = "7722370027", Key = "control" }; var expectedVariation2 = new Variation { Id = "7721010009", Key = "variation" }; // make sure that the bucketing ID is used for the variation bucketing and not the user ID Assert.AreEqual(expectedVariation, bucketer.Bucket(Config, experiment, TestBucketingIdControl, TestUserIdBucketsToVariation)); }
public DataBlockResult Compute(Partition p) { if (p == null) { throw new ArgumentNullException("p"); } DataBlockResult result = new DataBlockResult(this); // Verify the column exists if (!p.ContainsColumn(this.Column)) { result.Details.AddError(ExecutionDetails.ColumnDoesNotExist, this.Column); return(result); } // Verify we were able to get percentile values if (this.Buckets == null) { result.Details.AddError(ExecutionDetails.ColumnDoesNotSupportOperator, "percentile", this.Column); return(result); } // Find the set of items matching the where clause ShortSet whereSet = new ShortSet(p.Count); this.Where.TryEvaluate(p, whereSet, result.Details); IUntypedColumn column = p.Columns[this.Column]; if (result.Details.Succeeded) { Bucketer bucketer = NativeContainer.CreateTypedInstance <Bucketer>(typeof(Bucketer <>), column.ColumnType); result.Values = bucketer.Bucket(column.InnerColumn, whereSet, this.Buckets, this.Inclusive); result.Total = whereSet.Count(); } return(result); }