From c102dd4e4fef8f63b6bb1eab3e0bbe8a8cbb2efa Mon Sep 17 00:00:00 2001 From: nmittler Date: Wed, 25 May 2016 06:54:31 -0700 Subject: [PATCH] Add trailers to Status for BlockingResponseStream Fixes #1861 --- .../java/io/grpc/stub/ClientCallsTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/stub/src/test/java/io/grpc/stub/ClientCallsTest.java b/stub/src/test/java/io/grpc/stub/ClientCallsTest.java index e1119e8bef..a0b6716320 100644 --- a/stub/src/test/java/io/grpc/stub/ClientCallsTest.java +++ b/stub/src/test/java/io/grpc/stub/ClientCallsTest.java @@ -51,6 +51,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Iterator; import java.util.concurrent.CancellationException; import java.util.concurrent.ExecutionException; @@ -115,4 +116,23 @@ public class ClientCallsTest { // Exepcted } } + + @Test public void blockingResponseStreamFailed() throws Exception { + Integer req = 2; + Iterator iter = ClientCalls.blockingServerStreamingCall(call, req); + ArgumentCaptor> listenerCaptor = ArgumentCaptor.forClass(null); + verify(call).start(listenerCaptor.capture(), any(Metadata.class)); + ClientCall.Listener listener = listenerCaptor.getValue(); + Metadata trailers = new Metadata(); + listener.onClose(Status.INTERNAL, trailers); + try { + iter.next(); + fail("Should fail"); + } catch (Throwable e) { + Status status = Status.fromThrowable(e); + assertEquals(Status.INTERNAL, status); + Metadata metadata = Status.trailersFromThrowable(e); + assertSame(trailers, metadata); + } + } }