Home / Class/ Http3PushStreamTest Class — netty Architecture

Http3PushStreamTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af["Http3PushStreamTest"]
  d7438111_b735_1815_cf74_2a0b3c67130c["Http3PushStreamTest.java"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|defined in| d7438111_b735_1815_cf74_2a0b3c67130c
  73e4df66_8362_81ed_8adc_d0918302d077["setUp()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 73e4df66_8362_81ed_8adc_d0918302d077
  cc1c317d_899e_e137_25d9_7446a1048d17["sendMaxPushId()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| cc1c317d_899e_e137_25d9_7446a1048d17
  e9610d76_49ed_122b_2d2c_502a938150d9["tearDown()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| e9610d76_49ed_122b_2d2c_502a938150d9
  bc2b69cf_4a2e_02e2_8b42_ab23aadd4534["headersData()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| bc2b69cf_4a2e_02e2_8b42_ab23aadd4534
  85f8f9a6_213c_d72e_bb67_c7f81c508dcb["headersDataTrailers()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 85f8f9a6_213c_d72e_bb67_c7f81c508dcb
  cbf37ada_81cd_cb66_87d1_fc732f650b46["pushPromise()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| cbf37ada_81cd_cb66_87d1_fc732f650b46
  2d2f84cb_32f3_7326_9ed2_f541afd2fcfa["invalidPushId()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 2d2f84cb_32f3_7326_9ed2_f541afd2fcfa
  c1c5ba3d_d9b9_bdbe_1b58_de482403b835["updateMaxPushId()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| c1c5ba3d_d9b9_bdbe_1b58_de482403b835
  b66e6737_5bd5_a43a_a185_c4b2f1c65757["testWriteAndReadFrames()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| b66e6737_5bd5_a43a_a185_c4b2f1c65757
  8f66e270_3563_8590_fe00_1d051c519372["writeAndReadFrame()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 8f66e270_3563_8590_fe00_1d051c519372
  e1ccc8a0_0890_2eda_d8c1_d41cd53f8681["DefaultHttp3DataFrame()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| e1ccc8a0_0890_2eda_d8c1_d41cd53f8681
  c5f554a0_3682_33df_b918_401b78ae67bf["EmbeddedQuicStreamChannel()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| c5f554a0_3682_33df_b918_401b78ae67bf
  0654ff42_1bd5_af9f_fb17_fdeebda47217["ByteBuf()"]
  c9142e7f_8050_3c0d_eeaf_c4c0175b89af -->|method| 0654ff42_1bd5_af9f_fb17_fdeebda47217

Relationship Graph

Source Code

codec-http3/src/test/java/io/netty/handler/codec/http3/Http3PushStreamTest.java lines 42–214

public class Http3PushStreamTest {
    private Http3ServerConnectionHandler serverConnectionHandler;
    private EmbeddedQuicChannel serverChannel;
    private Http3ServerPushStreamManager pushStreamManager;
    private Http3ClientConnectionHandler clientConnectionHandler;
    private EmbeddedQuicChannel clientChannel;
    private int maxPushId;
    private ChannelHandlerContext serverControlStreamHandlerCtx;
    private EmbeddedQuicStreamChannel serverLocalControlStream;
    private EmbeddedQuicStreamChannel clientLocalControlStream;

    @BeforeEach
    public void setUp() throws Exception {
        serverConnectionHandler = new Http3ServerConnectionHandler(new ChannelDuplexHandler(), null, null, null, true);
        serverChannel = new EmbeddedQuicChannel(true, serverConnectionHandler);
        serverLocalControlStream = (EmbeddedQuicStreamChannel) Http3.getLocalControlStream(serverChannel);
        assertNotNull(serverLocalControlStream);
        serverControlStreamHandlerCtx = mock(ChannelHandlerContext.class);
        when(serverControlStreamHandlerCtx.channel()).thenReturn(serverLocalControlStream);

        serverConnectionHandler.localControlStreamHandler.channelRead(serverControlStreamHandlerCtx,
                new DefaultHttp3SettingsFrame());
        pushStreamManager = new Http3ServerPushStreamManager(serverChannel);

        clientConnectionHandler = new Http3ClientConnectionHandler(null, null, null, null, true);
        clientChannel = new EmbeddedQuicChannel(false, clientConnectionHandler);
        clientLocalControlStream = (EmbeddedQuicStreamChannel) Http3.getLocalControlStream(clientChannel);
        assertNotNull(clientLocalControlStream);

        assertTrue(serverLocalControlStream.releaseOutbound());
        assertTrue(clientLocalControlStream.releaseOutbound());
        maxPushId = 0; // allow 1 push
        sendMaxPushId(maxPushId);
    }

    private void sendMaxPushId(int maxPushId) throws QpackException {
        final DefaultHttp3MaxPushIdFrame maxPushIdFrame = new DefaultHttp3MaxPushIdFrame(maxPushId);
        serverConnectionHandler.localControlStreamHandler.channelRead(serverControlStreamHandlerCtx, maxPushIdFrame);
        assertTrue(serverChannel.isActive());

        clientLocalControlStream.writeAndFlush(maxPushIdFrame).addListener(CLOSE_ON_FAILURE);
        assertTrue(clientChannel.isActive());
        assertTrue(clientLocalControlStream.releaseOutbound());
    }

    @AfterEach
    public void tearDown() {
        assertFalse(serverLocalControlStream.finish());
        assertFalse(serverChannel.finish());
        assertFalse(clientLocalControlStream.finish());
        assertFalse(clientChannel.finish());
    }

    @Test
    public void headersData() throws Exception {
        testWriteAndReadFrames(Http3TestUtils.newHeadersFrameWithPseudoHeaders(), newDataFrame());
    }

    @Test
    public void headersDataTrailers() throws Exception {
        testWriteAndReadFrames(Http3TestUtils.newHeadersFrameWithPseudoHeaders(), newDataFrame(),
                new DefaultHttp3HeadersFrame());
    }

    @Test
    public void pushPromise() throws Exception {
        final EmbeddedQuicStreamChannel serverStream = newServerStream();
        readStreamHeader(serverStream).release();
        try {
            assertThrows(Http3Exception.class, () -> serverStream.writeOutbound(new DefaultHttp3PushPromiseFrame(1)));
        } finally {
            assertFalse(serverStream.finish());
        }
    }

    @Test
    public void invalidPushId() throws Exception {
        final EmbeddedQuicStreamChannel serverStream =
                (EmbeddedQuicStreamChannel) serverChannel.createStream(UNIDIRECTIONAL,
                        new Http3PushStreamServerInitializer(maxPushId + 1) {
                            @Override

Frequently Asked Questions

What is the Http3PushStreamTest class?
Http3PushStreamTest is a class in the netty codebase, defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3PushStreamTest.java.
Where is Http3PushStreamTest defined?
Http3PushStreamTest is defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3PushStreamTest.java at line 42.

Analyze Your Own Codebase

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

Try Supermodel Free