public void FilterInvalidEntitiesTest4()
        {
            IConfiguration configuration        = ObjectFactory.CreateAppSettingConfiguration();
            var            configurationSource  = ObjectFactory.CreateDefaultConfigurationSource(0, "App.config", configuration);
            var            configurationManager = ObjectFactory.CreateDefaultConfigurationManager(configurationSource);

            string managerId           = "soa";
            string loadBalancerId      = MethodInfo.GetCurrentMethod().Name;
            string fileName            = configuration.GetPropertyValue("soa.ribbon.local-cache.data-folder") + "\\" + managerId + "." + loadBalancerId;
            var    loadBalancerConfig  = new LoadBalancerConfig(new TruePing(), new DefaultServerSource(new Server[0]));
            var    loadBalancerManager = LoadBalancerManager.GetManager(managerId, new LoadBalancerManagerConfig(configurationManager));
            var    lbContext           = new DefaultLoadBalancerContext(loadBalancerManager, loadBalancerId, loadBalancerConfig);

            try
            {
                string data = "[{\"RouteId\":\"default-route-rule\",\"ServerGroups\":[{\"GroupId\":\"default-group-key\",\"Metadata\":[],\"Servers\":[{\"IsAlive\":true,\"Metadata\":[{\"Key\":\"subenv\",\"Value\":\"uat\"},{\"Key\":\"url\",\"Value\":\"http://10.2.44.138/test-service/\"},{\"Key\":\"healthCheckUrl\",\"Value\":\"http://10.2.44.138/test-service/checkhealth.json\"}],\"ServerId\":\"\"},{\"IsAlive\":true,\"Metadata\":[{\"Key\":\"subenv\",\"Value\":\"uat\"},{\"Key\":\"url\",\"Value\":\"http://10.2.42.106/test-service/\"},{\"Key\":\"healthCheckUrl\",\"Value\":\"http://10.2.42.106/test-service/checkhealth.json\"}],\"ServerId\":\"10.2.42.106\"}],\"Weight\":5}]}]";
                File.WriteAllText(fileName, data);

                var result = lbContext.ServerSourceManager.Restore();
                result = result.FilterInvalidEntities(_logger, new Dictionary <string, string>());
                Assert.AreEqual(1, result.Count);
                Assert.AreEqual(1, result[0].ServerGroups.Length);
                Assert.AreEqual(1, result[0].ServerGroups[0].Servers.Length);
            }
            finally
            {
                File.Delete(fileName);
            }
        }
示例#2
0
        private ILoadBalancer NewLoadBalancer(string loadBalancerId, LoadBalancerConfig loadBalancerConfig)
        {
            ParameterChecker.NotNullOrWhiteSpace(loadBalancerId, "loadBalancerId");
            ParameterChecker.NotNull(loadBalancerConfig, "loadBalancerConfig");
            var lbContext = new DefaultLoadBalancerContext(this, loadBalancerId, loadBalancerConfig);

            return(lbContext.LoadBalancer);
        }
        public void BackupRestoreTest()
        {
            IConfiguration configuration        = ObjectFactory.CreateAppSettingConfiguration();
            var            configurationSource  = ObjectFactory.CreateDefaultConfigurationSource(0, "App.config", configuration);
            var            configurationManager = ObjectFactory.CreateDefaultConfigurationManager(configurationSource);

            string managerId      = "soa";
            string loadBalancerId = MethodInfo.GetCurrentMethod().Name;
            string fileName       = configuration.GetPropertyValue("soa.ribbon.local-cache.data-folder") + "\\" + managerId + "." + loadBalancerId;

            try
            {
                var loadBalancerConfig  = new LoadBalancerConfig(new TruePing(), new DefaultServerSource(new Server[0]));
                var loadBalancerManager = LoadBalancerManager.GetManager(managerId, new LoadBalancerManagerConfig(configurationManager));
                var lbContext           = new DefaultLoadBalancerContext(loadBalancerManager, loadBalancerId, loadBalancerConfig);

                var manager = new DefaultServerSourceManager(lbContext);
                List <ServerGroup> serverGroups = new List <ServerGroup>();
                for (int i = 0; i < 10; i++)
                {
                    var server = new Server("Server_" + i, i % 2 == 0);
                    serverGroups.Add(new ServerGroup(server.ServerId, i, new List <Server>()
                    {
                        server
                    }));
                }
                var expected = new List <LoadBalancerRoute>()
                {
                    new LoadBalancerRoute("default", serverGroups)
                };
                manager.Backup(expected);
                var actual = manager.Restore();
                CollectionAssert.AreEqual(expected, actual);
            }
            finally
            {
                File.Delete(fileName);
            }
        }