SocketDataReadInitialStateTest Class — netty Architecture
Architecture documentation for the SocketDataReadInitialStateTest class in SocketDataReadInitialStateTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD af2a679c_61be_eb91_8df5_4b86a85c08c5["SocketDataReadInitialStateTest"] bbca0f7b_203c_9f6e_d52f_bb7bc492e0ab["SocketDataReadInitialStateTest.java"] af2a679c_61be_eb91_8df5_4b86a85c08c5 -->|defined in| bbca0f7b_203c_9f6e_d52f_bb7bc492e0ab 8bc147f0_5ce6_2194_9551_119f6da84b2e["testAutoReadOffNoDataReadUntilReadCalled()"] af2a679c_61be_eb91_8df5_4b86a85c08c5 -->|method| 8bc147f0_5ce6_2194_9551_119f6da84b2e a22276e0_5edb_fe8e_f7cb_cde3a6790e6a["testAutoReadOnDataReadImmediately()"] af2a679c_61be_eb91_8df5_4b86a85c08c5 -->|method| a22276e0_5edb_fe8e_f7cb_cde3a6790e6a
Relationship Graph
Source Code
testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketDataReadInitialStateTest.java lines 38–199
public class SocketDataReadInitialStateTest extends AbstractSocketTest {
@Test
@Timeout(value = 10000, unit = TimeUnit.MILLISECONDS)
public void testAutoReadOffNoDataReadUntilReadCalled(TestInfo testInfo) throws Throwable {
run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
@Override
public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
testAutoReadOffNoDataReadUntilReadCalled(serverBootstrap, bootstrap);
}
});
}
public void testAutoReadOffNoDataReadUntilReadCalled(ServerBootstrap sb, Bootstrap cb) throws Throwable {
Channel serverChannel = null;
Channel clientChannel = null;
final int sleepMs = 100;
try {
sb.option(AUTO_READ, false);
sb.childOption(AUTO_READ, false);
cb.option(AUTO_READ, false);
final CountDownLatch serverReadyLatch = new CountDownLatch(1);
final CountDownLatch acceptorReadLatch = new CountDownLatch(1);
final CountDownLatch serverReadLatch = new CountDownLatch(1);
final CountDownLatch clientReadLatch = new CountDownLatch(1);
final AtomicReference<Channel> serverConnectedChannelRef = new AtomicReference<Channel>();
sb.handler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) {
ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
acceptorReadLatch.countDown();
ctx.fireChannelRead(msg);
}
});
}
});
sb.childHandler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) {
serverConnectedChannelRef.set(ch);
ch.pipeline().addLast(new SimpleChannelInboundHandler<ByteBuf>() {
@Override
protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) {
ctx.writeAndFlush(msg.retainedDuplicate());
serverReadLatch.countDown();
}
});
serverReadyLatch.countDown();
}
});
cb.handler(new ChannelInitializer<Channel>() {
@Override
protected void initChannel(Channel ch) {
ch.pipeline().addLast(new SimpleChannelInboundHandler<Object>() {
@Override
protected void channelRead0(ChannelHandlerContext ctx, Object msg) {
clientReadLatch.countDown();
}
});
}
});
serverChannel = sb.bind().sync().channel();
clientChannel = cb.connect(serverChannel.localAddress()).sync().channel();
clientChannel.writeAndFlush(clientChannel.alloc().buffer().writeZero(1)).syncUninterruptibly();
// The acceptor shouldn't read any data until we call read() below, but give it some time to see if it will.
Thread.sleep(sleepMs);
assertEquals(1, acceptorReadLatch.getCount());
serverChannel.read();
serverReadyLatch.await();
Channel serverConnectedChannel = serverConnectedChannelRef.get();
assertNotNull(serverConnectedChannel);
// Allow some amount of time for the server peer to receive the message (which isn't expected to happen
// until we call read() below).
Defined In
Source
Frequently Asked Questions
What is the SocketDataReadInitialStateTest class?
SocketDataReadInitialStateTest is a class in the netty codebase, defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketDataReadInitialStateTest.java.
Where is SocketDataReadInitialStateTest defined?
SocketDataReadInitialStateTest is defined in testsuite/src/main/java/io/netty/testsuite/transport/socket/SocketDataReadInitialStateTest.java at line 38.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free