IoUringBufferRingTest Class — netty Architecture
Architecture documentation for the IoUringBufferRingTest class in IoUringBufferRingTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD d2c51010_6ec0_7e8f_47d3_2646c5769913["IoUringBufferRingTest"] 2c43b1a8_767c_ec30_587e_efa9a1ca3aea["IoUringBufferRingTest.java"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|defined in| 2c43b1a8_767c_ec30_587e_efa9a1ca3aea fd132d50_4688_6de2_32dd_8cc1987fa8f4["loadJNI()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| fd132d50_4688_6de2_32dd_8cc1987fa8f4 c788d603_3b21_63e3_6c6d_bbc6fb839f95["testRegister()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| c788d603_3b21_63e3_6c6d_bbc6fb839f95 af73385f_80ca_e32a_d08a_f18c6d2e391c["ByteBuf()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| af73385f_80ca_e32a_d08a_f18c6d2e391c f8d5e14e_90bc_29e8_1896_4012995c3743["testProviderBufferRead()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| f8d5e14e_90bc_29e8_1896_4012995c3743 b33cd587_3ec4_dac6_7ee2_bd6de83bf125["recvsendBundleEnabled()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| b33cd587_3ec4_dac6_7ee2_bd6de83bf125 369bda88_bf7f_5238_bc6c_456af4f76039["testProviderBufferReadWithRecvsendBundle()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| 369bda88_bf7f_5238_bc6c_456af4f76039 b32f1401_36aa_7bfe_a47f_20c524820ad0["testCloseEventLoopGroupWhileConnected()"] d2c51010_6ec0_7e8f_47d3_2646c5769913 -->|method| b32f1401_36aa_7bfe_a47f_20c524820ad0
Relationship Graph
Source Code
transport-native-io_uring/src/test/java/io/netty/channel/uring/IoUringBufferRingTest.java lines 47–300
public class IoUringBufferRingTest {
@BeforeAll
public static void loadJNI() {
assumeTrue(IoUring.isAvailable());
assumeTrue(IoUring.isRegisterBufferRingSupported());
}
@Test
public void testRegister() {
// using cqeSize on purpose NOT a power of 2
RingBuffer ringBuffer = Native.createRingBuffer(8, 15, 0);
try {
int ringFd = ringBuffer.fd();
long ioUringBufRingAddr = Native.ioUringRegisterBufRing(ringFd, 4, (short) 1, 0);
assumeTrue(
ioUringBufRingAddr > 0,
"ioUringSetupBufRing result must great than 0, but now result is " + ioUringBufRingAddr);
int freeRes = Native.ioUringUnRegisterBufRing(ringFd, ioUringBufRingAddr, 4, (short) 1);
assertEquals(
0,
freeRes,
"ioUringFreeBufRing result must be 0, but now result is " + freeRes
);
// let io_uring to "fix" it
assertEquals(16, ringBuffer.ioUringCompletionQueue().ringCapacity);
} finally {
ringBuffer.close();
}
}
private static ByteBuf unwrapLeakAware(ByteBuf buf) {
// If its a sub-type of WrappedByteBuf we know its because it was wrapped for leak-detection.
if (buf instanceof WrappedByteBuf) {
return buf.unwrap();
}
return buf;
}
@ParameterizedTest
@ValueSource(booleans = {true, false})
public void testProviderBufferRead(boolean incremental) throws InterruptedException {
if (incremental) {
assumeTrue(IoUring.isRegisterBufferRingIncSupported());
}
final BlockingQueue<ByteBuf> bufferSyncer = new LinkedBlockingQueue<>();
IoUringIoHandlerConfig ioUringIoHandlerConfiguration = new IoUringIoHandlerConfig();
IoUringBufferRingConfig bufferRingConfig =
IoUringBufferRingConfig.builder()
.bufferGroupId((short) 1)
.bufferRingSize((short) 2)
.batchSize(2).incremental(incremental)
.allocator(new IoUringFixedBufferRingAllocator(1024))
.batchAllocation(false)
.build();
IoUringBufferRingConfig bufferRingConfig1 =
IoUringBufferRingConfig.builder()
.bufferGroupId((short) 2)
.bufferRingSize((short) 16)
.batchSize(8)
.incremental(incremental)
.allocator(new IoUringFixedBufferRingAllocator(1024))
.batchAllocation(true)
.build();
ioUringIoHandlerConfiguration.setBufferRingConfig(bufferRingConfig, bufferRingConfig1);
MultiThreadIoEventLoopGroup group = new MultiThreadIoEventLoopGroup(1,
IoUringIoHandler.newFactory(ioUringIoHandlerConfiguration)
);
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.channel(IoUringServerSocketChannel.class);
String randomString = UUID.randomUUID().toString();
int randomStringLength = randomString.length();
ArrayBlockingQueue<IoUringBufferRingExhaustedEvent> eventSyncer = new ArrayBlockingQueue<>(1);
Channel serverChannel = serverBootstrap.group(group)
.childHandler(new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
Defined In
Source
Frequently Asked Questions
What is the IoUringBufferRingTest class?
IoUringBufferRingTest is a class in the netty codebase, defined in transport-native-io_uring/src/test/java/io/netty/channel/uring/IoUringBufferRingTest.java.
Where is IoUringBufferRingTest defined?
IoUringBufferRingTest is defined in transport-native-io_uring/src/test/java/io/netty/channel/uring/IoUringBufferRingTest.java at line 47.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free