Home / Function/ testCqOverflow() — netty Function Reference

testCqOverflow() — netty Function Reference

Architecture documentation for the testCqOverflow() function in SubmissionQueueTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  d182d7a1_1b2f_daa1_0533_e1b4dc52e945["testCqOverflow()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45["SubmissionQueueTest"]
  d182d7a1_1b2f_daa1_0533_e1b4dc52e945 -->|defined in| fd25db8c_3569_d733_e052_a05bfd7b5f45
  style d182d7a1_1b2f_daa1_0533_e1b4dc52e945 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

transport-native-io_uring/src/test/java/io/netty/channel/uring/SubmissionQueueTest.java lines 128–165

    @Test
    @DisabledIf("setUpCQSizeUnavailable")
    public void testCqOverflow() {
        int cqSize = 2;
        RingBuffer ringBuffer = Native.createRingBuffer(2, cqSize, Native.IORING_SETUP_CQSIZE);
        try {
            assertNotNull(ringBuffer);
            ringBuffer.enable();
            assertNotEquals(0, ringBuffer.features() & Native.IORING_FEAT_NODROP);

            CompletionQueue completionQueue = ringBuffer.ioUringCompletionQueue();
            assertEquals(cqSize, completionQueue.ringEntries);

            SubmissionQueue submissionQueue = ringBuffer.ioUringSubmissionQueue();
            assertThat(submissionQueue.addNop((byte) 0, 1)).isNotZero();
            assertThat(submissionQueue.addNop((byte) 0, 1)).isNotZero();
            submissionQueue.submitAndGet();
            assertEquals(0, submissionQueue.flags() & Native.IORING_SQ_CQ_OVERFLOW);

            assertThat(submissionQueue.addNop((byte) 0, 1)).isNotZero();
            submissionQueue.submitAndGet();
            assertNotEquals(0, ringBuffer.ioUringSubmissionQueue().flags() & Native.IORING_SQ_CQ_OVERFLOW);

            // The completion queue should have only had space for 2 events
            int processed = completionQueue.process((res, flags, udata, extraCqeData) -> { });
            assertEquals(2, processed);

            // submit again to ensure we flush the event that did overflow
            submissionQueue.submitAndGetNow();
            processed = completionQueue.process((res, flags, udata, extraCqeData) -> { });
            assertEquals(1, processed);

            // Everything was processed and so the overflow flag should have been cleared
            assertEquals(0, submissionQueue.flags() & Native.IORING_SQ_CQ_OVERFLOW);
        } finally {
            ringBuffer.close();
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does testCqOverflow() do?
testCqOverflow() is a function in the netty codebase, defined in transport-native-io_uring/src/test/java/io/netty/channel/uring/SubmissionQueueTest.java.
Where is testCqOverflow() defined?
testCqOverflow() is defined in transport-native-io_uring/src/test/java/io/netty/channel/uring/SubmissionQueueTest.java at line 128.

Analyze Your Own Codebase

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

Try Supermodel Free