Home / Class/ Http3ServerPushStreamManagerTest Class — netty Architecture

Http3ServerPushStreamManagerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  716d9879_a637_c3da_7ca6_1aa12e6c5118["Http3ServerPushStreamManagerTest"]
  99372454_2631_f49a_f51f_dd18c31f44b3["Http3ServerPushStreamManagerTest.java"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|defined in| 99372454_2631_f49a_f51f_dd18c31f44b3
  be2f6c2b_003f_eb86_fd8d_742b83ea5fdc["setUp()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| be2f6c2b_003f_eb86_fd8d_742b83ea5fdc
  130a13af_034d_20a2_c233_fbb173bcb26e["tearDown()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 130a13af_034d_20a2_c233_fbb173bcb26e
  2fa1e6f9_067c_9e7f_5669_33745b59e1f7["pushAllowed()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 2fa1e6f9_067c_9e7f_5669_33745b59e1f7
  f897b03f_d480_1fa6_2e9e_4de7819104a1["reserveWhenPushNotAllowed()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| f897b03f_d480_1fa6_2e9e_4de7819104a1
  b3cff5e4_447f_45c9_eb0f_76aa03c8374a["reserveWhenPushAllowed()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| b3cff5e4_447f_45c9_eb0f_76aa03c8374a
  491c782e_d9e1_27d3_331a_dec97332692b["reservesAfterRefreshMaxId()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 491c782e_d9e1_27d3_331a_dec97332692b
  da7f5c24_31e1_3be5_b360_27a026fe50ab["pushStreamNoHandler()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| da7f5c24_31e1_3be5_b360_27a026fe50ab
  20c99dca_6b1b_9d3a_fabe_e436be18a425["pushStreamWithHandler()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 20c99dca_6b1b_9d3a_fabe_e436be18a425
  77ff8513_3a85_37fc_0864_3143d0c11c5c["pushStreamWithBootstrapNoHandler()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 77ff8513_3a85_37fc_0864_3143d0c11c5c
  37e19c6d_5303_7267_615e_c29a56792ed0["pushStreamWithBootstrapWithHandler()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 37e19c6d_5303_7267_615e_c29a56792ed0
  89c336df_ab20_798d_5637_74446f0aaecd["pushStreamWithBootstrapCreateAndClose()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| 89c336df_ab20_798d_5637_74446f0aaecd
  c35515f9_4bcd_f37f_1776_0b3e961facd2["pushStreamCreateAndClose()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| c35515f9_4bcd_f37f_1776_0b3e961facd2
  a6493178_be30_33af_1680_303aaba1d848["EmbeddedQuicStreamChannel()"]
  716d9879_a637_c3da_7ca6_1aa12e6c5118 -->|method| a6493178_be30_33af_1680_303aaba1d848

Relationship Graph

Source Code

codec-http3/src/test/java/io/netty/handler/codec/http3/Http3ServerPushStreamManagerTest.java lines 47–212

public class Http3ServerPushStreamManagerTest {

    private EmbeddedQuicChannel channel;
    private Http3ServerPushStreamManager manager;
    private Http3ServerConnectionHandler connectionHandler;
    private ChannelHandlerContext controlStreamHandlerCtx;
    private EmbeddedQuicStreamChannel localControlStream;

    @BeforeEach
    public void setUp() throws Exception {
        connectionHandler = new Http3ServerConnectionHandler(new Http3RequestStreamInboundHandler() {
            @Override
            protected void channelRead(ChannelHandlerContext ctx, Http3HeadersFrame frame) {
                ReferenceCountUtil.release(frame);
            }

            @Override
            protected void channelRead(ChannelHandlerContext ctx, Http3DataFrame frame) {
                ReferenceCountUtil.release(frame);
            }

            @Override
            protected void channelInputClosed(ChannelHandlerContext ctx) {
                // NOOP
            }
        }, null, null, null, true);
        channel = new EmbeddedQuicChannel(true, connectionHandler);
        localControlStream = (EmbeddedQuicStreamChannel) Http3.getLocalControlStream(channel);
        assertNotNull(localControlStream);
        assertTrue(localControlStream.releaseOutbound()); // settings

        controlStreamHandlerCtx = mock(ChannelHandlerContext.class);
        when(controlStreamHandlerCtx.channel()).thenReturn(localControlStream);
        connectionHandler.localControlStreamHandler.channelRead(controlStreamHandlerCtx,
                new DefaultHttp3SettingsFrame());
        manager = new Http3ServerPushStreamManager(channel);
    }

    @AfterEach
    public void tearDown() {
        assertFalse(localControlStream.finish());
        assertFalse(channel.finish());
    }

    @Test
    public void pushAllowed() throws Exception {
        assertFalse(manager.isPushAllowed());
        sendMaxPushId(1);
        assertTrue(manager.isPushAllowed());
    }

    @Test
    public void reserveWhenPushNotAllowed() {
        assertThrows(IllegalStateException.class, () -> manager.reserveNextPushId());
    }

    @Test
    public void reserveWhenPushAllowed() throws Exception {
        sendMaxPushId(2);
        assertEquals(0, manager.reserveNextPushId());
    }

    @Test
    public void reservesAfterRefreshMaxId() throws Exception {
        sendMaxPushId(0);
        assertEquals(0, manager.reserveNextPushId());
        assertFalse(manager.isPushAllowed());
        sendMaxPushId(1);
        assertEquals(1, manager.reserveNextPushId());
    }

    @Test
    public void pushStreamNoHandler() throws Exception {
        pushStreamCreateAndClose(pushId -> newPushStream(null, pushId));
    }

    @Test
    public void pushStreamWithHandler() throws Exception {
        final PushStreamListener pushStreamHandler = new PushStreamListener();
        pushStreamCreateAndClose(pushId -> newPushStream(pushStreamHandler, pushId));
        assertEquals(1, pushStreamHandler.framesWritten.size());

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free