Home / Class/ SubmissionQueueTest Class — netty Architecture

SubmissionQueueTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  fd25db8c_3569_d733_e052_a05bfd7b5f45["SubmissionQueueTest"]
  717c855d_9e4a_fd30_84d3_a9f0a3b18918["SubmissionQueueTest.java"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|defined in| 717c855d_9e4a_fd30_84d3_a9f0a3b18918
  17383a68_5782_2246_f3af_46027a688b49["loadJNI()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| 17383a68_5782_2246_f3af_46027a688b49
  c041be58_0f6f_6aa8_a460_e5c73557230f["sqeFullTest()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| c041be58_0f6f_6aa8_a460_e5c73557230f
  21af7db7_3589_491f_2d40_f2ac746a1a06["useAfterClose()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| 21af7db7_3589_491f_2d40_f2ac746a1a06
  c8a87734_2b6f_4c17_999d_32433d5239f9["testSetUpCqSize()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| c8a87734_2b6f_4c17_999d_32433d5239f9
  d182d7a1_1b2f_daa1_0533_e1b4dc52e945["testCqOverflow()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| d182d7a1_1b2f_daa1_0533_e1b4dc52e945
  98eb93bf_3cff_a893_419a_4185e9b100ec["setUpCQSizeUnavailable()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| 98eb93bf_3cff_a893_419a_4185e9b100ec
  202dd548_211a_4f05_5f60_16aedb0005d6["testIoUringProbeSupported()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| 202dd548_211a_4f05_5f60_16aedb0005d6
  bf38fac6_f98c_503c_0b38_3878bc10d3a0["testCqe()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| bf38fac6_f98c_503c_0b38_3878bc10d3a0
  20ef5255_b2ac_30b9_f60c_9c9af686fa7e["testMixedCqe()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| 20ef5255_b2ac_30b9_f60c_9c9af686fa7e
  53b96c7d_bf97_8154_a456_2c52ae950479["testGetOp()"]
  fd25db8c_3569_d733_e052_a05bfd7b5f45 -->|method| 53b96c7d_bf97_8154_a456_2c52ae950479

Relationship Graph

Source Code

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

public class SubmissionQueueTest {

    @BeforeAll
    public static void loadJNI() {
        assumeTrue(IoUring.isAvailable());
    }

    @Test
    public void sqeFullTest() {
        RingBuffer ringBuffer = Native.createRingBuffer(8, 0);
        ringBuffer.enable();
        try {
            SubmissionQueue submissionQueue = ringBuffer.ioUringSubmissionQueue();
            final CompletionQueue completionQueue = ringBuffer.ioUringCompletionQueue();

            assertNotNull(ringBuffer);
            assertNotNull(submissionQueue);
            assertNotNull(completionQueue);

            int counter = 0;
            while (submissionQueue.remaining() > 0) {
                assertThat(submissionQueue.addNop((byte) 0, 1)).isNotZero();
                counter++;
            }
            assertEquals(8, counter);
            assertEquals(8, submissionQueue.count());
            assertThat(submissionQueue.addNop((byte) 0, 1)).isNotZero();
            assertEquals(1, submissionQueue.count());
            submissionQueue.submitAndGet();
            assertEquals(9, completionQueue.count());
        } finally {
            ringBuffer.close();
        }
    }

    @Test
    public void useAfterClose() {
        RingBuffer ringBuffer = Native.createRingBuffer(8, 0);
        ringBuffer.enable();
        ringBuffer.close();

        SubmissionQueue submissionQueue = ringBuffer.ioUringSubmissionQueue();
        final CompletionQueue completionQueue = ringBuffer.ioUringCompletionQueue();

        assertNotNull(ringBuffer);
        assertNotNull(submissionQueue);
        assertNotNull(completionQueue);

        assertThrows(IllegalStateException.class, () -> submissionQueue.addNop((byte) 0, 1));
        assertThrows(IllegalStateException.class, submissionQueue::tryRegisterRingFd);
        assertThrows(IllegalStateException.class, submissionQueue::submit);
        assertThrows(IllegalStateException.class, submissionQueue::submitAndGet);

        assertEquals(0, completionQueue.count());
        assertFalse(completionQueue.hasCompletions());
        assertEquals(0, completionQueue.process((res, flags, data, cqeExtraData) -> {
            fail("Should not be called");
        }));

        // Ensure both return not null and also not segfault.
        assertNotNull(submissionQueue.toString());
        assertNotNull(completionQueue.toString());
    }

    @Test
    @DisabledIf("setUpCQSizeUnavailable")
    public void testSetUpCqSize() {
        int cqSize = 8;
        RingBuffer ringBuffer = Native.createRingBuffer(2, cqSize, Native.IORING_SETUP_CQSIZE);
        try {
            assertNotNull(ringBuffer);
            ringBuffer.enable();
            assertEquals(cqSize, ringBuffer.ioUringCompletionQueue().ringEntries);

            int count = cqSize;

            while (count > 0) {
                assertThat(ringBuffer.ioUringSubmissionQueue().addNop((byte) 0, 1)).isNotZero();
                count--;
                if (ringBuffer.ioUringSubmissionQueue().remaining() == 0) {
                    ringBuffer.ioUringSubmissionQueue().submitAndGet();

Frequently Asked Questions

What is the SubmissionQueueTest class?
SubmissionQueueTest is a class in the netty codebase, defined in transport-native-io_uring/src/test/java/io/netty/channel/uring/SubmissionQueueTest.java.
Where is SubmissionQueueTest defined?
SubmissionQueueTest is defined in transport-native-io_uring/src/test/java/io/netty/channel/uring/SubmissionQueueTest.java at line 37.

Analyze Your Own Codebase

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

Try Supermodel Free