Home / Class/ DefaultHttp2PushPromiseFrameTest Class — netty Architecture

DefaultHttp2PushPromiseFrameTest Class — netty Architecture

Architecture documentation for the DefaultHttp2PushPromiseFrameTest class in DefaultHttp2PushPromiseFrameTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  7aa7c7e1_690b_4471_b638_23d3c29cb751["DefaultHttp2PushPromiseFrameTest"]
  5b2ea007_15cc_23b9_2b36_e512a7fce7c3["DefaultHttp2PushPromiseFrameTest.java"]
  7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|defined in| 5b2ea007_15cc_23b9_2b36_e512a7fce7c3
  cd2ffeef_aa84_a5b0_1f82_446edac6639c["setup()"]
  7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|method| cd2ffeef_aa84_a5b0_1f82_446edac6639c
  9f97a1e6_7fc9_93e2_d999_dd39aa8de2ab["send()"]
  7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|method| 9f97a1e6_7fc9_93e2_d999_dd39aa8de2ab
  a3ad127f_c339_14ef_40fd_7aac4c88cd7e["shutdown()"]
  7aa7c7e1_690b_4471_b638_23d3c29cb751 -->|method| a3ad127f_c339_14ef_40fd_7aac4c88cd7e

Relationship Graph

Source Code

codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java lines 43–233

public class DefaultHttp2PushPromiseFrameTest {

    private final EventLoopGroup eventLoopGroup = new MultiThreadIoEventLoopGroup(2, NioIoHandler.newFactory());
    private final ClientHandler clientHandler = new ClientHandler();
    private final Map<Integer, String> contentMap = new ConcurrentHashMap<Integer, String>();

    @BeforeEach
    public void setup() throws InterruptedException {
        ServerBootstrap serverBootstrap = new ServerBootstrap()
                .group(eventLoopGroup)
                .channel(NioServerSocketChannel.class)
                .childHandler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    protected void initChannel(SocketChannel ch) {
                        ChannelPipeline pipeline = ch.pipeline();

                        Http2FrameCodec frameCodec = Http2FrameCodecBuilder.forServer()
                                .autoAckSettingsFrame(true)
                                .autoAckPingFrame(true)
                                .build();

                        pipeline.addLast(frameCodec);
                        pipeline.addLast(new ServerHandler());
                    }
                });

        ChannelFuture channelFuture = serverBootstrap.bind(0).sync();

        final Bootstrap bootstrap = new Bootstrap()
                .group(eventLoopGroup)
                .channel(NioSocketChannel.class)
                .handler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    protected void initChannel(SocketChannel ch) {
                        ChannelPipeline pipeline = ch.pipeline();

                        Http2FrameCodec frameCodec = Http2FrameCodecBuilder.forClient()
                                .autoAckSettingsFrame(true)
                                .autoAckPingFrame(true)
                                .initialSettings(Http2Settings.defaultSettings().pushEnabled(true))
                                .build();

                        pipeline.addLast(frameCodec);
                        pipeline.addLast(clientHandler);
                    }
                });

         bootstrap.connect(channelFuture.channel().localAddress()).sync();
    }

    @Test
    public void send() throws Exception {
        clientHandler.write();
    }

    @AfterEach
    public void shutdown() {
        eventLoopGroup.shutdownGracefully().syncUninterruptibly();
    }

    private final class ServerHandler extends Http2ChannelDuplexHandler {

        @Override
        public void channelRead(final ChannelHandlerContext ctx, Object msg) throws Exception {

            if (msg instanceof Http2HeadersFrame) {
                final Http2HeadersFrame receivedFrame = (Http2HeadersFrame) msg;

                Http2Headers pushRequestHeaders = new DefaultHttp2Headers();
                pushRequestHeaders.path("/meow")
                        .method("GET")
                        .scheme("https")
                        .authority("localhost:5555");

                // Write PUSH_PROMISE request headers
                final Http2FrameStream newPushFrameStream = newStream();
                Http2PushPromiseFrame pushPromiseFrame = new DefaultHttp2PushPromiseFrame(pushRequestHeaders);
                pushPromiseFrame.stream(receivedFrame.stream());
                pushPromiseFrame.pushStream(newPushFrameStream);
                ctx.writeAndFlush(pushPromiseFrame).addListener(future -> {
                    contentMap.put(newPushFrameStream.id(), "Meow, I am Pushed via HTTP/2");

Frequently Asked Questions

What is the DefaultHttp2PushPromiseFrameTest class?
DefaultHttp2PushPromiseFrameTest is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java.
Where is DefaultHttp2PushPromiseFrameTest defined?
DefaultHttp2PushPromiseFrameTest is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2PushPromiseFrameTest.java at line 43.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free