NioEventLoopTest Class — netty Architecture
Architecture documentation for the NioEventLoopTest class in NioEventLoopTest.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 744640b8_9d8b_07b6_4d95_821961ea4e63["NioEventLoopTest"] a7628cdb_e62a_0b8e_a798_7613bccb5769["NioEventLoopTest.java"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|defined in| a7628cdb_e62a_0b8e_a798_7613bccb5769 418595af_1f4c_24fe_ebc5_9421a28cf4dc["EventLoopGroup()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 418595af_1f4c_24fe_ebc5_9421a28cf4dc 9054f644_2a53_dcad_6ef7_6e4e6214c44e["newChannel()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 9054f644_2a53_dcad_6ef7_6e4e6214c44e 23364c41_457f_fa2e_83be_b12488da69cb["newSocketChannel()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 23364c41_457f_fa2e_83be_b12488da69cb 142a8f34_03b7_054c_2f02_13c2d0649b8a["testRebuildSelector()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 142a8f34_03b7_054c_2f02_13c2d0649b8a e99be7d1_59c8_ee17_cd28_2086b0f2cd86["testScheduleBigDelayNotOverflow()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| e99be7d1_59c8_ee17_cd28_2086b0f2cd86 fed67f0e_49e9_117c_379e_85fd3048b0b4["testInterruptEventLoopThread()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| fed67f0e_49e9_117c_379e_85fd3048b0b4 436455f6_85bd_af95_b8cb_0fb25d2f869e["testSelectableChannel()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 436455f6_85bd_af95_b8cb_0fb25d2f869e e372d426_94ba_e2eb_e178_1b5d72df6d24["testTaskRemovalOnShutdownThrowsNoUnsupportedOperationException()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| e372d426_94ba_e2eb_e178_1b5d72df6d24 df780560_ae8a_b3df_2bec_9795a62bd4ef["testRebuildSelectorOnIOException()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| df780560_ae8a_b3df_2bec_9795a62bd4ef 1d5d2853_c878_64cb_71c4_035df727a71d["testChannelsRegistered()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 1d5d2853_c878_64cb_71c4_035df727a71d 03111d71_2c58_836d_46ee_3ad103158700["registeredChannels()"] 744640b8_9d8b_07b6_4d95_821961ea4e63 -->|method| 03111d71_2c58_836d_46ee_3ad103158700
Relationship Graph
Source Code
transport/src/test/java/io/netty/channel/nio/NioEventLoopTest.java lines 58–317
public class NioEventLoopTest extends AbstractEventLoopTest {
@Override
protected EventLoopGroup newEventLoopGroup() {
return new MultiThreadIoEventLoopGroup(NioIoHandler.newFactory());
}
@Override
protected Class<? extends ServerSocketChannel> newChannel() {
return NioServerSocketChannel.class;
}
@Override
protected Class<? extends io.netty.channel.socket.SocketChannel> newSocketChannel() {
return NioSocketChannel.class;
}
@Test
public void testRebuildSelector() {
EventLoopGroup group = new NioEventLoopGroup(1);
final NioEventLoop loop = (NioEventLoop) group.next();
try {
Channel channel = new NioServerSocketChannel();
loop.register(channel).syncUninterruptibly();
Selector selector = loop.unwrappedSelector();
assertSame(selector, ((NioEventLoop) channel.eventLoop()).unwrappedSelector());
assertTrue(selector.isOpen());
// Submit to the EventLoop so we are sure its really executed in a non-async manner.
loop.submit(new Runnable() {
@Override
public void run() {
loop.rebuildSelector();
}
}).syncUninterruptibly();
Selector newSelector = ((NioEventLoop) channel.eventLoop()).unwrappedSelector();
assertTrue(newSelector.isOpen());
assertNotSame(selector, newSelector);
assertFalse(selector.isOpen());
channel.close().syncUninterruptibly();
} finally {
group.shutdownGracefully();
}
}
@Test
public void testScheduleBigDelayNotOverflow() {
EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
final EventLoop el = group.next();
Future<?> future = el.schedule(new Runnable() {
@Override
public void run() {
// NOOP
}
}, Long.MAX_VALUE, TimeUnit.MILLISECONDS);
assertFalse(future.awaitUninterruptibly(1000));
assertTrue(future.cancel(true));
group.shutdownGracefully();
}
@Test
public void testInterruptEventLoopThread() throws Exception {
EventLoopGroup group = new NioEventLoopGroup(1);
final NioEventLoop loop = (NioEventLoop) group.next();
try {
Selector selector = loop.unwrappedSelector();
assertTrue(selector.isOpen());
loop.submit(new Runnable() {
@Override
public void run() {
// Interrupt the thread which should not end-up in a busy spin and
// so the selector should not have been rebuild.
Thread.currentThread().interrupt();
}
}).syncUninterruptibly();
Source
Frequently Asked Questions
What is the NioEventLoopTest class?
NioEventLoopTest is a class in the netty codebase, defined in transport/src/test/java/io/netty/channel/nio/NioEventLoopTest.java.
Where is NioEventLoopTest defined?
NioEventLoopTest is defined in transport/src/test/java/io/netty/channel/nio/NioEventLoopTest.java at line 58.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free