public void DestroySucessfully() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_5.json", ""); var attributes = new Dictionary <string, object>(); attributes.Add("permissions", new List <string>() { "execute" }); //Act var result = client.GetTreatment("test1", "UT_NOT_SET_MATCHER", attributes); client.Destroy(); var resultDestroy1 = client.GetTreatment("test1", "UT_NOT_SET_MATCHER", attributes); var manager = client.GetSplitManager(); var resultDestroy2 = manager.Splits(); var resultDestroy3 = manager.SplitNames(); var resultDestroy4 = manager.Split("UT_NOT_SET_MATCHER"); //Assert Assert.IsNotNull(result); Assert.AreEqual("on", result); // !Contains any of "create","delete","update" Assert.IsTrue(resultDestroy1 == "control"); Assert.AreEqual(resultDestroy2.Count, 0); Assert.AreEqual(resultDestroy3.Count, 0); Assert.IsTrue(resultDestroy4 == null); }
public void ExecuteGetTreatmentAndLogLabelException() { //Arrange var impressionsLogMock = new Mock <IImpressionsLog>(); var splitCacheMock = new Mock <ISplitCache>(); splitCacheMock .Setup(x => x.GetSplit(It.IsAny <string>())) .Throws <Exception>(); var client = new JSONFileClient($"{rootFilePath}splits_staging_3.json", "", _logMock.Object, splitCacheInstance: splitCacheMock.Object, impressionsLog: impressionsLogMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("test", "asd", null); //Assert Thread.Sleep(1000); impressionsLogMock.Verify(x => x.Log(It.Is <IList <KeyImpression> >(p => p.FirstOrDefault().keyName == "test" && p.FirstOrDefault().feature == "asd" && p.FirstOrDefault().treatment == "control" && p.FirstOrDefault().time > 0 && p.FirstOrDefault().changeNumber == null && p.FirstOrDefault().label == "exception" && p.FirstOrDefault().bucketingKey == null))); }
public void ExecuteGetTreatmentOnDeletedSplitShouldReturnControl() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_3.json", ""); //Act var result = client.GetTreatment("test", "asd", null); client.RemoveSplitFromCache("asd"); var result2 = client.GetTreatment("test", "asd", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); Assert.IsNotNull(result2); Assert.AreEqual("control", result2); }
public void ExecuteGetTreatmentOnSplitWithOnOffOnPartition() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_4.json", ""); //Act var result = client.GetTreatment("01", "Test_on_off_on", null); var result2 = client.GetTreatment("a0ax09z", "Test_on_off_on", null); var result3 = client.GetTreatment("00b0", "Test_on_off_on", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("on", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); Assert.IsNotNull(result3); Assert.AreEqual("on", result3); }
public void ExecuteGetTreatmentOnSplitWithTrafficAllocationWhenAllocationIsDifferentThan100() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_4.json", ""); //Act var result = client.GetTreatment("01", "Traffic_Allocation_UI3", null); var result2 = client.GetTreatment("ab", "Traffic_Allocation_UI3", null); var result3 = client.GetTreatment("00b0", "Traffic_Allocation_UI3", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); Assert.IsNotNull(result3); Assert.AreEqual("off", result3); }
public void ExecuteGetTreatmentOnSplitWithTrafficAllocation() { //Arrange var client = new JSONFileClient("splits_staging_4.json", "", _logMock.Object); //Act var result = client.GetTreatment("01", "Traffic_Allocation_UI", null); var result2 = client.GetTreatment("ab", "Traffic_Allocation_UI", null); var result3 = client.GetTreatment("00b0", "Traffic_Allocation_UI", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); Assert.IsNotNull(result3); Assert.AreEqual("off", result3); }
public void ExecuteGetTreatmentOnDeletedSplitShouldReturnControl() { //Arrange var client = new JSONFileClient($"{rootFilePath}splits_staging_3.json", "", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("test", "asd", null); client.RemoveSplitFromCache("asd"); var result2 = client.GetTreatment("test", "asd", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); Assert.IsNotNull(result2); Assert.AreEqual("control", result2); }
public void ExecuteGetTreatmentWhenUnknownMatcherIsIncluded() { //Arrange var client = new JSONFileClient($"{rootFilePath}splits_staging_3.json", "", _logMock.Object); //Act var result = client.GetTreatment("xs", "Unknown_Matcher", null); //Assert Assert.AreEqual("control", result); }
public void GetTreatment_WithoutBlockUntiltReady_ReturnsOff() { // Arrange. var client = new JSONFileClient($"{rootFilePath}splits_staging_3.json", "", _logMock.Object); // Act. var result = client.GetTreatment("key", "anding"); // Assert. Assert.AreEqual("off", result); _logMock.Verify(mock => mock.Error($"GetTreatment: the SDK is not ready, the operation cannot be executed."), Times.Never); }
public void ExecuteGetTreatmentOnSplitWithOnOffOnPartition() { //Arrange var client = new JSONFileClient("splits_staging_4.json", "", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("01", "Test_on_off_on", null); var result2 = client.GetTreatment("a0ax09z", "Test_on_off_on", null); var result3 = client.GetTreatment("00b0", "Test_on_off_on", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("on", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); Assert.IsNotNull(result3); Assert.AreEqual("on", result3); }
public void ExecuteGetTreatmentOnSplitWithTrafficAllocationWhenAllocationIsDifferentThan100() { //Arrange var client = new JSONFileClient($"{rootFilePath}splits_staging_4.json", "", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("01", "Traffic_Allocation_UI3", null); var result2 = client.GetTreatment("ab", "Traffic_Allocation_UI3", null); var result3 = client.GetTreatment("00b0", "Traffic_Allocation_UI3", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); Assert.IsNotNull(result3); Assert.AreEqual("off", result3); }
public void ExecuteGetTreatmentOnFailedParsingSplitShouldNotAffectOtherSplits() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_3.json", ""); //Act var result = client.GetTreatment("test", "asd", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); }
public void ExecuteGetTreatmentWhenUnknownMatcherIsIncluded() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var client = new JSONFileClient(@"Resources\splits_staging_3.json", "", null, null, treatmentLogMock.Object); //Act var result = client.GetTreatment("xs", "Unknown_Matcher", null); //Assert Assert.AreEqual("control", result); }
public void ExecuteGetTreatmentAndNotLogLabelForTreatmentIfLabelsNotEnabled() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var client = new JSONFileClient(@"Resources\splits_staging_3.json", "", null, null, treatmentLogMock.Object, isLabelsEnabled: false); //Act var result = client.GetTreatment("db765170-e9f2-11e5-885c-c2f58c3a47a7", "Segments_Restructuring_UI", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "db765170-e9f2-11e5-885c-c2f58c3a47a7" && p.feature == "Segments_Restructuring_UI" && p.treatment == "on" && p.time > 0 && p.changeNumber == 1484084207827 && p.label == null && p.bucketingKey == null))); }
public void ExecuteGetTreatmentAndLogLabelKilled() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var client = new JSONFileClient(@"Resources\splits_staging_3.json", "", null, null, treatmentLogMock.Object); //Act var result = client.GetTreatment("test", "test_jw3", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "test" && p.feature == "test_jw3" && p.treatment == "off" && p.time > 0 && p.changeNumber == 1470947806420 && p.label == "killed" && p.bucketingKey == null))); }
public void ExecuteGetTreatmentOnFailedParsingSplitShouldReturnControl() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_3.json", ""); //Act var result = client.GetTreatment("test", "fail", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("control", result); }
public void ExecuteGetTreatmentWithDependencyMatcherReturnsOn() { //Arrange var client = new JSONFileClient("splits_staging_6.json", "", _logMock.Object); //Act var result = client.GetTreatment("fake_user_id_1", "test_dependency", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("on", result); }
public void ExecuteGetTreatmentAndLogLabelForTreatment() { //Arrange var treatmentLogMock = new Mock <IListener <KeyImpression> >(); var client = new JSONFileClient("splits_staging_3.json", "", _logMock.Object, null, null, treatmentLogMock.Object); //Act var result = client.GetTreatment("db765170-e9f2-11e5-885c-c2f58c3a47a7", "Segments_Restructuring_UI", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "db765170-e9f2-11e5-885c-c2f58c3a47a7" && p.feature == "Segments_Restructuring_UI" && p.treatment == "on" && p.time > 0 && p.changeNumber == 1484084207827 && p.label == "explicitly included" && p.bucketingKey == null))); }
public void ExecuteGetTreatmentOnRemovedUserFromSegmentShouldReturnOff() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_3.json", @"Resources\segment_payed.json"); //Act var result = client.GetTreatment("abcdz", "test_jw2", null); client.RemoveKeyFromSegmentCache("payed", new List <string>() { "abcdz" }); var result2 = client.GetTreatment("abcdz", "test_jw2", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("on", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); }
public void ExecuteGetTreatmentWithDependencyMatcherReturnsOff() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_6.json", ""); //Act var result = client.GetTreatment("fake_user_id_6", "test_dependency", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); }
public void ExecuteGetTreatmentAndLogLabelTrafficAllocationFailed() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var client = new JSONFileClient(@"Resources\splits_staging_4.json", "", null, null, treatmentLogMock.Object); //Act var result = client.GetTreatment("test", "Traffic_Allocation_UI2", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "test" && p.feature == "Traffic_Allocation_UI2" && p.treatment == "off" && p.time > 0 && p.changeNumber == 1490652849498 && p.label == "not in split" && p.bucketingKey == null))); }
public void ExecuteGetTreatmentAndLogLabelNoConditionMatched() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var client = new JSONFileClient(@"Resources\splits_staging_3.json", "", null, null, treatmentLogMock.Object); //Act var result = client.GetTreatment("test", "whitelisting_elements", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "test" && p.feature == "whitelisting_elements" && p.treatment == "off" && p.time > 0 && p.changeNumber == 1471368078203 && p.label == "no rule matched" && p.bucketingKey == null))); }
public void ExecuteGetTreatmentAndLogLabelSplitNotFound() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var client = new JSONFileClient(@"Resources\splits_staging_3.json", "", null, null, treatmentLogMock.Object); //Act client.RemoveSplitFromCache("asd"); var result = client.GetTreatment("test", "asd", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "test" && p.feature == "asd" && p.treatment == "control" && p.time > 0 && p.changeNumber == null && p.label == "rules not found" && p.bucketingKey == null))); }
public void ExecuteGetTreatmentOnSplitWithTrafficAllocationWhenAllocationIs1ReturnsDefaultTreatment() { //Arrange var client = new JSONFileClient("splits_staging_7.json", "", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("mauro_test", "ta_bucket1_test", null); //Assert Assert.AreEqual("default_treatment", result); }
public void ExecuteGetTreatmentOnSplitWithSegmentNotInitialized() { //Arrange var client = new JSONFileClient(@"Resources\splits_staging_3.json", ""); //Act //feature test_jw2 has UserDefinedSegmentMatcher //on "payed" segment, and it is not initialized. var result = client.GetTreatment("abcdz", "test_jw2", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); }
public void GetTreatment_WithoutBlockUntiltReady_ReturnsOff() { // Arrange. var treatmentLogMock = new Mock <IListener <KeyImpression> >(); var client = new JSONFileClient("splits_staging_3.json", "", _logMock.Object, null, null, treatmentLogMock.Object); // Act. var result = client.GetTreatment("key", "anding"); // Assert. Assert.AreEqual("off", result); _logMock.Verify(mock => mock.Error($"GetTreatment: the SDK is not ready, the operation cannot be executed."), Times.Never()); }
public void ExecuteGetTreatmentOnRemovedUserFromSegmentShouldReturnOff() { //Arrange var client = new JSONFileClient($"{rootFilePath}splits_staging_3.json", $"{rootFilePath}segment_payed.json", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("abcdz", "test_jw2", null); client.RemoveKeyFromSegmentCache("payed", new List <string>() { "abcdz" }); var result2 = client.GetTreatment("abcdz", "test_jw2", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("on", result); Assert.IsNotNull(result2); Assert.AreEqual("off", result2); }
public void ExecuteGetTreatmentWithDependencyMatcherReturnsOff() { //Arrange var client = new JSONFileClient($"{rootFilePath}splits_staging_6.json", "", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("fake_user_id_6", "test_dependency", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); }
public void ExecuteGetTreatmentOnFailedParsingSplitShouldNotAffectOtherSplits() { //Arrange var client = new JSONFileClient("splits_staging_3.json", "", _logMock.Object); client.BlockUntilReady(1000); //Act var result = client.GetTreatment("test", "asd", null); //Assert Assert.IsNotNull(result); Assert.AreEqual("off", result); }
public void ExecuteGetTreatmentAndLogLabelException() { //Arrange var treatmentLogMock = new Mock <IImpressionListener>(); var splitCacheMock = new Mock <ISplitCache>(); splitCacheMock.Setup(x => x.GetSplit(It.IsAny <string>())).Throws <Exception>(); var client = new JSONFileClient(@"Resources\splits_staging_3.json", "", null, splitCacheMock.Object, treatmentLogMock.Object); //Act var result = client.GetTreatment("test", "asd", null); //Assert treatmentLogMock.Verify(x => x.Log(It.Is <KeyImpression>(p => p.keyName == "test" && p.feature == "asd" && p.treatment == "control" && p.time > 0 && p.changeNumber == null && p.label == "exception" && p.bucketingKey == null))); }