Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
mgravell committed May 20, 2020
1 parent 0b16c10 commit f0a874f
Showing 1 changed file with 36 additions and 6 deletions.
42 changes: 36 additions & 6 deletions tests/protobuf-net.Grpc.Test.Integration/StreamTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,18 @@ async ValueTask<Foo> IStreamAPI.UnaryAsync(Foo value, CallContext ctx)
return value;
}

Foo IStreamAPI.UnaryBlocking(Foo value, CallContext ctx) => ((IStreamAPI)this).UnaryAsync(value, ctx).Result; // sync-over-async for this test only
Foo IStreamAPI.UnaryBlocking(Foo value, CallContext ctx)
{
try
{
return ((IStreamAPI)this).UnaryAsync(value, ctx).Result; // sync-over-async for this test only
}
catch (RpcException ex)
{
Log($"RpcException: {ex.StatusCode}, '{ex.Message}', {ex.Trailers?.Count ?? 0} trailers");
throw;
}
}

async ValueTask<Foo> IStreamAPI.ClientStreaming(IAsyncEnumerable<Foo> values, CallContext ctx)
{
Expand Down Expand Up @@ -289,6 +300,7 @@ public DisposableChannel(Channel channel)
#if NETCOREAPP3_1
public class ManagedStreamTests : StreamTests
{
public override bool IsManagedClient => true;
public ManagedStreamTests(StreamTestsFixture fixture, ITestOutputHelper log) : base(10044, fixture, log) { }
protected override IAsyncDisposable CreateClient(out IStreamAPI client)
{
Expand Down Expand Up @@ -322,6 +334,8 @@ public StreamTests(int port, StreamTestsFixture fixture, ITestOutputHelper log)
GrpcClientFactory.AllowUnencryptedHttp2 = true;
}

public virtual bool IsManagedClient => false;

public void Dispose() => _fixture?.SetOutput(null);

protected abstract IAsyncDisposable CreateClient(out IStreamAPI client);
Expand Down Expand Up @@ -584,8 +598,16 @@ void CheckStatus(Status status)
Assert.Equal("before trailers detail", status.Detail);
break;
case Scenario.FaultSuccessGoodProducer:
Assert.Equal(StatusCode.OK, status.StatusCode);
Assert.Equal("", status.Detail);
if (IsManagedClient)
{
Assert.Equal(StatusCode.OK, status.StatusCode);
Assert.Equal("", status.Detail);
}
else
{ // see https://github.com/grpc/grpc-dotnet/issues/915
Assert.Equal(StatusCode.Internal, status.StatusCode);
Assert.Equal("Failed to deserialize response message.", status.Detail);
}
break;
default:
throw new NotImplementedException();
Expand Down Expand Up @@ -684,8 +706,16 @@ void CheckStatus(Status status)
Assert.Equal("before trailers detail", status.Detail);
break;
case Scenario.FaultSuccessGoodProducer:
Assert.Equal(StatusCode.OK, status.StatusCode);
Assert.Equal("", status.Detail);
if (IsManagedClient)
{
Assert.Equal(StatusCode.OK, status.StatusCode);
Assert.Equal("", status.Detail);
}
else
{ // see https://github.com/grpc/grpc-dotnet/issues/916
Assert.Equal(StatusCode.Internal, status.StatusCode);
Assert.Equal("Failed to deserialize response message.", status.Detail);
}
break;
default:
throw new NotImplementedException();
Expand Down Expand Up @@ -785,7 +815,7 @@ public async Task ServerStreaming(bool fault)
Assert.Equal("oops", ex.Status.Detail);
Assert.Equal(StatusCode.Internal, ex.Status.StatusCode);
Assert.Equal(10, ctx.ResponseHeaders().GetInt32("req"));

// managed client doesn't seem to get fault trailers on server-streaming
var expect = Enumerable.Range(0, 5).Sum();
Assert.Equal(expect, ctx.ResponseTrailers().GetInt32("sum"));
Expand Down

0 comments on commit f0a874f

Please sign in to comment.