Home / Function/ circularDependencyWithExclusiveShouldRestructureTree() — netty Function Reference

circularDependencyWithExclusiveShouldRestructureTree() — netty Function Reference

Architecture documentation for the circularDependencyWithExclusiveShouldRestructureTree() function in WeightedFairQueueByteDistributorDependencyTreeTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  393e66b7_9aed_54f6_e11a_ecd8afc25979["circularDependencyWithExclusiveShouldRestructureTree()"]
  f59fdba5_c411_919e_8d09_ef11c6679e0d["WeightedFairQueueByteDistributorDependencyTreeTest"]
  393e66b7_9aed_54f6_e11a_ecd8afc25979 -->|defined in| f59fdba5_c411_919e_8d09_ef11c6679e0d
  style 393e66b7_9aed_54f6_e11a_ecd8afc25979 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-http2/src/test/java/io/netty/handler/codec/http2/WeightedFairQueueByteDistributorDependencyTreeTest.java lines 871–945

    @Test
    public void circularDependencyWithExclusiveShouldRestructureTree() throws Exception {
        // Using example from https://tools.ietf.org/html/rfc7540#section-5.3.3
        // Initialize all the nodes
        Http2Stream streamA = connection.local().createStream(1, false);
        Http2Stream streamB = connection.local().createStream(3, false);
        Http2Stream streamC = connection.local().createStream(5, false);
        Http2Stream streamD = connection.local().createStream(7, false);
        Http2Stream streamE = connection.local().createStream(9, false);
        Http2Stream streamF = connection.local().createStream(11, false);

        assertEquals(6, distributor.numChildren(connection.connectionStream().id()));
        assertEquals(0, distributor.numChildren(streamA.id()));
        assertEquals(0, distributor.numChildren(streamB.id()));
        assertEquals(0, distributor.numChildren(streamC.id()));
        assertEquals(0, distributor.numChildren(streamD.id()));
        assertEquals(0, distributor.numChildren(streamE.id()));
        assertEquals(0, distributor.numChildren(streamF.id()));

        // Build the tree
        setPriority(streamB.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT, false);
        assertEquals(5, distributor.numChildren(connection.connectionStream().id()));
        assertTrue(distributor.isChild(streamB.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(1, distributor.numChildren(streamA.id()));

        setPriority(streamC.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT, false);
        assertEquals(4, distributor.numChildren(connection.connectionStream().id()));
        assertTrue(distributor.isChild(streamC.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(2, distributor.numChildren(streamA.id()));

        setPriority(streamD.id(), streamC.id(), DEFAULT_PRIORITY_WEIGHT, false);
        assertEquals(3, distributor.numChildren(connection.connectionStream().id()));
        assertTrue(distributor.isChild(streamD.id(), streamC.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(1, distributor.numChildren(streamC.id()));

        setPriority(streamE.id(), streamC.id(), DEFAULT_PRIORITY_WEIGHT, false);
        assertEquals(2, distributor.numChildren(connection.connectionStream().id()));
        assertTrue(distributor.isChild(streamE.id(), streamC.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(2, distributor.numChildren(streamC.id()));

        setPriority(streamF.id(), streamD.id(), DEFAULT_PRIORITY_WEIGHT, false);
        assertEquals(1, distributor.numChildren(connection.connectionStream().id()));
        assertTrue(distributor.isChild(streamF.id(), streamD.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(1, distributor.numChildren(streamD.id()));

        assertEquals(6, connection.numActiveStreams());

        // Exclusive re-prioritization of a->d.
        setPriority(streamA.id(), streamD.id(), DEFAULT_PRIORITY_WEIGHT, true);

        // Level 0
        assertEquals(1, distributor.numChildren(connection.connectionStream().id()));

        // Level 1
        assertTrue(distributor.isChild(streamD.id(), connection.connectionStream().id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(1, distributor.numChildren(streamD.id()));

        // Level 2
        assertTrue(distributor.isChild(streamA.id(), streamD.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(3, distributor.numChildren(streamA.id()));

        // Level 3
        assertTrue(distributor.isChild(streamB.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(0, distributor.numChildren(streamB.id()));

        assertTrue(distributor.isChild(streamF.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(0, distributor.numChildren(streamF.id()));

        assertTrue(distributor.isChild(streamC.id(), streamA.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(1, distributor.numChildren(streamC.id()));

        // Level 4;
        assertTrue(distributor.isChild(streamE.id(), streamC.id(), DEFAULT_PRIORITY_WEIGHT));
        assertEquals(0, distributor.numChildren(streamE.id()));
    }

Domain

Subdomains

Frequently Asked Questions

What does circularDependencyWithExclusiveShouldRestructureTree() do?
circularDependencyWithExclusiveShouldRestructureTree() is a function in the netty codebase, defined in codec-http2/src/test/java/io/netty/handler/codec/http2/WeightedFairQueueByteDistributorDependencyTreeTest.java.
Where is circularDependencyWithExclusiveShouldRestructureTree() defined?
circularDependencyWithExclusiveShouldRestructureTree() is defined in codec-http2/src/test/java/io/netty/handler/codec/http2/WeightedFairQueueByteDistributorDependencyTreeTest.java at line 871.

Analyze Your Own Codebase

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

Try Supermodel Free