示例#1
0
 public WeightedResponseTimeRuleTest()
     : base("WeightedResponseTimeRule")
 {
     _ping = new EasyHttpPing(_factory, 20);
     var collector = new DefaultServerStatusCollector();
     var accumulater = new DefaultServerWeightAccumulater(collector);
     var rule = new WeightedResponseTimeRule(accumulater);
     _loadBalancer = new BaseLoadBalancer(1 * 1000, base._name, rule, _ping, new SerialPingStrategy(), _factory);
     _command = new LoadBalancerCommand(_loadBalancer, collector, null, null);
 }
示例#2
0
        public async void WeightedResponseTimeRuleTest()
        {
            var collector   = new DefaultServerStatusCollector();
            var accumulater = new DefaultServerWeightAccumulater(collector);
            var rule        = new Thrifty.MicroServices.Ribbon.Rules.WeightedResponseTimeRule(accumulater);
            var balancer    = new BaseLoadBalancer(1 * 1000, "demo", rule, Ping, new SerialPingStrategy(), LoggerFactory);

            accumulater.LoadBalancer = balancer;
            balancer.AddServers(Servers);
            var       command = new LoadBalancerCommand(balancer, null, null, null);
            const int count   = 1000;
            var       index   = 0;

            while (index++ < count)
            {
                Assert.True(await command.Submit(server => Task.FromResult(Ping.IsAlive(server))));
            }
        }