Search in sources :

Example 86 with Metadata

use of io.grpc.Metadata in project grpc-java by grpc.

the class NettyClientTransportTest method maxHeaderListSizeShouldBeEnforcedOnServer.

@Test
public void maxHeaderListSizeShouldBeEnforcedOnServer() throws Exception {
    startServer(100, 1);
    NettyClientTransport transport = newTransport(newNegotiator());
    callMeMaybe(transport.start(clientTransportListener));
    try {
        // Send a single RPC and wait for the response.
        new Rpc(transport, new Metadata()).halfClose().waitForResponse();
        fail("The stream should have been failed due to server received header exceeds header list" + " size limit!");
    } catch (Exception e) {
        Status status = Status.fromThrowable(e);
        assertEquals(status.toString(), Status.Code.INTERNAL, status.getCode());
    }
}
Also used : Status(io.grpc.Status) Metadata(io.grpc.Metadata) TimeoutException(java.util.concurrent.TimeoutException) StatusException(io.grpc.StatusException) IOException(java.io.IOException) ExecutionException(java.util.concurrent.ExecutionException) Test(org.junit.Test)

Example 87 with Metadata

use of io.grpc.Metadata in project grpc-java by grpc.

the class OkHttpClientTransport method shutdownNow.

@Override
public void shutdownNow(Status reason) {
    shutdown();
    synchronized (lock) {
        Iterator<Map.Entry<Integer, OkHttpClientStream>> it = streams.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<Integer, OkHttpClientStream> entry = it.next();
            it.remove();
            entry.getValue().transportReportStatus(reason, false, new Metadata());
        }
        for (OkHttpClientStream stream : pendingStreams) {
            stream.transportReportStatus(reason, true, new Metadata());
        }
        pendingStreams.clear();
        maybeClearInUse();
        stopIfNecessary();
    }
}
Also used : Metadata(io.grpc.Metadata) Map(java.util.Map) EnumMap(java.util.EnumMap) HashMap(java.util.HashMap)

Example 88 with Metadata

use of io.grpc.Metadata in project grpc-java by grpc.

the class OkHttpClientTransport method startGoAway.

private void startGoAway(int lastKnownStreamId, ErrorCode errorCode, Status status) {
    synchronized (lock) {
        if (goAwayStatus == null) {
            goAwayStatus = status;
            listener.transportShutdown(status);
        }
        if (errorCode != null && !goAwaySent) {
            // Send GOAWAY with lastGoodStreamId of 0, since we don't expect any server-initiated
            // streams. The GOAWAY is part of graceful shutdown.
            goAwaySent = true;
            frameWriter.goAway(0, errorCode, new byte[0]);
        }
        Iterator<Map.Entry<Integer, OkHttpClientStream>> it = streams.entrySet().iterator();
        while (it.hasNext()) {
            Map.Entry<Integer, OkHttpClientStream> entry = it.next();
            if (entry.getKey() > lastKnownStreamId) {
                it.remove();
                entry.getValue().transportReportStatus(status, false, new Metadata());
            }
        }
        for (OkHttpClientStream stream : pendingStreams) {
            stream.transportReportStatus(status, true, new Metadata());
        }
        pendingStreams.clear();
        maybeClearInUse();
        stopIfNecessary();
    }
}
Also used : Metadata(io.grpc.Metadata) Map(java.util.Map) EnumMap(java.util.EnumMap) HashMap(java.util.HashMap)

Example 89 with Metadata

use of io.grpc.Metadata in project grpc-java by grpc.

the class NettyServerStreamTest method writeHeadersShouldSendHeaders.

@Test
public void writeHeadersShouldSendHeaders() throws Exception {
    Metadata headers = new Metadata();
    ListMultimap<CharSequence, CharSequence> expectedHeaders = ImmutableListMultimap.copyOf(Utils.convertServerHeaders(headers));
    stream().writeHeaders(headers);
    ArgumentCaptor<SendResponseHeadersCommand> sendHeadersCap = ArgumentCaptor.forClass(SendResponseHeadersCommand.class);
    verify(writeQueue).enqueue(sendHeadersCap.capture(), eq(true));
    SendResponseHeadersCommand sendHeaders = sendHeadersCap.getValue();
    assertThat(sendHeaders.stream()).isSameAs(stream.transportState());
    assertThat(ImmutableListMultimap.copyOf(sendHeaders.headers())).containsExactlyEntriesIn(expectedHeaders);
    assertThat(sendHeaders.endOfStream()).isFalse();
}
Also used : Metadata(io.grpc.Metadata) Test(org.junit.Test)

Example 90 with Metadata

use of io.grpc.Metadata in project grpc-java by grpc.

the class NettyServerStreamTest method emptyFramerShouldSendNoPayload.

@Test
public void emptyFramerShouldSendNoPayload() {
    ListMultimap<CharSequence, CharSequence> expectedHeaders = ImmutableListMultimap.copyOf(new DefaultHttp2Headers().status(new AsciiString("200")).set(new AsciiString("content-type"), new AsciiString("application/grpc")).set(new AsciiString("grpc-status"), new AsciiString("0")));
    ArgumentCaptor<SendResponseHeadersCommand> cmdCap = ArgumentCaptor.forClass(SendResponseHeadersCommand.class);
    stream().close(Status.OK, new Metadata());
    verify(writeQueue).enqueue(cmdCap.capture(), eq(true));
    SendResponseHeadersCommand cmd = cmdCap.getValue();
    assertThat(cmd.stream()).isSameAs(stream.transportState());
    assertThat(ImmutableListMultimap.copyOf(cmd.headers())).containsExactlyEntriesIn(expectedHeaders);
    assertThat(cmd.endOfStream()).isTrue();
}
Also used : DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) AsciiString(io.netty.util.AsciiString) Metadata(io.grpc.Metadata) Test(org.junit.Test)

Aggregations

Metadata (io.grpc.Metadata)283 Test (org.junit.Test)229 Status (io.grpc.Status)78 ByteArrayInputStream (java.io.ByteArrayInputStream)25 ClientStream (io.grpc.internal.ClientStream)20 InputStream (java.io.InputStream)19 Buffer (okio.Buffer)16 ClientCall (io.grpc.ClientCall)14 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)14 ServerStreamListener (io.grpc.internal.ServerStreamListener)13 AtomicReference (java.util.concurrent.atomic.AtomicReference)13 ServerCall (io.grpc.ServerCall)12 StatsContext (com.google.instrumentation.stats.StatsContext)11 CallOptions (io.grpc.CallOptions)11 IOException (java.io.IOException)11 Context (io.grpc.Context)10 StatusRuntimeException (io.grpc.StatusRuntimeException)10 Matchers.anyString (org.mockito.Matchers.anyString)10 ServerStream (io.grpc.internal.ServerStream)9 ServiceDescriptor (io.grpc.ServiceDescriptor)8