negativeWindowShouldNotThrowException() — netty Function Reference
Architecture documentation for the negativeWindowShouldNotThrowException() function in DefaultHttp2RemoteFlowControllerTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD bdbd752a_96ca_92fb_7341_a4ddb7b401e6["negativeWindowShouldNotThrowException()"] f8fd7697_92d4_6455_4dd8_09a33ac81a6f["DefaultHttp2RemoteFlowControllerTest"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|defined in| f8fd7697_92d4_6455_4dd8_09a33ac81a6f 90444244_2b60_c843_559a_6c55d7a4e9ac["assertWritabilityChanged()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| 90444244_2b60_c843_559a_6c55d7a4e9ac 136071dd_c92e_5482_7cb2_c1ba0769c1ab["FakeFlowControlled()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| 136071dd_c92e_5482_7cb2_c1ba0769c1ab 85ffafbd_47aa_f4f5_fd02_71f26d692e10["sendData()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| 85ffafbd_47aa_f4f5_fd02_71f26d692e10 da0712d5_2b96_e340_6c7a_17114adb9efc["assertFullyWritten()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| da0712d5_2b96_e340_6c7a_17114adb9efc 72f6527f_6737_5bc4_f643_b308fe4de273["window()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| 72f6527f_6737_5bc4_f643_b308fe4de273 4d627b61_f0ea_0927_043f_7bfb246d71d1["assertNotWritten()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| 4d627b61_f0ea_0927_043f_7bfb246d71d1 947caffb_54ef_9984_108e_69119ef018d1["incrementWindowSize()"] bdbd752a_96ca_92fb_7341_a4ddb7b401e6 -->|calls| 947caffb_54ef_9984_108e_69119ef018d1 style bdbd752a_96ca_92fb_7341_a4ddb7b401e6 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2RemoteFlowControllerTest.java lines 388–483
@Test
public void negativeWindowShouldNotThrowException() throws Http2Exception {
final int initWindow = 20;
final int secondWindowSize = 10;
controller.initialWindowSize(initWindow);
assertWritabilityChanged(0, true);
reset(listener);
FakeFlowControlled data1 = new FakeFlowControlled(initWindow);
FakeFlowControlled data2 = new FakeFlowControlled(5);
// Deplete the stream A window to 0
sendData(STREAM_A, data1);
controller.writePendingBytes();
data1.assertFullyWritten();
assertTrue(window(CONNECTION_STREAM_ID) > 0);
verify(listener, times(1)).writabilityChanged(stream(STREAM_A));
verify(listener, never()).writabilityChanged(stream(STREAM_B));
verify(listener, never()).writabilityChanged(stream(STREAM_C));
verify(listener, never()).writabilityChanged(stream(STREAM_D));
assertFalse(controller.isWritable(stream(STREAM_A)));
assertTrue(controller.isWritable(stream(STREAM_B)));
assertTrue(controller.isWritable(stream(STREAM_C)));
assertTrue(controller.isWritable(stream(STREAM_D)));
reset(listener);
// Make the window size for stream A negative
controller.initialWindowSize(initWindow - secondWindowSize);
assertEquals(-secondWindowSize, window(STREAM_A));
verify(listener, never()).writabilityChanged(stream(STREAM_A));
verify(listener, never()).writabilityChanged(stream(STREAM_B));
verify(listener, never()).writabilityChanged(stream(STREAM_C));
verify(listener, never()).writabilityChanged(stream(STREAM_D));
assertFalse(controller.isWritable(stream(STREAM_A)));
assertTrue(controller.isWritable(stream(STREAM_B)));
assertTrue(controller.isWritable(stream(STREAM_C)));
assertTrue(controller.isWritable(stream(STREAM_D)));
reset(listener);
// Queue up a write. It should not be written now because the window is negative
sendData(STREAM_A, data2);
controller.writePendingBytes();
data2.assertNotWritten();
verify(listener, never()).writabilityChanged(stream(STREAM_A));
verify(listener, never()).writabilityChanged(stream(STREAM_B));
verify(listener, never()).writabilityChanged(stream(STREAM_C));
verify(listener, never()).writabilityChanged(stream(STREAM_D));
assertFalse(controller.isWritable(stream(STREAM_A)));
assertTrue(controller.isWritable(stream(STREAM_B)));
assertTrue(controller.isWritable(stream(STREAM_C)));
assertTrue(controller.isWritable(stream(STREAM_D)));
reset(listener);
// Open the window size back up a bit (no send should happen)
incrementWindowSize(STREAM_A, 5);
controller.writePendingBytes();
assertEquals(-5, window(STREAM_A));
data2.assertNotWritten();
verify(listener, never()).writabilityChanged(stream(STREAM_A));
verify(listener, never()).writabilityChanged(stream(STREAM_B));
verify(listener, never()).writabilityChanged(stream(STREAM_C));
verify(listener, never()).writabilityChanged(stream(STREAM_D));
assertFalse(controller.isWritable(stream(STREAM_A)));
assertTrue(controller.isWritable(stream(STREAM_B)));
assertTrue(controller.isWritable(stream(STREAM_C)));
assertTrue(controller.isWritable(stream(STREAM_D)));
reset(listener);
// Open the window size back up a bit (no send should happen)
incrementWindowSize(STREAM_A, 5);
controller.writePendingBytes();
assertEquals(0, window(STREAM_A));
data2.assertNotWritten();
verify(listener, never()).writabilityChanged(stream(STREAM_A));
verify(listener, never()).writabilityChanged(stream(STREAM_B));
verify(listener, never()).writabilityChanged(stream(STREAM_C));
verify(listener, never()).writabilityChanged(stream(STREAM_D));
assertFalse(controller.isWritable(stream(STREAM_A)));
assertTrue(controller.isWritable(stream(STREAM_B)));
assertTrue(controller.isWritable(stream(STREAM_C)));
assertTrue(controller.isWritable(stream(STREAM_D)));
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does negativeWindowShouldNotThrowException() do?
negativeWindowShouldNotThrowException() is a function in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2RemoteFlowControllerTest.java.
Where is negativeWindowShouldNotThrowException() defined?
negativeWindowShouldNotThrowException() is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/DefaultHttp2RemoteFlowControllerTest.java at line 388.
What does negativeWindowShouldNotThrowException() call?
negativeWindowShouldNotThrowException() calls 7 function(s): FakeFlowControlled, assertFullyWritten, assertNotWritten, assertWritabilityChanged, incrementWindowSize, sendData, window.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free