Home / Class/ Http3ControlStreamOutboundHandlerTest Class — netty Architecture

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());

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