Home / Function/ negativeWindowShouldNotThrowException() — netty Function Reference

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

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