Merge pull request #2910 from jtattermusch/timeout_on_sleeping_server

implement timeout_on_sleeping_server interop test
pull/2925/head
Michael Lumish 9 years ago
commit d2b2ca8713
  1. 26
      src/csharp/Grpc.IntegrationTesting/InteropClient.cs
  2. 6
      src/csharp/Grpc.IntegrationTesting/InteropClientServerTest.cs

@ -169,6 +169,9 @@ namespace Grpc.IntegrationTesting
case "cancel_after_first_response": case "cancel_after_first_response":
await RunCancelAfterFirstResponseAsync(client); await RunCancelAfterFirstResponseAsync(client);
break; break;
case "timeout_on_sleeping_server":
await RunTimeoutOnSleepingServerAsync(client);
break;
case "benchmark_empty_unary": case "benchmark_empty_unary":
RunBenchmarkEmptyUnary(client); RunBenchmarkEmptyUnary(client);
break; break;
@ -458,6 +461,29 @@ namespace Grpc.IntegrationTesting
Console.WriteLine("Passed!"); Console.WriteLine("Passed!");
} }
public static async Task RunTimeoutOnSleepingServerAsync(TestService.ITestServiceClient client)
{
Console.WriteLine("running timeout_on_sleeping_server");
var deadline = DateTime.UtcNow.AddMilliseconds(1);
using (var call = client.FullDuplexCall(deadline: deadline))
{
try
{
await call.RequestStream.WriteAsync(StreamingOutputCallRequest.CreateBuilder()
.SetPayload(CreateZerosPayload(27182)).Build());
}
catch (InvalidOperationException)
{
// Deadline was reached before write has started. Eat the exception and continue.
}
var ex = Assert.Throws<RpcException>(async () => await call.ResponseStream.MoveNext());
Assert.AreEqual(StatusCode.DeadlineExceeded, ex.Status.StatusCode);
}
Console.WriteLine("Passed!");
}
// This is not an official interop test, but it's useful. // This is not an official interop test, but it's useful.
public static void RunBenchmarkEmptyUnary(TestService.ITestServiceClient client) public static void RunBenchmarkEmptyUnary(TestService.ITestServiceClient client)
{ {

@ -127,5 +127,11 @@ namespace Grpc.IntegrationTesting
{ {
await InteropClient.RunCancelAfterFirstResponseAsync(client); await InteropClient.RunCancelAfterFirstResponseAsync(client);
} }
[Test]
public async Task TimeoutOnSleepingServerAsync()
{
await InteropClient.RunTimeoutOnSleepingServerAsync(client);
}
} }
} }

Loading…
Cancel
Save