|
|
|
@ -169,6 +169,9 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
case "cancel_after_first_response": |
|
|
|
|
await RunCancelAfterFirstResponseAsync(client); |
|
|
|
|
break; |
|
|
|
|
case "timeout_on_sleeping_server": |
|
|
|
|
await RunTimeoutOnSleepingServerAsync(client); |
|
|
|
|
break; |
|
|
|
|
case "benchmark_empty_unary": |
|
|
|
|
RunBenchmarkEmptyUnary(client); |
|
|
|
|
break; |
|
|
|
@ -458,6 +461,29 @@ namespace Grpc.IntegrationTesting |
|
|
|
|
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. |
|
|
|
|
public static void RunBenchmarkEmptyUnary(TestService.ITestServiceClient client) |
|
|
|
|
{ |
|
|
|
|