Search in sources :

Example 41 with Http2Headers

use of io.netty.handler.codec.http2.Http2Headers in project netty by netty.

the class InboundHttp2ToHttpAdapterTest method clientRequestSingleHeaderCookieSplitIntoMultipleEntries.

@Test
public void clientRequestSingleHeaderCookieSplitIntoMultipleEntries() throws Exception {
    boostrapEnv(1, 1, 1);
    final FullHttpRequest request = new DefaultFullHttpRequest(HttpVersion.HTTP_1_1, HttpMethod.GET, "/some/path/resource2", true);
    try {
        HttpHeaders httpHeaders = request.headers();
        httpHeaders.set(HttpConversionUtil.ExtensionHeaderNames.SCHEME.text(), "https");
        httpHeaders.set(HttpHeaderNames.HOST, "example.org");
        httpHeaders.setInt(HttpConversionUtil.ExtensionHeaderNames.STREAM_ID.text(), 3);
        httpHeaders.setInt(HttpHeaderNames.CONTENT_LENGTH, 0);
        httpHeaders.set(HttpHeaderNames.COOKIE, "a=b; c=d; e=f");
        httpHeaders.setShort(HttpConversionUtil.ExtensionHeaderNames.STREAM_WEIGHT.text(), (short) 16);
        final Http2Headers http2Headers = new DefaultHttp2Headers().method(new AsciiString("GET")).scheme(new AsciiString("https")).authority(new AsciiString("example.org")).path(new AsciiString("/some/path/resource2")).add(HttpHeaderNames.COOKIE, "a=b").add(HttpHeaderNames.COOKIE, "c=d").add(HttpHeaderNames.COOKIE, "e=f");
        runInChannel(clientChannel, new Http2Runnable() {

            @Override
            public void run() throws Http2Exception {
                clientHandler.encoder().writeHeaders(ctxClient(), 3, http2Headers, 0, true, newPromiseClient());
                clientChannel.flush();
            }
        });
        awaitRequests();
        ArgumentCaptor<FullHttpMessage> requestCaptor = ArgumentCaptor.forClass(FullHttpMessage.class);
        verify(serverListener).messageReceived(requestCaptor.capture());
        capturedRequests = requestCaptor.getAllValues();
        assertEquals(request, capturedRequests.get(0));
    } finally {
        request.release();
    }
}
Also used : HttpHeaders(io.netty.handler.codec.http.HttpHeaders) DefaultFullHttpRequest(io.netty.handler.codec.http.DefaultFullHttpRequest) FullHttpRequest(io.netty.handler.codec.http.FullHttpRequest) Http2CodecUtil.getEmbeddedHttp2Exception(io.netty.handler.codec.http2.Http2CodecUtil.getEmbeddedHttp2Exception) DefaultFullHttpRequest(io.netty.handler.codec.http.DefaultFullHttpRequest) Http2Runnable(io.netty.handler.codec.http2.Http2TestUtil.Http2Runnable) FullHttpMessage(io.netty.handler.codec.http.FullHttpMessage) AsciiString(io.netty.util.AsciiString) Test(org.junit.Test)

Example 42 with Http2Headers

use of io.netty.handler.codec.http2.Http2Headers in project netty by netty.

the class Http2FrameWriterBenchmark method createHeaders.

private static Http2Headers createHeaders(int numValues, int nameLength, int valueLength) {
    Http2Headers headers = new DefaultHttp2Headers();
    Random r = new Random();
    for (int i = 0; i < numValues; ++i) {
        byte[] tmp = new byte[nameLength];
        r.nextBytes(tmp);
        AsciiString name = new AsciiString(tmp);
        tmp = new byte[valueLength];
        r.nextBytes(tmp);
        headers.add(name, new AsciiString(tmp));
    }
    return headers;
}
Also used : Random(java.util.Random) Http2Headers(io.netty.handler.codec.http2.Http2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) AsciiString(io.netty.util.AsciiString)

Example 43 with Http2Headers

use of io.netty.handler.codec.http2.Http2Headers in project netty by netty.

the class ReadOnlyHttp2HeadersBenchmark method defaultServerHeaders.

@Benchmark
@BenchmarkMode(Mode.AverageTime)
public int defaultServerHeaders() {
    Http2Headers headers = new DefaultHttp2Headers(false);
    for (int i = 0; i < headerCount; ++i) {
        headers.add(headerNames[i], headerValues[i]);
    }
    headers.status(HttpResponseStatus.OK.codeAsText());
    return iterate(headers);
}
Also used : ReadOnlyHttp2Headers(io.netty.handler.codec.http2.ReadOnlyHttp2Headers) Http2Headers(io.netty.handler.codec.http2.Http2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) BenchmarkMode(org.openjdk.jmh.annotations.BenchmarkMode) Benchmark(org.openjdk.jmh.annotations.Benchmark)

Example 44 with Http2Headers

use of io.netty.handler.codec.http2.Http2Headers in project netty by netty.

the class HelloWorldHttp2Handler method sendResponse.

/**
     * Sends a "Hello World" DATA frame to the client.
     */
private static void sendResponse(ChannelHandlerContext ctx, ByteBuf payload) {
    // Send a frame for the response status
    Http2Headers headers = new DefaultHttp2Headers().status(OK.codeAsText());
    ctx.write(new DefaultHttp2HeadersFrame(headers));
    ctx.writeAndFlush(new DefaultHttp2DataFrame(payload, true));
}
Also used : DefaultHttp2HeadersFrame(io.netty.handler.codec.http2.DefaultHttp2HeadersFrame) DefaultHttp2DataFrame(io.netty.handler.codec.http2.DefaultHttp2DataFrame) Http2Headers(io.netty.handler.codec.http2.Http2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers)

Example 45 with Http2Headers

use of io.netty.handler.codec.http2.Http2Headers in project netty by netty.

the class HelloWorldHttp2Handler method userEventTriggered.

/**
     * Handles the cleartext HTTP upgrade event. If an upgrade occurred, sends a simple response via HTTP/2
     * on stream 1 (the stream specifically reserved for cleartext HTTP upgrade).
     */
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
    if (evt instanceof HttpServerUpgradeHandler.UpgradeEvent) {
        // Write an HTTP/2 response to the upgrade request
        Http2Headers headers = new DefaultHttp2Headers().status(OK.codeAsText()).set(new AsciiString(UPGRADE_RESPONSE_HEADER), new AsciiString("true"));
        encoder().writeHeaders(ctx, 1, headers, 0, true, ctx.newPromise());
    }
    super.userEventTriggered(ctx, evt);
}
Also used : Http2Headers(io.netty.handler.codec.http2.Http2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) AsciiString(io.netty.util.AsciiString)

Aggregations

Test (org.junit.Test)68 Http2Headers (io.netty.handler.codec.http2.Http2Headers)57 ByteBuf (io.netty.buffer.ByteBuf)51 DefaultHttp2Headers (io.netty.handler.codec.http2.DefaultHttp2Headers)47 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)39 ChannelFuture (io.netty.channel.ChannelFuture)33 AsciiString (io.netty.util.AsciiString)33 Http2Runnable (io.netty.handler.codec.http2.Http2TestUtil.Http2Runnable)29 Http2Exception (io.netty.handler.codec.http2.Http2Exception)27 Http2ConnectionEncoder (io.netty.handler.codec.http2.Http2ConnectionEncoder)25 Http2EventAdapter (io.netty.handler.codec.http2.Http2EventAdapter)23 Http2Stream (io.netty.handler.codec.http2.Http2Stream)23 HttpClientRequest (io.vertx.core.http.HttpClientRequest)23 HttpConnection (io.vertx.core.http.HttpConnection)23 HttpMethod (io.vertx.core.http.HttpMethod)23 Channel (io.netty.channel.Channel)22 ChannelInitializer (io.netty.channel.ChannelInitializer)22 ChannelPipeline (io.netty.channel.ChannelPipeline)22 EventLoopGroup (io.netty.channel.EventLoopGroup)22 NioEventLoopGroup (io.netty.channel.nio.NioEventLoopGroup)22