Home / Class/ QpackDecoderHandlerTest Class — netty Architecture

QpackDecoderHandlerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  708fffe6_76c4_53cd_c185_aade2e79a203["QpackDecoderHandlerTest"]
  3ac33839_b8a4_fb8e_6836_96ba01b41ee3["QpackDecoderHandlerTest.java"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|defined in| 3ac33839_b8a4_fb8e_6836_96ba01b41ee3
  dfa4ebd5_1477_da90_4f1f_570aa10ee9c0["tearDown()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| dfa4ebd5_1477_da90_4f1f_570aa10ee9c0
  996f8a8a_cca7_5c83_69c3_07cd08156453["sectionAckNoIncrement()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 996f8a8a_cca7_5c83_69c3_07cd08156453
  39ad5734_3b52_99e2_5c2b_b4e91aadc545["sectionAck()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 39ad5734_3b52_99e2_5c2b_b4e91aadc545
  35604df2_f31f_522f_deb5_6deedf7e9266["sectionAckUnknownStream()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 35604df2_f31f_522f_deb5_6deedf7e9266
  80901d0f_ee4c_bf76_96ed_16f33e871787["sectionAckAlreadyAcked()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 80901d0f_ee4c_bf76_96ed_16f33e871787
  71ab7336_3b89_63a6_e08e_247fec2417cb["sectionAckMultiPending()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 71ab7336_3b89_63a6_e08e_247fec2417cb
  957ba1dd_f340_3fae_ce33_a3c3d6a35709["sectionAckMultiPostAck()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 957ba1dd_f340_3fae_ce33_a3c3d6a35709
  0fc07876_2d59_4390_1743_a47a3066f684["sectionAckCancelledStream()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 0fc07876_2d59_4390_1743_a47a3066f684
  1ecd35f8_52a6_6372_033d_79aa1845e418["splitBufferForSectionAck()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 1ecd35f8_52a6_6372_033d_79aa1845e418
  5e771bc9_42b7_3343_c6a0_23cc484528b4["splitBufferForInsertCountIncrement()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 5e771bc9_42b7_3343_c6a0_23cc484528b4
  15ebf0fd_b376_598c_5edc_fc641d08c3cb["splitBufferForStreamCancellation()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| 15ebf0fd_b376_598c_5edc_fc641d08c3cb
  d7ab5f22_76c7_185e_02de_3fb5f2341a42["streamCancel()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| d7ab5f22_76c7_185e_02de_3fb5f2341a42
  e847dd0a_8987_e663_c75d_e1f943a9c0af["streamCancelUnknownStream()"]
  708fffe6_76c4_53cd_c185_aade2e79a203 -->|method| e847dd0a_8987_e663_c75d_e1f943a9c0af

Relationship Graph

Source Code

codec-http3/src/test/java/io/netty/handler/codec/http3/QpackDecoderHandlerTest.java lines 35–359

public class QpackDecoderHandlerTest {
    private static final QpackHeaderField fooBar = new QpackHeaderField("foo", "bar");
    private final QpackEncoderDynamicTable dynamicTable = new QpackEncoderDynamicTable();
    private EmbeddedQuicChannel parent;
    private QpackEncoder encoder;
    private EmbeddedQuicStreamChannel decoderStream;
    private EmbeddedQuicStreamChannel encoderStream;
    private int maxEntries;
    private QpackAttributes attributes;

    @AfterEach
    public void tearDown() {
        assertFalse(encoderStream.finish());
        assertFalse(decoderStream.finish());
    }

    @Test
    public void sectionAckNoIncrement() throws Exception {
        setup(128L);
        encodeHeaders(headers -> headers.add(fooBar.name, fooBar.value));

        Http3Exception e = assertThrows(Http3Exception.class, () -> sendAckForStreamId(decoderStream.streamId()));
        assertThat(e.getCause(), instanceOf(QpackException.class));

        Http3TestUtils.verifyClose(QPACK_DECODER_STREAM_ERROR, parent);
        finishStreams();
    }

    @Test
    public void sectionAck() throws Exception {
        setup(128L);
        encodeHeaders(headers -> headers.add(fooBar.name, fooBar.value));
        verifyRequiredInsertCount(1);
        sendInsertCountIncrement(1);
        verifyKnownReceivedCount(1);

        // Refer now to dynamic table
        encodeHeaders(headers -> headers.add(fooBar.name, fooBar.value));
        sendAckForStreamId(decoderStream.streamId());

        finishStreams();

        verifyRequiredInsertCount(1);
        verifyKnownReceivedCount(1);
    }

    @Test
    public void sectionAckUnknownStream() throws Exception {
        setup(128);

        Http3Exception e = assertThrows(Http3Exception.class, () -> sendAckForStreamId(1));
        assertThat(e.getCause(), instanceOf(QpackException.class));

        Http3TestUtils.verifyClose(QPACK_DECODER_STREAM_ERROR, parent);
        finishStreams();
    }

    @Test
    public void sectionAckAlreadyAcked() throws Exception {
        setup(128);
        encodeHeaders(headers -> headers.add(fooBar.name, fooBar.value));
        sendInsertCountIncrement(1);
        // Refer now to dynamic table
        encodeHeaders(headers -> headers.add(fooBar.name, fooBar.value));
        sendAckForStreamId(decoderStream.streamId());

        Http3Exception e = assertThrows(Http3Exception.class, () -> sendAckForStreamId(decoderStream.streamId()));
        assertThat(e.getCause(), instanceOf(QpackException.class));

        Http3TestUtils.verifyClose(QPACK_DECODER_STREAM_ERROR, parent);
        finishStreams();

        verifyRequiredInsertCount(1);
        verifyKnownReceivedCount(1);
    }

    @Test
    public void sectionAckMultiPending() throws Exception {
        setup(128L);
        encodeHeaders(headers -> headers.add(fooBar.name, fooBar.value));
        sendInsertCountIncrement(1);

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free