Home / Class/ DefaultHttp2LocalFlowControllerTest Class — netty Architecture

DefaultHttp2LocalFlowControllerTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  99976e08_de48_4e06_40e5_5ee3655f2651["DefaultHttp2LocalFlowControllerTest"]
  dce67d90_3c67_fe4f_8802_b9b141ea9fa3["DefaultHttp2LocalFlowControllerTest.java"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|defined in| dce67d90_3c67_fe4f_8802_b9b141ea9fa3
  4fc25965_75b8_40fd_a008_02d1e1aa64ac["setup()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 4fc25965_75b8_40fd_a008_02d1e1aa64ac
  85225cb9_c138_e86d_cc82_c3d1e5f63b6e["setupChannelHandlerContext()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 85225cb9_c138_e86d_cc82_c3d1e5f63b6e
  5aff38b2_40bc_6844_1fa0_b57df87ed68a["dataFrameShouldBeAccepted()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 5aff38b2_40bc_6844_1fa0_b57df87ed68a
  99635301_4c38_7276_bb36_6c73dafd25ce["windowUpdateShouldSendOnceBytesReturned()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 99635301_4c38_7276_bb36_6c73dafd25ce
  53c661a9_b397_ab5e_f273_ccbf77df7a7f["connectionWindowShouldAutoRefillWhenDataReceived()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 53c661a9_b397_ab5e_f273_ccbf77df7a7f
  a6e69c6a_f0d6_5c19_5fff_46a6db44c81f["connectionFlowControlExceededShouldThrow()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| a6e69c6a_f0d6_5c19_5fff_46a6db44c81f
  1362230c_c862_4505_0a9a_f3c4adbe8ffd["windowUpdateShouldNotBeSentAfterEndOfStream()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 1362230c_c862_4505_0a9a_f3c4adbe8ffd
  e1530ef4_0426_81aa_f5bb_f85c171d2ab4["windowUpdateShouldNotBeSentAfterStreamIsClosedForUnconsumedBytes()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| e1530ef4_0426_81aa_f5bb_f85c171d2ab4
  d30d055f_dc68_84cc_1de8_cf0e2b2f50c6["windowUpdateShouldBeWrittenWhenStreamIsClosedAndFlushed()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| d30d055f_dc68_84cc_1de8_cf0e2b2f50c6
  dc643aa7_df2c_541d_5a2b_b96cf443cafd["halfWindowRemainingShouldUpdateAllWindows()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| dc643aa7_df2c_541d_5a2b_b96cf443cafd
  b039f836_1710_00f1_1aef_2e780ee02381["initialWindowUpdateShouldAllowMoreFrames()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| b039f836_1710_00f1_1aef_2e780ee02381
  f1878823_7e30_9415_37ae_9ab2d65269b9["connectionWindowShouldAdjustWithMultipleStreams()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| f1878823_7e30_9415_37ae_9ab2d65269b9
  10855148_04c1_12c7_7d16_bbef730c586b["closeShouldConsumeBytes()"]
  99976e08_de48_4e06_40e5_5ee3655f2651 -->|method| 10855148_04c1_12c7_7d16_bbef730c586b

Relationship Graph

Source Code

codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2LocalFlowControllerTest.java lines 53–460

public class DefaultHttp2LocalFlowControllerTest {
    private static final int STREAM_ID = 1;

    private DefaultHttp2LocalFlowController controller;

    @Mock
    private Http2FrameWriter frameWriter;

    @Mock
    private ChannelHandlerContext ctx;

    @Mock
    private EventExecutor executor;

    @Mock
    private ChannelPromise promise;

    private DefaultHttp2Connection connection;

    @BeforeEach
    public void setup() throws Http2Exception {
        MockitoAnnotations.initMocks(this);
        setupChannelHandlerContext(false);
        when(executor.inEventLoop()).thenReturn(true);

        initController(false);
    }

    private void setupChannelHandlerContext(boolean allowFlush) {
        reset(ctx);
        when(ctx.newPromise()).thenReturn(promise);
        if (allowFlush) {
            when(ctx.flush()).then(new Answer<ChannelHandlerContext>() {
                @Override
                public ChannelHandlerContext answer(InvocationOnMock invocationOnMock) {
                    return ctx;
                }
            });
        } else {
            when(ctx.flush()).then(new Answer<ChannelHandlerContext>() {
                @Override
                public ChannelHandlerContext answer(InvocationOnMock invocationOnMock) {
                    fail("forbidden");
                    return null;
                }
            });
        }
        when(ctx.executor()).thenReturn(executor);
    }

    @Test
    public void dataFrameShouldBeAccepted() throws Http2Exception {
        receiveFlowControlledFrame(STREAM_ID, 10, 0, false);
        verifyWindowUpdateNotSent();
    }

    @Test
    public void windowUpdateShouldSendOnceBytesReturned() throws Http2Exception {
        int dataSize = (int) (DEFAULT_WINDOW_SIZE * DEFAULT_WINDOW_UPDATE_RATIO) + 1;
        receiveFlowControlledFrame(STREAM_ID, dataSize, 0, false);

        // Return only a few bytes and verify that the WINDOW_UPDATE hasn't been sent.
        assertFalse(consumeBytes(STREAM_ID, 10));
        verifyWindowUpdateNotSent(STREAM_ID);
        verifyWindowUpdateNotSent(CONNECTION_STREAM_ID);

        // Return the rest and verify the WINDOW_UPDATE is sent.
        assertTrue(consumeBytes(STREAM_ID, dataSize - 10));
        verifyWindowUpdateSent(STREAM_ID, dataSize);
        verifyWindowUpdateSent(CONNECTION_STREAM_ID, dataSize);
        verifyNoMoreInteractions(frameWriter);
    }

    @Test
    public void connectionWindowShouldAutoRefillWhenDataReceived() throws Http2Exception {
        // Reconfigure controller to auto-refill the connection window.
        initController(true);

        int dataSize = (int) (DEFAULT_WINDOW_SIZE * DEFAULT_WINDOW_UPDATE_RATIO) + 1;
        receiveFlowControlledFrame(STREAM_ID, dataSize, 0, false);
        // Verify that we immediately refill the connection window.

Frequently Asked Questions

What is the DefaultHttp2LocalFlowControllerTest class?
DefaultHttp2LocalFlowControllerTest is a class in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2LocalFlowControllerTest.java.
Where is DefaultHttp2LocalFlowControllerTest defined?
DefaultHttp2LocalFlowControllerTest is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2LocalFlowControllerTest.java at line 53.

Analyze Your Own Codebase

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

Try Supermodel Free