Home / Class/ NioEventLoopTest Class — netty Architecture

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();

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