Search in sources :

Example 1 with CronetException

use of org.chromium.net.CronetException in project grpc-java by grpc.

the class CronetClientStreamTest method streamFailedAfterResponseHeaderReceived.

@Test
public void streamFailedAfterResponseHeaderReceived() {
    ArgumentCaptor<BidirectionalStream.Callback> callbackCaptor = ArgumentCaptor.forClass(BidirectionalStream.Callback.class);
    verify(factory).newBidirectionalStreamBuilder(isA(String.class), callbackCaptor.capture(), isA(Executor.class));
    BidirectionalStream.Callback callback = callbackCaptor.getValue();
    // Receive response header
    UrlResponseInfo info = new UrlResponseInfoImpl(new ArrayList<>(), 200, "", responseHeader("200"), false, "", "", 0);
    callback.onResponseHeadersReceived(cronetStream, info);
    CronetException exception = mock(CronetException.class);
    callback.onFailed(cronetStream, info, exception);
    verify(transport).finishStream(eq(clientStream), isA(Status.class));
    // finishStream calls transportReportStatus.
    clientStream.transportState().transportReportStatus(Status.UNAVAILABLE, false, new Metadata());
    ArgumentCaptor<Status> statusCaptor = ArgumentCaptor.forClass(Status.class);
    verify(clientListener).closed(statusCaptor.capture(), isA(RpcProgress.class), isA(Metadata.class));
    Status status = statusCaptor.getValue();
    assertEquals(Status.UNAVAILABLE.getCode(), status.getCode());
}
Also used : Status(io.grpc.Status) Metadata(io.grpc.Metadata) UrlResponseInfo(org.chromium.net.UrlResponseInfo) CronetException(org.chromium.net.CronetException) BidirectionalStream(org.chromium.net.BidirectionalStream) ExperimentalBidirectionalStream(org.chromium.net.ExperimentalBidirectionalStream) Executor(java.util.concurrent.Executor) UrlResponseInfoImpl(org.chromium.net.impl.UrlResponseInfoImpl) RpcProgress(io.grpc.internal.ClientStreamListener.RpcProgress) Test(org.junit.Test)

Example 2 with CronetException

use of org.chromium.net.CronetException in project grpc-java by grpc.

the class CronetClientStreamTest method streamFailedAfterTrailerAndEndOfStreamReceived.

@Test
public void streamFailedAfterTrailerAndEndOfStreamReceived() {
    ArgumentCaptor<BidirectionalStream.Callback> callbackCaptor = ArgumentCaptor.forClass(BidirectionalStream.Callback.class);
    verify(factory).newBidirectionalStreamBuilder(isA(String.class), callbackCaptor.capture(), isA(Executor.class));
    BidirectionalStream.Callback callback = callbackCaptor.getValue();
    // Receive response header
    UrlResponseInfo info = new UrlResponseInfoImpl(new ArrayList<>(), 200, "", responseHeader("200"), false, "", "", 0);
    callback.onResponseHeadersReceived(cronetStream, info);
    // Report trailer and endOfStream
    callback.onReadCompleted(cronetStream, null, ByteBuffer.allocate(0), true);
    ((CronetClientStream.BidirectionalStreamCallback) callback).processTrailers(trailers(0));
    CronetException exception = mock(CronetException.class);
    callback.onFailed(cronetStream, info, exception);
    verify(transport).finishStream(eq(clientStream), isA(Status.class));
    // finishStream calls transportReportStatus.
    clientStream.transportState().transportReportStatus(Status.UNAVAILABLE, false, new Metadata());
    ArgumentCaptor<Status> statusCaptor = ArgumentCaptor.forClass(Status.class);
    verify(clientListener).closed(statusCaptor.capture(), isA(RpcProgress.class), isA(Metadata.class));
    Status status = statusCaptor.getValue();
    // Stream has already finished so OK status should be reported.
    assertEquals(Status.OK.getCode(), status.getCode());
}
Also used : Status(io.grpc.Status) Metadata(io.grpc.Metadata) UrlResponseInfo(org.chromium.net.UrlResponseInfo) CronetException(org.chromium.net.CronetException) BidirectionalStream(org.chromium.net.BidirectionalStream) ExperimentalBidirectionalStream(org.chromium.net.ExperimentalBidirectionalStream) Executor(java.util.concurrent.Executor) UrlResponseInfoImpl(org.chromium.net.impl.UrlResponseInfoImpl) RpcProgress(io.grpc.internal.ClientStreamListener.RpcProgress) Test(org.junit.Test)

Example 3 with CronetException

use of org.chromium.net.CronetException in project grpc-java by grpc.

the class CronetClientStreamTest method streamFailedAfterTrailerReceived.

@Test
public void streamFailedAfterTrailerReceived() {
    ArgumentCaptor<BidirectionalStream.Callback> callbackCaptor = ArgumentCaptor.forClass(BidirectionalStream.Callback.class);
    verify(factory).newBidirectionalStreamBuilder(isA(String.class), callbackCaptor.capture(), isA(Executor.class));
    BidirectionalStream.Callback callback = callbackCaptor.getValue();
    // Receive response header
    UrlResponseInfo info = new UrlResponseInfoImpl(new ArrayList<>(), 200, "", responseHeader("200"), false, "", "", 0);
    callback.onResponseHeadersReceived(cronetStream, info);
    // Report trailer but not endOfStream.
    ((CronetClientStream.BidirectionalStreamCallback) callback).processTrailers(trailers(0));
    CronetException exception = mock(CronetException.class);
    callback.onFailed(cronetStream, info, exception);
    verify(transport).finishStream(eq(clientStream), isA(Status.class));
    // finishStream calls transportReportStatus.
    clientStream.transportState().transportReportStatus(Status.UNAVAILABLE, false, new Metadata());
    ArgumentCaptor<Status> statusCaptor = ArgumentCaptor.forClass(Status.class);
    verify(clientListener).closed(statusCaptor.capture(), isA(RpcProgress.class), isA(Metadata.class));
    Status status = statusCaptor.getValue();
    // Stream has already finished so OK status should be reported.
    assertEquals(Status.UNAVAILABLE.getCode(), status.getCode());
}
Also used : Status(io.grpc.Status) Metadata(io.grpc.Metadata) UrlResponseInfo(org.chromium.net.UrlResponseInfo) CronetException(org.chromium.net.CronetException) BidirectionalStream(org.chromium.net.BidirectionalStream) ExperimentalBidirectionalStream(org.chromium.net.ExperimentalBidirectionalStream) Executor(java.util.concurrent.Executor) UrlResponseInfoImpl(org.chromium.net.impl.UrlResponseInfoImpl) RpcProgress(io.grpc.internal.ClientStreamListener.RpcProgress) Test(org.junit.Test)

Example 4 with CronetException

use of org.chromium.net.CronetException in project grpc-java by grpc.

the class CronetClientStreamTest method streamFailed.

@Test
public void streamFailed() {
    ArgumentCaptor<BidirectionalStream.Callback> callbackCaptor = ArgumentCaptor.forClass(BidirectionalStream.Callback.class);
    verify(factory).newBidirectionalStreamBuilder(isA(String.class), callbackCaptor.capture(), isA(Executor.class));
    BidirectionalStream.Callback callback = callbackCaptor.getValue();
    // Nothing happens and stream fails
    CronetException exception = mock(CronetException.class);
    callback.onFailed(cronetStream, null, exception);
    verify(transport).finishStream(eq(clientStream), isA(Status.class));
    // finishStream calls transportReportStatus.
    clientStream.transportState().transportReportStatus(Status.UNAVAILABLE, false, new Metadata());
    ArgumentCaptor<Status> statusCaptor = ArgumentCaptor.forClass(Status.class);
    verify(clientListener).closed(statusCaptor.capture(), isA(RpcProgress.class), isA(Metadata.class));
    Status status = statusCaptor.getValue();
    assertEquals(Status.UNAVAILABLE.getCode(), status.getCode());
}
Also used : Status(io.grpc.Status) Executor(java.util.concurrent.Executor) Metadata(io.grpc.Metadata) RpcProgress(io.grpc.internal.ClientStreamListener.RpcProgress) CronetException(org.chromium.net.CronetException) BidirectionalStream(org.chromium.net.BidirectionalStream) ExperimentalBidirectionalStream(org.chromium.net.ExperimentalBidirectionalStream) Test(org.junit.Test)

Aggregations

Metadata (io.grpc.Metadata)4 Status (io.grpc.Status)4 RpcProgress (io.grpc.internal.ClientStreamListener.RpcProgress)4 Executor (java.util.concurrent.Executor)4 BidirectionalStream (org.chromium.net.BidirectionalStream)4 CronetException (org.chromium.net.CronetException)4 ExperimentalBidirectionalStream (org.chromium.net.ExperimentalBidirectionalStream)4 Test (org.junit.Test)4 UrlResponseInfo (org.chromium.net.UrlResponseInfo)3 UrlResponseInfoImpl (org.chromium.net.impl.UrlResponseInfoImpl)3