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();
Source
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