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); }
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); } }