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));
Defined In
Source
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