Home / Function/ testWriteExceptionAfterServerStop() — netty Function Reference

testWriteExceptionAfterServerStop() — netty Function Reference

Architecture documentation for the testWriteExceptionAfterServerStop() function in DatagramConnectedWriteExceptionTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  7c82fbfb_230e_b60e_9bea_a9c5a458f583["testWriteExceptionAfterServerStop()"]
  5f881dbc_d5ec_8d0c_c925_038dbabd44d6["DatagramConnectedWriteExceptionTest"]
  7c82fbfb_230e_b60e_9bea_a9c5a458f583 -->|defined in| 5f881dbc_d5ec_8d0c_c925_038dbabd44d6
  style 7c82fbfb_230e_b60e_9bea_a9c5a458f583 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

testsuite/src/main/java/io/netty/testsuite/transport/socket/DatagramConnectedWriteExceptionTest.java lines 60–127

    protected void testWriteExceptionAfterServerStop(Bootstrap clientBootstrap) throws Throwable {
        CountDownLatch serverReceivedLatch = new CountDownLatch(1);
        Bootstrap serverBootstrap = clientBootstrap.clone()
                .option(ChannelOption.SO_BROADCAST, false)
                .handler(new SimpleChannelInboundHandler<DatagramPacket>() {

                    @Override
                    protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) {
                        serverReceivedLatch.countDown();
                    }
                });

        Channel serverChannel = serverBootstrap.bind(new InetSocketAddress(NetUtil.LOCALHOST, 0)).sync().channel();
        InetSocketAddress serverAddress = (InetSocketAddress) serverChannel.localAddress();

        clientBootstrap.option(ChannelOption.AUTO_READ, false)
                .handler(new SimpleChannelInboundHandler<DatagramPacket>() {

                    @Override
                    protected void channelRead0(ChannelHandlerContext ctx, DatagramPacket msg) {
                        // no-op
                    }
                });

        Channel clientChannel = clientBootstrap.connect(serverAddress).sync().channel();

        CountDownLatch clientFirstSendLatch = new CountDownLatch(1);
        try {
            ByteBuf firstMessage = Unpooled.wrappedBuffer("First message".getBytes(CharsetUtil.UTF_8));
            clientChannel.writeAndFlush(firstMessage)
                    .addListener(future -> {
                        if (future.isSuccess()) {
                            clientFirstSendLatch.countDown();
                        }
                    });

            assertTrue(serverReceivedLatch.await(5, TimeUnit.SECONDS), "Server should receive first message");
            assertTrue(clientFirstSendLatch.await(5, TimeUnit.SECONDS), "Client should send first message");

            serverChannel.close().sync();

            AtomicReference<Throwable> writeException = new AtomicReference<>();
            CountDownLatch writesCompleteLatch = new CountDownLatch(10);

            for (int i = 0; i < 10; i++) {
                ByteBuf message = Unpooled.wrappedBuffer(("Message " + i).getBytes(CharsetUtil.UTF_8));
                clientChannel.writeAndFlush(message)
                        .addListener(future -> {
                            if (!future.isSuccess()) {
                                writeException.compareAndSet(null, future.cause());
                            }
                            writesCompleteLatch.countDown();
                        });
                Thread.sleep(50);
            }

            assertTrue(writesCompleteLatch.await(5, TimeUnit.SECONDS), "All writes should complete");

            assertNotNull(writeException.get(), "Should have captured a write exception");

            assertInstanceOf(PortUnreachableException.class, writeException.get(), "Expected " +
                    "PortUnreachableException but got: " + writeException.get().getClass().getName());
        } finally {
            if (clientChannel != null) {
                clientChannel.close().sync();
            }
        }
    }

Domain

Subdomains

Frequently Asked Questions

What does testWriteExceptionAfterServerStop() do?
testWriteExceptionAfterServerStop() is a function in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/DatagramConnectedWriteExceptionTest.java.
Where is testWriteExceptionAfterServerStop() defined?
testWriteExceptionAfterServerStop() is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/DatagramConnectedWriteExceptionTest.java at line 60.

Analyze Your Own Codebase

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

Try Supermodel Free