Http3ControlStreamOutboundHandlerTest Class — netty Architecture
Architecture documentation for the Http3ControlStreamOutboundHandlerTest class in Http3ControlStreamOutboundHandlerTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08["Http3ControlStreamOutboundHandlerTest"] 80afa63d_548d_92d2_f83b_a0260c6023cb["Http3ControlStreamOutboundHandlerTest.java"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|defined in| 80afa63d_548d_92d2_f83b_a0260c6023cb dbed1cc0_a26c_d6bd_2c9d_d720eb3e25fd["Http3ControlStreamOutboundHandlerTest()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| dbed1cc0_a26c_d6bd_2c9d_d720eb3e25fd 455ddd7a_8372_bb48_728c_ec2590723835["Http3ControlStreamOutboundHandler()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 455ddd7a_8372_bb48_728c_ec2590723835 0da098cc_4eb9_e0c2_924a_37080edb2f76["newValidFrames()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 0da098cc_4eb9_e0c2_924a_37080edb2f76 d276b247_e960_5bd2_be7e_2764d8388ecc["newInvalidFrames()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| d276b247_e960_5bd2_be7e_2764d8388ecc ab658a21_4d09_f196_6c3e_6629cc24244d["testStreamClosedWhileParentStillActive()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| ab658a21_4d09_f196_6c3e_6629cc24244d 12aca607_a277_8dea_c9b9_94cc89253701["testGoAwayIdDecreaseWorks()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 12aca607_a277_8dea_c9b9_94cc89253701 caa6ff73_afd1_fef8_c507_edcd80fd4f1d["testGoAwayIdIncreaseFails()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| caa6ff73_afd1_fef8_c507_edcd80fd4f1d 91d9f7f8_f3b2_d6af_0627_0e9254747d21["testGoAwayIdUseInvalidId()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 91d9f7f8_f3b2_d6af_0627_0e9254747d21 9fee7e30_5a51_e34e_fe89_44a46865d6fc["testPassesUnknownFrame()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 9fee7e30_5a51_e34e_fe89_44a46865d6fc 4a820b15_d749_c113_d0b4_1093f99c09ef["testMaxPushIdFailsWhenReduced()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 4a820b15_d749_c113_d0b4_1093f99c09ef 06da7ec0_96d6_60d0_4c10_8c3922089a59["testMaxPushIdCanBeIncreased()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 06da7ec0_96d6_60d0_4c10_8c3922089a59 8f927585_50a8_7e9c_7986_e68b06618980["EmbeddedQuicStreamChannel()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 8f927585_50a8_7e9c_7986_e68b06618980 8121e86a_b9a8_77de_f5e2_3e8ff94f93ab["writeInvalidFrame()"] 96e94d38_9bbf_f4b3_6ef3_a1a498a9ad08 -->|method| 8121e86a_b9a8_77de_f5e2_3e8ff94f93ab
Relationship Graph
Source Code
codec-http3/src/test/java/io/netty/handler/codec/http3/Http3ControlStreamOutboundHandlerTest.java lines 40–204
public class Http3ControlStreamOutboundHandlerTest extends
AbstractHttp3FrameTypeValidationHandlerTest<Http3ControlStreamFrame> {
private final Http3SettingsFrame settingsFrame = new DefaultHttp3SettingsFrame();
public Http3ControlStreamOutboundHandlerTest() {
super(QuicStreamType.UNIDIRECTIONAL, false, true);
}
@Override
protected Http3ControlStreamOutboundHandler newHandler(boolean server) {
return new Http3ControlStreamOutboundHandler(server, settingsFrame, new ChannelInboundHandlerAdapter());
}
@Override
protected List<Http3ControlStreamFrame> newValidFrames() {
return Arrays.asList(new DefaultHttp3SettingsFrame(), new DefaultHttp3GoAwayFrame(0),
new DefaultHttp3MaxPushIdFrame(0), new DefaultHttp3CancelPushFrame(0));
}
@Override
protected List<Http3Frame> newInvalidFrames() {
return Arrays.asList(Http3TestUtils.newHttp3RequestStreamFrame(), Http3TestUtils.newHttp3PushStreamFrame());
}
@ParameterizedTest(name = "{index}: server = {0}")
@MethodSource("data")
public void testStreamClosedWhileParentStillActive(boolean server) throws Exception {
setUp(server);
EmbeddedChannel channel = newStream(newHandler(server));
assertFalse(channel.finish());
verifyClose(1, Http3ErrorCode.H3_CLOSED_CRITICAL_STREAM, parent);
}
@ParameterizedTest(name = "{index}: server = {0}")
@MethodSource("data")
public void testGoAwayIdDecreaseWorks(boolean server) throws Exception {
setUp(server);
parent.close().get();
// Let's mark the parent as inactive before we close as otherwise we will send a close frame.
EmbeddedChannel channel = newStream(newHandler(server));
if (server) {
writeValidFrame(channel, new DefaultHttp3GoAwayFrame(8));
writeValidFrame(channel, new DefaultHttp3GoAwayFrame(4));
} else {
writeValidFrame(channel, new DefaultHttp3GoAwayFrame(9));
writeValidFrame(channel, new DefaultHttp3GoAwayFrame(5));
}
assertFalse(channel.finish());
}
@ParameterizedTest(name = "{index}: server = {0}")
@MethodSource("data")
public void testGoAwayIdIncreaseFails(boolean server) throws Exception {
setUp(server);
// Let's mark the parent as inactive before we close as otherwise we will send a close frame.
parent.close().get();
EmbeddedChannel channel = newStream(newHandler(server));
if (server) {
writeValidFrame(channel, new DefaultHttp3GoAwayFrame(4));
writeInvalidFrame(Http3ErrorCode.H3_ID_ERROR, channel, new DefaultHttp3GoAwayFrame(8));
} else {
writeValidFrame(channel, new DefaultHttp3GoAwayFrame(1));
writeInvalidFrame(Http3ErrorCode.H3_ID_ERROR, channel, new DefaultHttp3GoAwayFrame(3));
}
assertFalse(channel.finish());
}
@Test
public void testGoAwayIdUseInvalidId() throws Exception {
setUp(true);
parent.close().get();
// Let's mark the parent as inactive before we close as otherwise we will send a close frame.
EmbeddedChannel channel = newStream(newHandler(true));
writeInvalidFrame(Http3ErrorCode.H3_ID_ERROR, channel, new DefaultHttp3GoAwayFrame(2));
assertFalse(channel.finish());
Defined In
Source
Frequently Asked Questions
What is the Http3ControlStreamOutboundHandlerTest class?
Http3ControlStreamOutboundHandlerTest is a class in the netty codebase, defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3ControlStreamOutboundHandlerTest.java.
Where is Http3ControlStreamOutboundHandlerTest defined?
Http3ControlStreamOutboundHandlerTest is defined in codec-http3/src/test/java/io/netty/handler/codec/http3/Http3ControlStreamOutboundHandlerTest.java at line 40.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free