Home / Function/ testDatagram() — netty Function Reference

testDatagram() — netty Function Reference

Architecture documentation for the testDatagram() function in QuicChannelDatagramTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  8794c99c_91b0_9c0b_9804_1303ad10da01["testDatagram()"]
  bcae6038_b6d0_d9ad_8a13_ee2026092191["QuicChannelDatagramTest"]
  8794c99c_91b0_9c0b_9804_1303ad10da01 -->|defined in| bcae6038_b6d0_d9ad_8a13_ee2026092191
  3a83b5d6_0de9_bbb3_7f2b_627c9aa77770["testDatagramFlushInChannelRead()"]
  3a83b5d6_0de9_bbb3_7f2b_627c9aa77770 -->|calls| 8794c99c_91b0_9c0b_9804_1303ad10da01
  aa1d315e_4c67_3437_5ca8_c05cba9b8d2f["testDatagramFlushInChannelReadComplete()"]
  aa1d315e_4c67_3437_5ca8_c05cba9b8d2f -->|calls| 8794c99c_91b0_9c0b_9804_1303ad10da01
  style 8794c99c_91b0_9c0b_9804_1303ad10da01 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java lines 64–160

    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);
            }

            @Override
            public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
                receivedBuffer.tryFailure(cause);
                super.exceptionCaught(ctx, cause);
            }
        };

        try {
            QuicChannel quicChannel = QuicTestUtils.newQuicChannelBootstrap(channel)
                    .handler(clientHandler)
                    .remoteAddress(address)
                    .connect()
                    .get();
            quicChannel.writeAndFlush(Unpooled.copiedBuffer(data)).sync();

            ByteBuf buffer = receivedBuffer.get();
            ByteBuf expected = Unpooled.wrappedBuffer(data);
            assertEquals(expected, buffer);
            buffer.release();
            expected.release();

Domain

Subdomains

Frequently Asked Questions

What does testDatagram() do?
testDatagram() is a function in the netty codebase, defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java.
Where is testDatagram() defined?
testDatagram() is defined in codec-native-quic/src/test/java/io/netty/handler/codec/quic/QuicChannelDatagramTest.java at line 64.
What calls testDatagram()?
testDatagram() is called by 2 function(s): testDatagramFlushInChannelRead, testDatagramFlushInChannelReadComplete.

Analyze Your Own Codebase

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

Try Supermodel Free