コード例 #1
0
        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);
        }
コード例 #2
0
        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)));
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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)));
        }
コード例 #15
0
        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)));
        }
コード例 #16
0
        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);
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        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)));
        }
コード例 #19
0
        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);
        }
コード例 #20
0
        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);
        }
コード例 #21
0
        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)));
        }
コード例 #22
0
        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)));
        }
コード例 #23
0
        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)));
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        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);
        }
コード例 #26
0
        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());
        }
コード例 #27
0
        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);
        }
コード例 #28
0
        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);
        }
コード例 #29
0
        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);
        }
コード例 #30
0
        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)));
        }