Home / Class/ Http3FrameCodecTest Class — netty Architecture

Http3FrameCodecTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  5690f307_9248_ec29_2c84_6839dbcdc179["Http3FrameCodecTest"]
  757b3540_96b0_cf85_cd15_09f316c558d8["Http3FrameCodecTest.java"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|defined in| 757b3540_96b0_cf85_cd15_09f316c558d8
  aa87990d_b9f4_06f6_a966_44086d83d72f["data()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| aa87990d_b9f4_06f6_a966_44086d83d72f
  c41e6630_6279_e3be_09d7_edd57543ee0b["dataNoFragment()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| c41e6630_6279_e3be_09d7_edd57543ee0b
  f172e438_95aa_794a_73ee_b2131dfe9d18["setUp()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| f172e438_95aa_794a_73ee_b2131dfe9d18
  a9a3ec95_664a_9197_46a1_611a3016bc21["setQpackStreams()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| a9a3ec95_664a_9197_46a1_611a3016bc21
  4d24fc8f_afbc_fcec_c330_234add11236e["setQpackEncoderStream()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 4d24fc8f_afbc_fcec_c330_234add11236e
  fa954a0a_0c15_73c7_2ae7_a2aaf8d36010["setQpackDecoderStream()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| fa954a0a_0c15_73c7_2ae7_a2aaf8d36010
  66ddc43c_544b_822c_7d41_c8e263d00092["tearDown()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 66ddc43c_544b_822c_7d41_c8e263d00092
  9adc46ad_fff8_23d3_d4a6_572d810a74e0["testHttp3CancelPushFrame_63()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 9adc46ad_fff8_23d3_d4a6_572d810a74e0
  64fed699_44f9_642e_abd7_f5203d81ef3c["testHttp3CancelPushFrame_16383()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 64fed699_44f9_642e_abd7_f5203d81ef3c
  5e5e56d5_6f40_8539_5b9e_c5c1f1581718["testHttp3CancelPushFrame_1073741823()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 5e5e56d5_6f40_8539_5b9e_c5c1f1581718
  50df1a1a_30f3_de60_11cc_f002075ab688["testHttp3CancelPushFrame_4611686018427387903()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 50df1a1a_30f3_de60_11cc_f002075ab688
  49b3a2c3_389b_18e8_70b9_94c4955edcd4["testHttp3DataFrame()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| 49b3a2c3_389b_18e8_70b9_94c4955edcd4
  b3abc623_cf1c_26ad_f744_1ed740cf27e9["testHttp3GoAwayFrame_63()"]
  5690f307_9248_ec29_2c84_6839dbcdc179 -->|method| b3abc623_cf1c_26ad_f744_1ed740cf27e9

Relationship Graph

Source Code

codec-http3/src/test/java/io/netty/handler/codec/http3/Http3FrameCodecTest.java lines 60–841

public class Http3FrameCodecTest {
    private static final int MAX_HEADER_SIZE = 1024;
    private QpackEncoder encoder;
    private QpackDecoder decoder;
    private EmbeddedQuicStreamChannel encoderStream;
    private EmbeddedQuicStreamChannel decoderStream;
    private EmbeddedQuicChannel parent;
    private QpackEncoderHandler qpackEncoderHandler;
    private QpackDecoderHandler qpackDecoderHandler;
    private QpackAttributes qpackAttributes;
    private long maxTableCapacity;

    public static Collection<Object[]> data() {
        return asList(
                new Object[]{true, 0, false},
                new Object[]{true, 0, true},
                new Object[]{true, 100, false},
                new Object[]{true, 100, true},
                new Object[]{false, 0, false},
                new Object[]{false, 0, true},
                new Object[]{false, 100, false},
                new Object[]{false, 100, true}
        );
    }

    public static Collection<Object[]> dataNoFragment() {
        return asList(
                new Object[]{0, false},
                new Object[]{0, true},
                new Object[]{100, false},
                new Object[]{100, true}
        );
    }

    private EmbeddedQuicStreamChannel codecChannel;

    private void setUp(int maxBlockedStreams, boolean delayQpackStreams) throws Exception {
        parent = new EmbeddedQuicChannel(true);
        qpackAttributes = new QpackAttributes(parent, false);
        Http3.setQpackAttributes(parent, qpackAttributes);
        final Http3SettingsFrame settings = new DefaultHttp3SettingsFrame();
        maxTableCapacity = 1024L;
        settings.put(Http3SettingsFrame.HTTP3_SETTINGS_QPACK_MAX_TABLE_CAPACITY, maxTableCapacity);
        settings.put(Http3SettingsFrame.HTTP3_SETTINGS_QPACK_BLOCKED_STREAMS, (long) maxBlockedStreams);
        decoder = new QpackDecoder(maxTableCapacity, maxBlockedStreams);
        decoder.setDynamicTableCapacity(maxTableCapacity);
        qpackEncoderHandler = new QpackEncoderHandler(maxTableCapacity, decoder);
        encoderStream = (EmbeddedQuicStreamChannel) parent.createStream(QuicStreamType.UNIDIRECTIONAL,
                new ChannelOutboundHandlerAdapter()).get();
        encoder = new QpackEncoder();
        qpackDecoderHandler = new QpackDecoderHandler(encoder);
        decoderStream = (EmbeddedQuicStreamChannel) parent.createStream(QuicStreamType.UNIDIRECTIONAL,
                new ChannelOutboundHandlerAdapter()).get();
        qpackAttributes.whenEncoderStreamAvailable(future -> {
            if (future.isSuccess()) {
                encoder.configureDynamicTable(qpackAttributes, maxTableCapacity, maxBlockedStreams);
            }
        });
        if (!delayQpackStreams) {
            setQpackStreams();
        }
        codecChannel = (EmbeddedQuicStreamChannel) parent.createStream(QuicStreamType.BIDIRECTIONAL,
                new ChannelInitializer<QuicStreamChannel>() {
                    @Override
                    protected void initChannel(QuicStreamChannel ch) {
                        Http3RequestStreamEncodeStateValidator encStateValidator =
                                new Http3RequestStreamEncodeStateValidator();
                        Http3RequestStreamDecodeStateValidator decStateValidator =
                                new Http3RequestStreamDecodeStateValidator();
                        ch.pipeline().addLast(new Http3FrameCodec(Http3FrameTypeValidator.NO_VALIDATION, decoder,
                                MAX_HEADER_SIZE, encoder, encStateValidator, decStateValidator, (id, v) -> false));
                        ch.pipeline().addLast(encStateValidator);
                        ch.pipeline().addLast(decStateValidator);
                    }
                }).get();
    }

    private void setQpackStreams() {
        setQpackEncoderStream();
        setQpackDecoderStream();
    }

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free