DatagramConnectedWriteExceptionTest Class — netty Architecture
Architecture documentation for the DatagramConnectedWriteExceptionTest class in DatagramConnectedWriteExceptionTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 5f881dbc_d5ec_8d0c_c925_038dbabd44d6["DatagramConnectedWriteExceptionTest"] 1d40046b_1422_700b_a383_614b0a5b95ac["DatagramConnectedWriteExceptionTest.java"] 5f881dbc_d5ec_8d0c_c925_038dbabd44d6 -->|defined in| 1d40046b_1422_700b_a383_614b0a5b95ac f35590dd_a796_57e4_ef9c_24fd31020b28["newFactories()"] 5f881dbc_d5ec_8d0c_c925_038dbabd44d6 -->|method| f35590dd_a796_57e4_ef9c_24fd31020b28 ef4b756e_deb2_0160_c0e0_90764c84bc2f["testWriteThrowsPortUnreachableException()"] 5f881dbc_d5ec_8d0c_c925_038dbabd44d6 -->|method| ef4b756e_deb2_0160_c0e0_90764c84bc2f 7c82fbfb_230e_b60e_9bea_a9c5a458f583["testWriteExceptionAfterServerStop()"] 5f881dbc_d5ec_8d0c_c925_038dbabd44d6 -->|method| 7c82fbfb_230e_b60e_9bea_a9c5a458f583
Relationship Graph
Source Code
testsuite/src/main/java/io/netty/testsuite/transport/socket/DatagramConnectedWriteExceptionTest.java lines 46–128
public class DatagramConnectedWriteExceptionTest extends AbstractClientSocketTest {
@Override
protected List<TestsuitePermutation.BootstrapFactory<Bootstrap>> newFactories() {
return SocketTestPermutation.INSTANCE.datagramSocket();
}
@Test
@Timeout(value = 10000, unit = TimeUnit.MILLISECONDS)
@DisabledOnOs(OS.WINDOWS)
public void testWriteThrowsPortUnreachableException(TestInfo testInfo) throws Throwable {
run(testInfo, (Runner<Bootstrap>) this::testWriteExceptionAfterServerStop);
}
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();
}
}
Defined In
Source
Frequently Asked Questions
What is the DatagramConnectedWriteExceptionTest class?
DatagramConnectedWriteExceptionTest is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/DatagramConnectedWriteExceptionTest.java.
Where is DatagramConnectedWriteExceptionTest defined?
DatagramConnectedWriteExceptionTest is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/DatagramConnectedWriteExceptionTest.java at line 46.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free