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.
Defined In
Source
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