Search in sources :

Example 1 with Http2SettingsFrame

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

the class Http2MultiplexTest method setUp.

@BeforeEach
public void setUp() {
    childChannelInitializer = new TestChannelInitializer();
    parentChannel = new EmbeddedChannel();
    frameInboundWriter = new Http2FrameInboundWriter(parentChannel);
    parentChannel.connect(new InetSocketAddress(0));
    frameWriter = Http2TestUtil.mockedFrameWriter();
    codec = newCodec(childChannelInitializer, frameWriter);
    parentChannel.pipeline().addLast(codec);
    ChannelHandler multiplexer = newMultiplexer(childChannelInitializer);
    if (multiplexer != null) {
        parentChannel.pipeline().addLast(multiplexer);
    }
    parentChannel.runPendingTasks();
    parentChannel.pipeline().fireChannelActive();
    parentChannel.writeInbound(Http2CodecUtil.connectionPrefaceBuf());
    Http2Settings settings = new Http2Settings().initialWindowSize(initialRemoteStreamWindow);
    frameInboundWriter.writeInboundSettings(settings);
    verify(frameWriter).writeSettingsAck(eqCodecCtx(), anyChannelPromise());
    frameInboundWriter.writeInboundSettingsAck();
    Http2SettingsFrame settingsFrame = parentChannel.readInbound();
    assertNotNull(settingsFrame);
    Http2SettingsAckFrame settingsAckFrame = parentChannel.readInbound();
    assertNotNull(settingsAckFrame);
    // Handshake
    verify(frameWriter).writeSettings(eqCodecCtx(), anyHttp2Settings(), anyChannelPromise());
}
Also used : InetSocketAddress(java.net.InetSocketAddress) EmbeddedChannel(io.netty.channel.embedded.EmbeddedChannel) ChannelHandler(io.netty.channel.ChannelHandler) Http2TestUtil.anyHttp2Settings(io.netty.handler.codec.http2.Http2TestUtil.anyHttp2Settings) BeforeEach(org.junit.jupiter.api.BeforeEach)

Example 2 with Http2SettingsFrame

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

the class Http2FrameCodecTest method receiveSettings.

@Test
public void receiveSettings() throws Http2Exception {
    Http2Settings settings = new Http2Settings().maxConcurrentStreams(1);
    frameInboundWriter.writeInboundSettings(settings);
    Http2SettingsFrame settingsFrame = inboundHandler.readInbound();
    assertNotNull(settingsFrame);
    assertEquals(settings, settingsFrame.settings());
}
Also used : Http2TestUtil.anyHttp2Settings(io.netty.handler.codec.http2.Http2TestUtil.anyHttp2Settings) Test(org.junit.jupiter.api.Test)

Example 3 with Http2SettingsFrame

use of io.netty.handler.codec.http2.Http2SettingsFrame in project aws-sdk-java-v2 by aws.

the class WindowSizeTest method execute_noExplicitValueSet_sendsDefaultValueInSettings.

@Test
public void execute_noExplicitValueSet_sendsDefaultValueInSettings() throws InterruptedException {
    ConcurrentLinkedQueue<Http2Frame> receivedFrames = new ConcurrentLinkedQueue<>();
    server = new TestH2Server(() -> new StreamHandler(receivedFrames));
    server.init();
    netty = NettyNioAsyncHttpClient.builder().protocol(Protocol.HTTP2).build();
    AsyncExecuteRequest req = AsyncExecuteRequest.builder().requestContentPublisher(new EmptyPublisher()).request(SdkHttpFullRequest.builder().method(SdkHttpMethod.GET).protocol("http").host("localhost").port(server.port()).build()).responseHandler(new SdkAsyncHttpResponseHandler() {

        @Override
        public void onHeaders(SdkHttpResponse headers) {
        }

        @Override
        public void onStream(Publisher<ByteBuffer> stream) {
        }

        @Override
        public void onError(Throwable error) {
        }
    }).build();
    netty.execute(req).join();
    List<Http2Settings> receivedSettings = receivedFrames.stream().filter(f -> f instanceof Http2SettingsFrame).map(f -> (Http2SettingsFrame) f).map(Http2SettingsFrame::settings).collect(Collectors.toList());
    assertThat(receivedSettings.size()).isGreaterThan(0);
    for (Http2Settings s : receivedSettings) {
        assertThat(s.initialWindowSize()).isEqualTo(DEFAULT_INIT_WINDOW_SIZE);
    }
}
Also used : ChannelOption(io.netty.channel.ChannelOption) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ChannelInboundHandlerAdapter(io.netty.channel.ChannelInboundHandlerAdapter) Protocol(software.amazon.awssdk.http.Protocol) Http2FrameCodecBuilder(io.netty.handler.codec.http2.Http2FrameCodecBuilder) Supplier(java.util.function.Supplier) ByteBuffer(java.nio.ByteBuffer) Http2Frame(io.netty.handler.codec.http2.Http2Frame) ServerSocketChannel(io.netty.channel.socket.ServerSocketChannel) NettyNioAsyncHttpClient(software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) After(org.junit.After) Http2DataFrame(io.netty.handler.codec.http2.Http2DataFrame) SdkHttpMethod(software.amazon.awssdk.http.SdkHttpMethod) SdkHttpFullRequest(software.amazon.awssdk.http.SdkHttpFullRequest) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) SdkAsyncHttpClient(software.amazon.awssdk.http.async.SdkAsyncHttpClient) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) SocketChannel(io.netty.channel.socket.SocketChannel) ExpectedException(org.junit.rules.ExpectedException) Http2Configuration(software.amazon.awssdk.http.nio.netty.Http2Configuration) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) ChannelInitializer(io.netty.channel.ChannelInitializer) Publisher(org.reactivestreams.Publisher) DefaultHttp2HeadersFrame(io.netty.handler.codec.http2.DefaultHttp2HeadersFrame) NioServerSocketChannel(io.netty.channel.socket.nio.NioServerSocketChannel) Http2FrameCodec(io.netty.handler.codec.http2.Http2FrameCodec) Test(org.junit.Test) Collectors(java.util.stream.Collectors) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) Http2HeadersFrame(io.netty.handler.codec.http2.Http2HeadersFrame) AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) Http2Settings(io.netty.handler.codec.http2.Http2Settings) List(java.util.List) Rule(org.junit.Rule) ReferenceCountUtil(io.netty.util.ReferenceCountUtil) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) ChannelHandler(io.netty.channel.ChannelHandler) Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) Queue(java.util.Queue) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Publisher(org.reactivestreams.Publisher) Http2Frame(io.netty.handler.codec.http2.Http2Frame) AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Http2Settings(io.netty.handler.codec.http2.Http2Settings) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Test(org.junit.Test)

Example 4 with Http2SettingsFrame

use of io.netty.handler.codec.http2.Http2SettingsFrame in project aws-sdk-java-v2 by aws.

the class WindowSizeTest method expectCorrectWindowSizeValueTest.

private void expectCorrectWindowSizeValueTest(Integer builderSetterValue, int settingsFrameValue) throws InterruptedException {
    ConcurrentLinkedQueue<Http2Frame> receivedFrames = new ConcurrentLinkedQueue<>();
    server = new TestH2Server(() -> new StreamHandler(receivedFrames));
    server.init();
    netty = NettyNioAsyncHttpClient.builder().protocol(Protocol.HTTP2).http2Configuration(Http2Configuration.builder().initialWindowSize(builderSetterValue).build()).build();
    AsyncExecuteRequest req = AsyncExecuteRequest.builder().requestContentPublisher(new EmptyPublisher()).request(SdkHttpFullRequest.builder().method(SdkHttpMethod.GET).protocol("http").host("localhost").port(server.port()).build()).responseHandler(new SdkAsyncHttpResponseHandler() {

        @Override
        public void onHeaders(SdkHttpResponse headers) {
        }

        @Override
        public void onStream(Publisher<ByteBuffer> stream) {
        }

        @Override
        public void onError(Throwable error) {
        }
    }).build();
    netty.execute(req).join();
    List<Http2Settings> receivedSettings = receivedFrames.stream().filter(f -> f instanceof Http2SettingsFrame).map(f -> (Http2SettingsFrame) f).map(Http2SettingsFrame::settings).collect(Collectors.toList());
    assertThat(receivedSettings.size()).isGreaterThan(0);
    for (Http2Settings s : receivedSettings) {
        assertThat(s.initialWindowSize()).isEqualTo(settingsFrameValue);
    }
}
Also used : ChannelOption(io.netty.channel.ChannelOption) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ChannelInboundHandlerAdapter(io.netty.channel.ChannelInboundHandlerAdapter) Protocol(software.amazon.awssdk.http.Protocol) Http2FrameCodecBuilder(io.netty.handler.codec.http2.Http2FrameCodecBuilder) Supplier(java.util.function.Supplier) ByteBuffer(java.nio.ByteBuffer) Http2Frame(io.netty.handler.codec.http2.Http2Frame) ServerSocketChannel(io.netty.channel.socket.ServerSocketChannel) NettyNioAsyncHttpClient(software.amazon.awssdk.http.nio.netty.NettyNioAsyncHttpClient) ChannelHandlerContext(io.netty.channel.ChannelHandlerContext) After(org.junit.After) Http2DataFrame(io.netty.handler.codec.http2.Http2DataFrame) SdkHttpMethod(software.amazon.awssdk.http.SdkHttpMethod) SdkHttpFullRequest(software.amazon.awssdk.http.SdkHttpFullRequest) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) SdkAsyncHttpClient(software.amazon.awssdk.http.async.SdkAsyncHttpClient) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) SocketChannel(io.netty.channel.socket.SocketChannel) ExpectedException(org.junit.rules.ExpectedException) Http2Configuration(software.amazon.awssdk.http.nio.netty.Http2Configuration) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) ChannelInitializer(io.netty.channel.ChannelInitializer) Publisher(org.reactivestreams.Publisher) DefaultHttp2HeadersFrame(io.netty.handler.codec.http2.DefaultHttp2HeadersFrame) NioServerSocketChannel(io.netty.channel.socket.nio.NioServerSocketChannel) Http2FrameCodec(io.netty.handler.codec.http2.Http2FrameCodec) Test(org.junit.Test) Collectors(java.util.stream.Collectors) NioEventLoopGroup(io.netty.channel.nio.NioEventLoopGroup) Http2HeadersFrame(io.netty.handler.codec.http2.Http2HeadersFrame) AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) Http2Settings(io.netty.handler.codec.http2.Http2Settings) List(java.util.List) Rule(org.junit.Rule) ReferenceCountUtil(io.netty.util.ReferenceCountUtil) ServerBootstrap(io.netty.bootstrap.ServerBootstrap) ChannelHandler(io.netty.channel.ChannelHandler) Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) Queue(java.util.Queue) DefaultHttp2Headers(io.netty.handler.codec.http2.DefaultHttp2Headers) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue) Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) SdkHttpResponse(software.amazon.awssdk.http.SdkHttpResponse) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Publisher(org.reactivestreams.Publisher) Http2Frame(io.netty.handler.codec.http2.Http2Frame) AsyncExecuteRequest(software.amazon.awssdk.http.async.AsyncExecuteRequest) SdkAsyncHttpResponseHandler(software.amazon.awssdk.http.async.SdkAsyncHttpResponseHandler) EmptyPublisher(software.amazon.awssdk.http.EmptyPublisher) Http2Settings(io.netty.handler.codec.http2.Http2Settings) ConcurrentLinkedQueue(java.util.concurrent.ConcurrentLinkedQueue)

Example 5 with Http2SettingsFrame

use of io.netty.handler.codec.http2.Http2SettingsFrame in project aws-sdk-java-v2 by aws.

the class Http2SettingsFrameHandlerTest method http2SettingsFrame.

private Http2SettingsFrame http2SettingsFrame(long serverMaxStreams) {
    return new Http2SettingsFrame() {

        @Override
        public Http2Settings settings() {
            Http2Settings http2Settings = new Http2Settings();
            http2Settings.maxConcurrentStreams(serverMaxStreams);
            return http2Settings;
        }

        @Override
        public String name() {
            return "test";
        }
    };
}
Also used : Http2SettingsFrame(io.netty.handler.codec.http2.Http2SettingsFrame) Http2Settings(io.netty.handler.codec.http2.Http2Settings)

Aggregations

Http2SettingsFrame (io.netty.handler.codec.http2.Http2SettingsFrame)5 Test (org.junit.Test)4 ChannelHandler (io.netty.channel.ChannelHandler)3 Http2Settings (io.netty.handler.codec.http2.Http2Settings)3 ServerBootstrap (io.netty.bootstrap.ServerBootstrap)2 ChannelHandlerContext (io.netty.channel.ChannelHandlerContext)2 ChannelInboundHandlerAdapter (io.netty.channel.ChannelInboundHandlerAdapter)2 ChannelInitializer (io.netty.channel.ChannelInitializer)2 ChannelOption (io.netty.channel.ChannelOption)2 NioEventLoopGroup (io.netty.channel.nio.NioEventLoopGroup)2 ServerSocketChannel (io.netty.channel.socket.ServerSocketChannel)2 SocketChannel (io.netty.channel.socket.SocketChannel)2 NioServerSocketChannel (io.netty.channel.socket.nio.NioServerSocketChannel)2 DefaultHttp2Headers (io.netty.handler.codec.http2.DefaultHttp2Headers)2 DefaultHttp2HeadersFrame (io.netty.handler.codec.http2.DefaultHttp2HeadersFrame)2 Http2DataFrame (io.netty.handler.codec.http2.Http2DataFrame)2 Http2Frame (io.netty.handler.codec.http2.Http2Frame)2 Http2FrameCodec (io.netty.handler.codec.http2.Http2FrameCodec)2 Http2FrameCodecBuilder (io.netty.handler.codec.http2.Http2FrameCodecBuilder)2 Http2HeadersFrame (io.netty.handler.codec.http2.Http2HeadersFrame)2