public async Task ForCorrectServiceName_UsingBalanceLoadValidateServiceName_ReturnResponse() { var balancerClient = new LoadBalancer.LoadBalancerClient(_channel); var initialRequest = new InitialLoadBalanceRequest() { Name = "test-service-name" }; var request = new LoadBalanceRequest() { InitialRequest = initialRequest }; // Act using var balancingStreaming = balancerClient.BalanceLoad(); await balancingStreaming.RequestStream.WriteAsync(request); await balancingStreaming.RequestStream.CompleteAsync(); var hasFirstElement = await balancingStreaming.ResponseStream.MoveNext(); var hasSecondElement = await balancingStreaming.ResponseStream.MoveNext(); // Assert Assert.True(hasFirstElement); Assert.True(hasSecondElement); }
public async Task ForInitialRequest_UsingBalanceLoadCheckReportInterval_ReturnFiveSeconds() { var balancerClient = new LoadBalancer.LoadBalancerClient(_channel); var initialRequest = new InitialLoadBalanceRequest() { Name = "test-service-name" }; var request = new LoadBalanceRequest() { InitialRequest = initialRequest }; // Act using var balancingStreaming = balancerClient.BalanceLoad(); await balancingStreaming.RequestStream.WriteAsync(request); await balancingStreaming.RequestStream.CompleteAsync(); var hasFirstElement = await balancingStreaming.ResponseStream.MoveNext(); var response = balancingStreaming.ResponseStream.Current; var hasSecondElement = await balancingStreaming.ResponseStream.MoveNext(); // Assert Assert.True(hasFirstElement); Assert.True(hasSecondElement); Assert.Equal(LoadBalanceResponse.LoadBalanceResponseTypeOneofCase.InitialResponse, response.LoadBalanceResponseTypeCase); Assert.NotNull(response.InitialResponse); Assert.Equal(TimeSpan.FromSeconds(5), response.InitialResponse.ClientStatsReportInterval.ToTimeSpan()); }
public async Task ForWrongServiceName_UsingBalanceLoadValidateServiceName_ThrowException() { var balancerClient = new LoadBalancer.LoadBalancerClient(_channel); var initialRequest = new InitialLoadBalanceRequest() { Name = "wrong-service-name" }; var request = new LoadBalanceRequest() { InitialRequest = initialRequest }; // Act // Assert using var balancingStreaming = balancerClient.BalanceLoad(); await balancingStreaming.RequestStream.WriteAsync(request); await balancingStreaming.RequestStream.CompleteAsync(); var exception = await Assert.ThrowsAsync <RpcException>(async() => { var _ = await balancingStreaming.ResponseStream.MoveNext(); }); Assert.Equal(StatusCode.Unknown, exception.StatusCode); }
public async Task ForInitialRequest_UsingBalanceLoad_EnsureResponseMessages() { // Arrange var balancerClient = new LoadBalancer.LoadBalancerClient(_channel); var initialRequest = new InitialLoadBalanceRequest() { Name = "test-service-name" }; var request = new LoadBalanceRequest() { InitialRequest = initialRequest }; // Act using var balancingStreaming = balancerClient.BalanceLoad(); await balancingStreaming.RequestStream.WriteAsync(request); await balancingStreaming.RequestStream.CompleteAsync(); var hasNextElement = await balancingStreaming.ResponseStream.MoveNext(); Assert.True(hasNextElement); var initialResponse = balancingStreaming.ResponseStream.Current; hasNextElement = await balancingStreaming.ResponseStream.MoveNext(); Assert.True(hasNextElement); var secondResponse = balancingStreaming.ResponseStream.Current; // Assert Assert.Equal(LoadBalanceResponseTypeOneofCase.InitialResponse, initialResponse.LoadBalanceResponseTypeCase); Assert.NotNull(initialResponse.InitialResponse); Assert.Equal(TimeSpan.FromSeconds(10), initialResponse.InitialResponse.ClientStatsReportInterval.ToTimeSpan()); Assert.Equal(LoadBalanceResponseTypeOneofCase.ServerList, secondResponse.LoadBalanceResponseTypeCase); Assert.NotNull(secondResponse.ServerList); Assert.Equal(3, secondResponse.ServerList.Servers.Count); Assert.All(secondResponse.ServerList.Servers, server => { Assert.StartsWith("10.1.6.", new IPAddress(server.IpAddress.ToByteArray()).ToString()); Assert.Equal(80, server.Port); Assert.False(string.IsNullOrWhiteSpace(server.LoadBalanceToken)); }); }