QuicChannelDatagramTest Class — netty Architecture
Architecture documentation for the QuicChannelDatagramTest class in QuicChannelDatagramTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD bcae6038_b6d0_d9ad_8a13_ee2026092191["QuicChannelDatagramTest"] 3c6d3744_2a62_d9e9_97f5_821d38297a61["QuicChannelDatagramTest.java"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|defined in| 3c6d3744_2a62_d9e9_97f5_821d38297a61 3a83b5d6_0de9_bbb3_7f2b_627c9aa77770["testDatagramFlushInChannelRead()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| 3a83b5d6_0de9_bbb3_7f2b_627c9aa77770 aa1d315e_4c67_3437_5ca8_c05cba9b8d2f["testDatagramFlushInChannelReadComplete()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| aa1d315e_4c67_3437_5ca8_c05cba9b8d2f 8794c99c_91b0_9c0b_9804_1303ad10da01["testDatagram()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| 8794c99c_91b0_9c0b_9804_1303ad10da01 f0c29546_6ba5_20ac_1179_60b15eda445d["testDatagramNoAutoReadMaxMessagesPerRead1()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| f0c29546_6ba5_20ac_1179_60b15eda445d cb0b3850_abd7_d3fe_4436_80bc91a43738["testDatagramNoAutoReadMaxMessagesPerRead3()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| cb0b3850_abd7_d3fe_4436_80bc91a43738 a392d129_36c2_9118_c91c_b74daaed91b9["testDatagramNoAutoReadMaxMessagesPerRead1OutSideEventLoop()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| a392d129_36c2_9118_c91c_b74daaed91b9 35a3c3b9_7f71_ab7a_7691_6bb611ad978f["testDatagramNoAutoReadMaxMessagesPerRead3OutSideEventLoop()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| 35a3c3b9_7f71_ab7a_7691_6bb611ad978f 7c81fdec_3262_c605_8410_d9bd452a77be["testDatagramNoAutoRead()"] bcae6038_b6d0_d9ad_8a13_ee2026092191 -->|method| 7c81fdec_3262_c605_8410_d9bd452a77be
Relationship Graph
Source Code
codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java lines 43–306
public class QuicChannelDatagramTest extends AbstractQuicTest {
private static final Random random = new Random();
static final byte[] data = new byte[512];
static {
random.nextBytes(data);
}
@ParameterizedTest
@MethodSource("newSslTaskExecutors")
public void testDatagramFlushInChannelRead(Executor executor) throws Throwable {
testDatagram(executor, false);
}
@ParameterizedTest
@MethodSource("newSslTaskExecutors")
public void testDatagramFlushInChannelReadComplete(Executor executor) throws Throwable {
testDatagram(executor, true);
}
private void testDatagram(Executor executor, boolean flushInReadComplete) throws Throwable {
AtomicReference<QuicDatagramExtensionEvent> serverEventRef = new AtomicReference<>();
QuicChannelValidationHandler serverHandler = new QuicChannelValidationHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (msg instanceof ByteBuf) {
final ChannelFuture future;
if (!flushInReadComplete) {
future = ctx.writeAndFlush(msg);
} else {
future = ctx.write(msg);
}
future.addListener(ChannelFutureListener.CLOSE);
} else {
ctx.fireChannelRead(msg);
}
}
@Override
public void channelReadComplete(ChannelHandlerContext ctx) {
if (flushInReadComplete) {
ctx.flush();
}
}
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof QuicDatagramExtensionEvent) {
serverEventRef.set((QuicDatagramExtensionEvent) evt);
}
super.userEventTriggered(ctx, evt);
}
};
Channel server = QuicTestUtils.newServer(QuicTestUtils.newQuicServerBuilder(executor)
.datagram(10, 10),
InsecureQuicTokenHandler.INSTANCE, serverHandler , new ChannelInboundHandlerAdapter());
InetSocketAddress address = (InetSocketAddress) server.localAddress();
Promise<ByteBuf> receivedBuffer = ImmediateEventExecutor.INSTANCE.newPromise();
AtomicReference<QuicDatagramExtensionEvent> clientEventRef = new AtomicReference<>();
Channel channel = QuicTestUtils.newClient(QuicTestUtils.newQuicClientBuilder(executor)
.datagram(10, 10));
QuicChannelValidationHandler clientHandler = new QuicChannelValidationHandler() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
if (!receivedBuffer.trySuccess((ByteBuf) msg)) {
ReferenceCountUtil.release(msg);
}
}
@Override
public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
if (evt instanceof QuicDatagramExtensionEvent) {
clientEventRef.set((QuicDatagramExtensionEvent) evt);
}
super.userEventTriggered(ctx, evt);
}
Source
Frequently Asked Questions
What is the QuicChannelDatagramTest class?
QuicChannelDatagramTest is a class in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java.
Where is QuicChannelDatagramTest defined?
QuicChannelDatagramTest is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java at line 43.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free