Exemplo n.º 1
0
        public async Task Endpoint_ZeroEndpoints_ReturnsNull()
        {
            var subscriber = Substitute.For <IServiceSubscriber>();

            subscriber.Endpoints().Returns(Task.FromResult(new List <Endpoint>()));
            var lb = new RandomLoadBalancer(subscriber);

            var actual = await lb.Endpoint();

            Assert.Null(actual);
        }
Exemplo n.º 2
0
        public async Task Endpoint_MultipleEndpoints_ReturnsEndpointInRandomOrder()
        {
            var expectedList = new List <Endpoint>
            {
                new Endpoint {
                    Host = Guid.NewGuid().ToString(), Port = 1
                },
                new Endpoint {
                    Host = Guid.NewGuid().ToString(), Port = 2
                },
                new Endpoint {
                    Host = Guid.NewGuid().ToString(), Port = 3
                }
            };

            var subscriber = Substitute.For <IServiceSubscriber>();

            subscriber.Endpoints().Returns(Task.FromResult(expectedList));
            var lb = new RandomLoadBalancer(subscriber, 0);


            var actual = new List <Endpoint>();

            for (var i = 0; i < 10; i++)
            {
                actual.Add(await lb.Endpoint());
            }

            var expectedOrder = new List <int> {
                2, 2, 2, 1, 0, 1, 2, 1, 2, 0
            };

            for (var i = 0; i < actual.Count; i++)
            {
                Assert.Equal(expectedList[expectedOrder[i]].Host, actual[i].Host);
                Assert.Equal(expectedList[expectedOrder[i]].Port, actual[i].Port);
            }
        }