public async Task ServerMethodReturnsNull_FailureResponse() { // Arrange var method = Fixture.DynamicGrpc.AddClientStreamingMethod <Empty, CounterReply>((requestStream, context) => Task.FromResult <CounterReply>(null !)); SetExpectedErrorsFilter(writeContext => { return(writeContext.LoggerName == TestConstants.ServerCallHandlerTestName && writeContext.EventId.Name == "RpcConnectionError" && writeContext.State.ToString() == "Error status code 'Cancelled' raised." && GetRpcExceptionDetail(writeContext.Exception) == "No message returned from method."); }); var requestMessage = new CounterRequest { Count = 1 }; var ms = new MemoryStream(); MessageHelpers.WriteMessage(ms, requestMessage); // Act var response = await Fixture.Client.PostAsync( method.FullName, new GrpcStreamContent(ms)).DefaultTimeout(); // Assert response.AssertIsSuccessfulGrpcRequest(); response.AssertTrailerStatus(StatusCode.Cancelled, "No message returned from method."); }
public async Task ServerMethodReturnsNull_FailureResponse() { // Arrange var url = Fixture.DynamicGrpc.AddClientStreamingMethod <ClientStreamingMethodTests, Empty, CounterReply>((requestStream, context) => Task.FromResult <CounterReply>(null)); SetExpectedErrorsFilter(writeContext => { return(writeContext.LoggerName == typeof(ClientStreamingMethodTests).FullName && writeContext.EventId.Name == "RpcConnectionError" && writeContext.State.ToString() == "Error status code 'Cancelled' raised." && GetRpcExceptionDetail(writeContext.Exception) == "No message returned from method."); }); var requestMessage = new CounterRequest { Count = 1 }; var ms = new MemoryStream(); MessageHelpers.WriteMessage(ms, requestMessage); // Act var response = await Fixture.Client.PostAsync( url, new GrpcStreamContent(ms)).DefaultTimeout(); // Assert response.AssertIsSuccessfulGrpcRequest(); Assert.AreEqual(StatusCode.Cancelled.ToTrailerString(), Fixture.TrailersContainer.Trailers[GrpcProtocolConstants.StatusTrailer].Single()); Assert.AreEqual("No message returned from method.", Fixture.TrailersContainer.Trailers[GrpcProtocolConstants.MessageTrailer].Single()); }
public async Task ServerMethodReturnsNull_FailureResponse() { // Arrange var method = Fixture.DynamicGrpc.AddClientStreamingMethod <Empty, CounterReply>((requestStream, context) => Task.FromResult <CounterReply>(null !)); var requestMessage = new CounterRequest { Count = 1 }; var ms = new MemoryStream(); MessageHelpers.WriteMessage(ms, requestMessage); // Act var response = await Fixture.Client.PostAsync( method.FullName, new GrpcStreamContent(ms)).DefaultTimeout(); // Assert response.AssertIsSuccessfulGrpcRequest(); response.AssertTrailerStatus(StatusCode.Cancelled, "No message returned from method."); AssertHasLogRpcConnectionError(StatusCode.Cancelled, "No message returned from method."); }
public async Task ServerMethodReturnsNull_FailureResponse() { // Arrange SetExpectedErrorsFilter(writeContext => { return(writeContext.LoggerName == typeof(CounterService).FullName && writeContext.EventId.Name == "RpcConnectionError" && writeContext.State.ToString() == "Error status code 'Cancelled' raised." && GetRpcExceptionDetail(writeContext.Exception) == "No message returned from method."); }); var requestMessage = new CounterRequest { Count = 1 }; var ms = new MemoryStream(); MessageHelpers.WriteMessage(ms, requestMessage); // Act var response = await Fixture.Client.PostAsync( "Count.Counter/IncrementCountReturnNull", new GrpcStreamContent(ms)).DefaultTimeout(); // Assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.AreEqual(StatusCode.Cancelled.ToTrailerString(), Fixture.TrailersContainer.Trailers[GrpcProtocolConstants.StatusTrailer].Single()); Assert.AreEqual("No message returned from method.", Fixture.TrailersContainer.Trailers[GrpcProtocolConstants.MessageTrailer].Single()); }
public override async Task counterUntil(CounterRequest request, IServerStreamWriter <CounterResponse> responseStream, ServerCallContext context) { Console.WriteLine($"Server received the request : {request.ToString()}"); for (int index = 1; index <= request.Number; index++) { await responseStream.WriteAsync(new CounterResponse { Result = index }); } }
public override async Task StartCounter(CounterRequest request, IServerStreamWriter <CounterResponse> responseStream, ServerCallContext context) { var count = request.Start; while (!context.CancellationToken.IsCancellationRequested) { await responseStream.WriteAsync(new CounterResponse { Count = ++count }); await Task.Delay(TimeSpan.FromSeconds(1)); } }
public override async Task GetCount(CounterRequest request, IServerStreamWriter <CounterReply> responseStream, ServerCallContext context) { int value = request.InitialValue; while ((request.MaximumValue == 0 || value <= request.MaximumValue) & !context.CancellationToken.IsCancellationRequested) { await responseStream.WriteAsync(new() { CurrentValue = value }); await Task.Delay(request.DelayDuration.ToTimeSpan()); value++; } }
public async Task ServerMethodReturnsNull_FailureResponse() { // Arrange var requestMessage = new CounterRequest { Count = 1 }; var ms = new MemoryStream(); MessageHelpers.WriteMessage(ms, requestMessage); // Act var response = await Fixture.Client.PostAsync( "Count.Counter/IncrementCountReturnNull", new StreamContent(ms)).DefaultTimeout(); // Assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.AreEqual(StatusCode.Cancelled.ToTrailerString(), Fixture.TrailersContainer.Trailers[GrpcProtocolConstants.StatusTrailer].Single()); Assert.AreEqual("Cancelled", Fixture.TrailersContainer.Trailers[GrpcProtocolConstants.MessageTrailer].Single()); }