Пример #1
0
        public void Manager_Split_ReturnsSplit()
        {
            // Arrange.
            using (var httpClientMock = GetHttpClientMock())
            {
                var configurations = GetConfigurationOptions(httpClientMock?.GetUrl());

                var splitName = "MAURO_TEST";
                var apikey    = "base-apikey15";

                var splitFactory = new SplitFactory(apikey, configurations);
                var manager      = splitFactory.Manager();

                manager.BlockUntilReady(10000);

                // Act.
                var result = manager.Split(splitName);

                // Assert.
                Assert.IsNotNull(result);
                Assert.AreEqual(splitName, result.name);

                splitFactory.Client().Destroy();
            }
        }
Пример #2
0
        public void Split_WithLocalhostClient_WhenNameIsTestingSplitOnlyWl_ReturnsSplit()
        {
            // Arrange.
            var splitViewExpected = new SplitView
            {
                name       = "testing_split_only_wl",
                treatments = new List <string> {
                    "whitelisted"
                },
            };

            var configurationOptions = new ConfigurationOptions
            {
                LocalhostFilePath = $"{rootFilePath}split.yaml"
            };

            _blockUntilReadyService
            .Setup(mock => mock.IsSdkReady())
            .Returns(true);

            var factory = new SplitFactory("localhost", configurationOptions);
            var manager = factory.Manager();

            manager.BlockUntilReady(1000);

            // Act.
            var splitViewResult = manager.Split("testing_split_only_wl");

            // Assert.
            Assert.AreEqual(splitViewExpected.name, splitViewResult.name);
            Assert.IsFalse(splitViewResult.killed);
            Assert.IsNull(splitViewResult.configs);
            Assert.IsNull(splitViewResult.trafficType);
            Assert.AreEqual(splitViewExpected.treatments.Count, splitViewResult.treatments.Count);
        }
Пример #3
0
        public static void Main(string[] args)
        {
            var localhostFilePath = args[0];

            Console.WriteLine($"localhostFilePath: {localhostFilePath}");

            var client = new LocalhostClient(localhostFilePath, new NoOpLogger());

            var factory = new SplitFactory("localhost", new ConfigurationOptions
            {
                LocalhostFilePath = localhostFilePath,
                Ready             = 10000
            });

            Console.WriteLine();
            foreach (var splitName in factory.Manager().SplitNames())
            {
                Console.WriteLine($"Split: {splitName}");
            }

//      var client = factory.Client();
            var treatment = client.GetTreatment("id", "testing_split_on");

            Console.WriteLine();
            Console.WriteLine($"Treatment: {treatment}");
        }
Пример #4
0
        public void Split_WithLocalhostClient_WhenNameIsTestingSplitWithWl_ReturnsSplit()
        {
            // Arrange.
            var splitViewExpected = new SplitView
            {
                name       = "testing_split_with_wl",
                treatments = new List <string> {
                    "not_in_whitelist"
                },
                configs = new Dictionary <string, string>
                {
                    { "not_in_whitelist", "{\"color\": \"green\"}" },
                    { "multi_key_wl", "{\"color\": \"brown\"}" }
                }
            };

            var configurationOptions = new ConfigurationOptions
            {
                LocalhostFilePath = "split.yaml",
                Ready             = 500
            };

            _blockUntilReadyService
            .Setup(mock => mock.IsSdkReady())
            .Returns(true);

            var factory = new SplitFactory("localhost", configurationOptions);
            var manager = factory.Manager();

            manager.BlockUntilReady(1000);

            // Act.
            var splitViewResult = manager.Split("testing_split_with_wl");

            // Assert.
            Assert.AreEqual(splitViewExpected.name, splitViewResult.name);
            Assert.IsFalse(splitViewResult.killed);
            Assert.IsNull(splitViewResult.trafficType);
            Assert.AreEqual(splitViewExpected.configs.Count, splitViewResult.configs.Count);
            foreach (var config in splitViewExpected.configs)
            {
                Assert.AreEqual(config.Value, splitViewResult.configs[config.Key]);
            }

            Assert.AreEqual(splitViewExpected.treatments.Count, splitViewResult.treatments.Count);
            foreach (var treatment in splitViewExpected.treatments)
            {
                Assert.IsNotNull(splitViewResult.treatments.FirstOrDefault(t => t == treatment));
            }
        }
Пример #5
0
        public void Manager_SplitNames_WithoutBUR_ReturnsNull()
        {
            // Arrange.
            var httpClientMock = GetHttpClientMock();
            var configurations = GetConfigurationOptions(httpClientMock);

            var apikey = "apikey2";

            var splitFactory = new SplitFactory(apikey, configurations);
            var manager      = splitFactory.Manager();

            // Act.
            var result = manager.SplitNames();

            // Assert.
            Assert.IsNull(result);

            ShutdownServer(httpClientMock);
        }
Пример #6
0
        public void Manager_SplitNames_WithoutBUR_ReturnsNull()
        {
            // Arrange.
            using (var httpClientMock = GetHttpClientMock())
            {
                var configurations = GetConfigurationOptions(httpClientMock.GetUrl());

                var apikey = "apikey6";

                var splitFactory = new SplitFactory(apikey, configurations);
                var manager      = splitFactory.Manager();

                // Act.
                var result = manager.SplitNames();

                // Assert.
                Assert.IsNull(result);

                splitFactory.Client().Destroy();
            }
        }
Пример #7
0
        public void Split_WithLocalhostClient_WhenNameIsTestingSplitOn_ReturnsSplit()
        {
            // Arrange.
            var splitViewExpected = new SplitView
            {
                name       = "testing_split_on",
                treatments = new List <string> {
                    "on"
                }
            };

            var configurationOptions = new ConfigurationOptions
            {
                LocalhostFilePath = "split.yaml",
                Ready             = 500
            };

            _blockUntilReadyService
            .Setup(mock => mock.IsSdkReady())
            .Returns(true);

            var factory = new SplitFactory("localhost", configurationOptions);
            var manager = factory.Manager();

            manager.BlockUntilReady(1000);

            // Act.
            var splitViewResult = manager.Split("testing_split_on");

            // Assert.
            Assert.AreEqual(splitViewExpected.name, splitViewResult.name);
            Assert.IsFalse(splitViewResult.killed);
            Assert.IsNull(splitViewResult.configs);
            Assert.IsNull(splitViewResult.trafficType);
            Assert.AreEqual(splitViewExpected.treatments.Count, splitViewResult.treatments.Count);
            foreach (var treatment in splitViewExpected.treatments)
            {
                Assert.IsNotNull(splitViewResult.treatments.FirstOrDefault(t => t == treatment));
            }
        }
Пример #8
0
        public void Manager_Split_WhenNameDoesntExist_ReturnsSplit()
        {
            // Arrange.
            var httpClientMock = GetHttpClientMock();
            var configurations = GetConfigurationOptions(httpClientMock);

            var splitName = "Split_Name";
            var apikey    = "apikey25";

            var splitFactory = new SplitFactory(apikey, configurations);
            var manager      = splitFactory.Manager();

            manager.BlockUntilReady(10000);

            // Act.
            var result = manager.Split(splitName);

            // Assert.
            Assert.IsNull(result);

            ShutdownServer(httpClientMock);
        }
Пример #9
0
        public void Manager_Splits_ReturnsSplitList()
        {
            // Arrange.
            var httpClientMock = GetHttpClientMock();
            var configurations = GetConfigurationOptions(httpClientMock);

            var apikey = "apikey23";

            var splitFactory = new SplitFactory(apikey, configurations);
            var manager      = splitFactory.Manager();

            manager.BlockUntilReady(10000);

            // Act.
            var result = manager.Splits();

            // Assert.
            Assert.AreEqual(30, result.Count);
            Assert.IsInstanceOfType(result, typeof(List <SplitView>));

            ShutdownServer(httpClientMock);
        }
Пример #10
0
        public void Manager_Split_ReturnsSplit()
        {
            // Arrange.
            var httpClientMock = GetHttpClientMock();
            var configurations = GetConfigurationOptions(httpClientMock);

            var splitName = "MAURO_TEST";
            var apikey    = "apikey24";

            var splitFactory = new SplitFactory(apikey, configurations);
            var manager      = splitFactory.Manager();

            manager.BlockUntilReady(10000);

            // Act.
            var result = manager.Split(splitName);

            // Assert.
            Assert.IsNotNull(result);
            Assert.AreEqual(splitName, result.name);

            ShutdownServer(httpClientMock);
        }
Пример #11
0
        public void BuildSplitClient_WithLocalhostApiKeyAndIsYmlFile_ReturnsLocalhostClient()
        {
            // Arrange.
            var splitNamesExpected = new List <string>
            {
                "testing_split_on",
                "testing_split_only_wl",
                "testing_split_with_wl",
                "testing_split_off_with_config",
            };

            var configurationOptions = new ConfigurationOptions
            {
                LocalhostFilePath = "split.yml",
                Ready             = 500
            };

            var factory = new SplitFactory("localhost", configurationOptions);
            var manager = factory.Manager();

            manager.BlockUntilReady(1000);

            // Act.
            var splitsResult = manager.Splits();

            // Assert.
            Assert.AreEqual(splitNamesExpected.Count, splitsResult.Count);
            foreach (var splitName in splitNamesExpected)
            {
                var split = splitsResult.FirstOrDefault(sr => sr.name.Equals(splitName));
                Assert.IsNotNull(split);

                var splitResult = manager.Split(splitName);
                Assert.IsNotNull(splitResult);
                Assert.IsFalse(splitResult.killed);
            }
        }
Пример #12
0
        public void Manager_Split_WhenNameDoesntExist_ReturnsSplit()
        {
            // Arrange.
            using (var httpClientMock = GetHttpClientMock())
            {
                var configurations = GetConfigurationOptions(httpClientMock?.GetUrl());

                var splitName = "Split_Name";
                var apikey    = "base-apikey16";

                var splitFactory = new SplitFactory(apikey, configurations);
                var manager      = splitFactory.Manager();

                manager.BlockUntilReady(10000);

                // Act.
                var result = manager.Split(splitName);

                // Assert.
                Assert.IsNull(result);

                splitFactory.Client().Destroy();
            }
        }
Пример #13
0
        public void Manager_Splits_ReturnsSplitList()
        {
            // Arrange.
            using (var httpClientMock = GetHttpClientMock())
            {
                var configurations = GetConfigurationOptions(httpClientMock?.GetUrl());

                var apikey = "base-apikey14";

                var splitFactory = new SplitFactory(apikey, configurations);
                var manager      = splitFactory.Manager();

                manager.BlockUntilReady(10000);

                // Act.
                var result = manager.Splits();

                // Assert.
                Assert.AreEqual(30, result.Count);
                Assert.IsInstanceOfType(result, typeof(List <SplitView>));

                splitFactory.Client().Destroy();
            }
        }