Home / Class/ Http3RequestStreamValidationHandlerTest Class — netty Architecture

Http3RequestStreamValidationHandlerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  c95952ff_8157_1798_825c_bd4f00047c5a["Http3RequestStreamValidationHandlerTest"]
  c7a5234e_e196_f21f_69e7_2309df2d8b18["Http3RequestStreamValidationHandlerTest.java"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|defined in| c7a5234e_e196_f21f_69e7_2309df2d8b18
  3585102a_a882_03d2_eddd_6b64c7576a4e["Http3RequestStreamValidationHandlerTest()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| 3585102a_a882_03d2_eddd_6b64c7576a4e
  b73c6a37_d95b_3f02_4b51_e76a88bbb10b["ChannelHandler()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| b73c6a37_d95b_3f02_4b51_e76a88bbb10b
  c25bdb52_15cd_915d_2b17_1ae05e6cddcb["newValidFrames()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| c25bdb52_15cd_915d_2b17_1ae05e6cddcb
  8162500d_ad8f_5bc2_4c6e_0a93a9f70c20["testInvalidFrameSequenceStartInbound()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| 8162500d_ad8f_5bc2_4c6e_0a93a9f70c20
  ebaf9d64_83b5_b1ef_6e67_2a2fed2399e8["testInvalidFrameSequenceEndInbound()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| ebaf9d64_83b5_b1ef_6e67_2a2fed2399e8
  3ca5303c_39ca_3ee8_a910_8c5205be8a33["testInvalidFrameSequenceStartOutbound()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| 3ca5303c_39ca_3ee8_a910_8c5205be8a33
  e33f275e_55a3_ad5b_6dbc_388aeefc2f72["testInvalidFrameSequenceEndOutbound()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| e33f275e_55a3_ad5b_6dbc_388aeefc2f72
  65b07027_8898_7d41_d887_bf6d2c929cb8["testGoawayReceivedBeforeWritingHeaders()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| 65b07027_8898_7d41_d887_bf6d2c929cb8
  a23434e1_b0f4_b7e5_8275_0e195bb5a486["testGoawayReceivedAfterWritingHeaders()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| a23434e1_b0f4_b7e5_8275_0e195bb5a486
  7223bca2_143c_a390_326c_954efdb9c790["testClientHeadRequestWithContentLength()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| 7223bca2_143c_a390_326c_954efdb9c790
  3e3ffd96_1b1e_897c_8a6f_2d5c8c076757["testClientNonHeadRequestWithContentLengthNoData()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| 3e3ffd96_1b1e_897c_8a6f_2d5c8c076757
  bca9399a_ccda_2c3d_0e8e_bd2cdb50c2f3["testClientNonHeadRequestWithContentLengthNoDataAndTrailers()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| bca9399a_ccda_2c3d_0e8e_bd2cdb50c2f3
  d63d1aa7_dd90_8f29_ee04_439d10bbd711["testClientNonHeadRequestWithContentLengthNotEnoughData()"]
  c95952ff_8157_1798_825c_bd4f00047c5a -->|method| d63d1aa7_dd90_8f29_ee04_439d10bbd711

Relationship Graph

Source Code

codec-http3/src/test/java/io/netty/handler/codec/http3/Http3RequestStreamValidationHandlerTest.java lines 54–547

public class Http3RequestStreamValidationHandlerTest extends Http3FrameTypeValidationHandlerTest {
    private final QpackDecoder decoder;

    public Http3RequestStreamValidationHandlerTest() {
        super(true, true);
        decoder = new QpackDecoder(0, 0);
    }

    @Override
    protected ChannelHandler newHandler(boolean server) {
        return new ChannelInitializer<QuicStreamChannel>() {
            @Override
            protected void initChannel(QuicStreamChannel ch) {
                Http3RequestStreamEncodeStateValidator encStateValidator = new Http3RequestStreamEncodeStateValidator();
                Http3RequestStreamDecodeStateValidator decStateValidator = new Http3RequestStreamDecodeStateValidator();
                ch.pipeline().addLast(encStateValidator);
                ch.pipeline().addLast(decStateValidator);
                ch.pipeline().addLast(newServerValidator(qpackAttributes, decoder, encStateValidator,
                        decStateValidator));
            }
        };
    }

    @Override
    protected List<Http3RequestStreamFrame> newValidFrames() {
        return Arrays.asList(new DefaultHttp3HeadersFrame(), new DefaultHttp3DataFrame(Unpooled.directBuffer()),
                new DefaultHttp3UnknownFrame(Http3CodecUtils.MAX_RESERVED_FRAME_TYPE, Unpooled.buffer()));
    }

    @ParameterizedTest(name = "{index}: server = {0}")
    @MethodSource("data")
    public void testInvalidFrameSequenceStartInbound(boolean server) throws Exception {
        setUp(server);
        final EmbeddedQuicStreamChannel channel = newStream(QuicStreamType.BIDIRECTIONAL, newHandler(server));
        Http3DataFrame dataFrame = new DefaultHttp3DataFrame(Unpooled.buffer());

        Exception e = assertThrows(Exception.class, () -> channel.writeInbound(dataFrame));
        assertException(H3_FRAME_UNEXPECTED, e);

        verifyClose(H3_FRAME_UNEXPECTED, parent);
        assertEquals(0, dataFrame.refCnt());
        assertFalse(channel.finish());
    }

    @ParameterizedTest(name = "{index}: server = {0}")
    @MethodSource("data")
    public void testInvalidFrameSequenceEndInbound(boolean server) throws Exception {
        setUp(server);
        final EmbeddedQuicStreamChannel channel = newStream(QuicStreamType.BIDIRECTIONAL, newHandler(server));

        Http3HeadersFrame headersFrame = new DefaultHttp3HeadersFrame();
        Http3DataFrame dataFrame = new DefaultHttp3DataFrame(Unpooled.buffer());
        Http3DataFrame dataFrame2 = new DefaultHttp3DataFrame(Unpooled.buffer());
        Http3DataFrame dataFrame3 = new DefaultHttp3DataFrame(Unpooled.buffer());
        Http3HeadersFrame trailersFrame = new DefaultHttp3HeadersFrame();

        assertTrue(channel.writeInbound(headersFrame));
        assertTrue(channel.writeInbound(dataFrame.retainedDuplicate()));
        assertTrue(channel.writeInbound(dataFrame2.retainedDuplicate()));
        assertTrue(channel.writeInbound(trailersFrame));

        Exception e = assertThrows(Exception.class, () -> channel.writeInbound(dataFrame3));
        assertException(H3_FRAME_UNEXPECTED, e);

        verifyClose(H3_FRAME_UNEXPECTED, parent);
        assertTrue(channel.finish());
        assertEquals(0, dataFrame3.refCnt());

        assertFrameEquals(headersFrame, channel.readInbound());
        assertFrameEquals(dataFrame, channel.readInbound());
        assertFrameEquals(dataFrame2, channel.readInbound());
        assertFrameEquals(trailersFrame, channel.readInbound());
        assertNull(channel.readInbound());
    }

    @ParameterizedTest(name = "{index}: server = {0}")
    @MethodSource("data")
    public void testInvalidFrameSequenceStartOutbound(boolean server) throws Exception {
        setUp(server);
        EmbeddedQuicStreamChannel channel = newStream(QuicStreamType.BIDIRECTIONAL, newHandler(server));

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free