Home / Class/ UniformStreamByteDistributorTest Class — netty Architecture

UniformStreamByteDistributorTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f["UniformStreamByteDistributorTest"]
  b551e995_3bb4_97d0_306f_77db1ac4ec9b["UniformStreamByteDistributorTest.java"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|defined in| b551e995_3bb4_97d0_306f_77db1ac4ec9b
  75849638_989f_655e_1d7d_dc8477e8c8f6["setup()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 75849638_989f_655e_1d7d_dc8477e8c8f6
  f3a4b43c_babc_6924_8349_fb09a2a08e04["writeAnswer()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| f3a4b43c_babc_6924_8349_fb09a2a08e04
  ba51586b_9db8_a3bc_5389_8ae4d02826b8["resetWriter()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| ba51586b_9db8_a3bc_5389_8ae4d02826b8
  59498931_38a4_a9e5_5599_b47a54ba0e4b["bytesUnassignedAfterProcessing()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 59498931_38a4_a9e5_5599_b47a54ba0e4b
  05bc5ac6_f8e9_6aad_fa1a_e73aa259238b["connectionErrorForWriterException()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 05bc5ac6_f8e9_6aad_fa1a_e73aa259238b
  1bcd0e0b_21ac_c26f_1eac_6781515ba458["minChunkShouldBeAllocatedPerStream()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 1bcd0e0b_21ac_c26f_1eac_6781515ba458
  688b36ee_81a1_a272_d4d6_a5f1285683d5["streamWithMoreDataShouldBeEnqueuedAfterWrite()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 688b36ee_81a1_a272_d4d6_a5f1285683d5
  c33847f9_9ef5_0cd4_37aa_1d872cf264f5["emptyFrameAtHeadIsWritten()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| c33847f9_9ef5_0cd4_37aa_1d872cf264f5
  529feccb_987c_8256_b2b2_8dab7663329c["streamWindowExhaustedDoesNotWrite()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 529feccb_987c_8256_b2b2_8dab7663329c
  092a439a_75a5_e1e7_edc5_9fbfef4a563b["streamWindowLargerThanIntDoesNotInfiniteLoop()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 092a439a_75a5_e1e7_edc5_9fbfef4a563b
  f9b03365_76c3_1df2_8b84_ffd7aa5b8633["Http2Stream()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| f9b03365_76c3_1df2_8b84_ffd7aa5b8633
  874cc0a8_d364_ef65_d3c3_16d61b243e73["initState()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| 874cc0a8_d364_ef65_d3c3_16d61b243e73
  a6c2aca6_aa8e_1f2c_221a_88b9bd0bd852["setPriority()"]
  c9ed8a9b_20d0_d85d_3ba2_4bce8a2cb72f -->|method| a6c2aca6_aa8e_1f2c_221a_88b9bd0bd852

Relationship Graph

Source Code

codec-http2/src/test/java/io/netty/handler/codec/http2/UniformStreamByteDistributorTest.java lines 52–283

public class UniformStreamByteDistributorTest {
    private static final int CHUNK_SIZE = DEFAULT_MIN_ALLOCATION_CHUNK;

    private static final int STREAM_A = 1;
    private static final int STREAM_B = 3;
    private static final int STREAM_C = 5;
    private static final int STREAM_D = 7;

    private Http2Connection connection;
    private UniformStreamByteDistributor distributor;
    private IntObjectMap<TestStreamByteDistributorStreamState> stateMap;

    @Mock
    private StreamByteDistributor.Writer writer;

    @BeforeEach
    public void setup() throws Http2Exception {
        MockitoAnnotations.initMocks(this);

        stateMap = new IntObjectHashMap<TestStreamByteDistributorStreamState>();
        connection = new DefaultHttp2Connection(false);
        distributor = new UniformStreamByteDistributor(connection);

        // Assume we always write all the allocated bytes.
        resetWriter();

        connection.local().createStream(STREAM_A, false);
        connection.local().createStream(STREAM_B, false);
        Http2Stream streamC = connection.local().createStream(STREAM_C, false);
        Http2Stream streamD = connection.local().createStream(STREAM_D, false);
        setPriority(streamC.id(), STREAM_A, DEFAULT_PRIORITY_WEIGHT, false);
        setPriority(streamD.id(), STREAM_A, DEFAULT_PRIORITY_WEIGHT, false);
    }

    private Answer<Void> writeAnswer() {
        return new Answer<Void>() {
            @Override
            public Void answer(InvocationOnMock in) throws Throwable {
                Http2Stream stream = in.getArgument(0);
                int numBytes = in.getArgument(1);
                TestStreamByteDistributorStreamState state = stateMap.get(stream.id());
                state.pendingBytes -= numBytes;
                state.hasFrame = state.pendingBytes > 0;
                distributor.updateStreamableBytes(state);
                return null;
            }
        };
    }

    private void resetWriter() {
        reset(writer);
        doAnswer(writeAnswer()).when(writer).write(any(Http2Stream.class), anyInt());
    }

    @Test
    public void bytesUnassignedAfterProcessing() throws Http2Exception {
        initState(STREAM_A, 1, true);
        initState(STREAM_B, 2, true);
        initState(STREAM_C, 3, true);
        initState(STREAM_D, 4, true);

        assertFalse(write(10));
        verifyWrite(STREAM_A, 1);
        verifyWrite(STREAM_B, 2);
        verifyWrite(STREAM_C, 3);
        verifyWrite(STREAM_D, 4);
        verifyNoMoreInteractions(writer);

        assertFalse(write(10));
        verifyNoMoreInteractions(writer);
    }

    @Test
    public void connectionErrorForWriterException() throws Http2Exception {
        initState(STREAM_A, 1, true);
        initState(STREAM_B, 2, true);
        initState(STREAM_C, 3, true);
        initState(STREAM_D, 4, true);

        Exception fakeException = new RuntimeException("Fake exception");
        doThrow(fakeException).when(writer).write(same(stream(STREAM_C)), eq(3));

Frequently Asked Questions

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

Analyze Your Own Codebase

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

Try Supermodel Free