private async Task LoadBalancingTask(ClusterConnection connection) { for (int instanceId = 0; instanceId < 2; ++instanceId) { await connection.SendAsync <LoadBalancingInitRequest>(new DeliveryOptions { InstanceId = instanceId }); } const int requestsCount = 100; for (int i = 0; i < requestsCount; ++i) { await connection.SendAsync <LoadBalancingRequest>(); } var requestsHandled = new List <int>(); for (int instanceId = 0; instanceId < 2; ++instanceId) { var response = await connection .SendAsync <LoadBalancingGetStatsRequest, LoadBalancingGetStatsResponse>(new DeliveryOptions { InstanceId = instanceId }); int value = response?.Result ?? 0; Assert.True(value > 0); requestsHandled.Add(value); } Assert.Equal(2, requestsHandled.Count); Assert.Equal(requestsCount, requestsHandled.Sum()); Assert.True((double)Math.Abs(requestsHandled[0] - requestsHandled[1]) / requestsCount < 0.25); }
private async Task SequentialSumTask(ClusterConnection connection) { const int requestCount = 10; int expectedSum = 0; var initResponse = await connection.SendAsync <InitSumRequest, InitSumResponse>(); int instanceId = initResponse?.InstanceId ?? -1; int counterId = initResponse?.CounterId ?? -1; for (int i = 0; i < requestCount; ++i) { expectedSum += i; await connection.SendAsync(new DeliveryOptions { InstanceId = instanceId }, new AddRequest { CounterId = counterId, Value = i }); } var getResponse = await connection.SendAsync <GetSumRequest, GetSumResponse>( new DeliveryOptions { InstanceId = instanceId }, new GetSumRequest { CounterId = counterId } ); Assert.Equal(expectedSum, getResponse?.Result ?? 0); }
private async Task ServiceCommunicationTask(ClusterConnection connection) { const string expectedMessage = "Test message"; var transferResponse = await connection .SendAsync <TransferMessageRequest, TransferMessageResponse>(new TransferMessageRequest { Message = expectedMessage }); var options = new DeliveryOptions { InstanceId = transferResponse?.ServedByInstance ?? -1 }; var getResponse = await connection .SendAsync <GetTransferredMessageRequest, GetTransferredMessageResponse>(options); Assert.Equal(expectedMessage, getResponse?.Message ?? ""); }
private async Task SquaresAsyncTask(ClusterConnection connection) { const int requestCount = 10; for (int i = 0; i < requestCount; ++i) { var response = await connection .SendAsync <SquareRequest, SquareResponse>(new SquareRequest { Value = i }); Assert.Equal(i * i, response?.Result ?? 0); } }
private async Task PublishSubscribeTask(ClusterConnection connection) { const string expectedMessage = "Test message"; await connection.SendAsync <PublishRequest>(new PublishRequest { Message = expectedMessage }); await Task.Delay(TimeSpan.FromMilliseconds(500)); for (int instanceId = 0; instanceId < 2; ++instanceId) { var subscriberOneResponse = await connection.SendAsync <SubscriberOneGetMessageRequest, SubscriberOneGetMessageResponse>(); Assert.Equal(expectedMessage, subscriberOneResponse?.Message ?? ""); var subscriberTwoResponse = await connection.SendAsync <SubscriberTwoGetMessageRequest, SubscriberTwoGetMessageResponse>(); Assert.Equal(expectedMessage, subscriberTwoResponse?.Message ?? ""); } }