public void Balancer_Multithread()
        {
            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(new[] {
                new KeyValuePair <string, string>("Servers:0", "localhost:9000")
            })
                                .Build();

            var balancer = new Balancer(configuration);

            var pool = new List <Thread>();

            for (var i = 0; i < 150; i++)
            {
                var thread = new Thread(() =>
                {
                    Thread.Sleep(new Random().Next(0, 50));
                    var url = balancer.AllocateServer();
                });
                thread.Start();
                pool.Add(thread);
            }
            SpinWait.SpinUntil(() => pool.All(x => !x.IsAlive));

            Assert.Equal(150, balancer.GetConnectionsCount("localhost:9000"));
        }
        public void Balancer_AllocateServer()
        {
            var configuration = new ConfigurationBuilder()
                                .AddInMemoryCollection(new[] {
                new KeyValuePair <string, string>("Servers:0", "localhost:9000")
            })
                                .Build();

            var balancer = new Balancer(configuration);

            var url = balancer.AllocateServer();

            Assert.Equal(1, balancer.GetConnectionsCount(url));
        }