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
Defined In
Source
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