Home / Class/ ChannelInitializerTest Class — netty Architecture

ChannelInitializerTest Class — netty Architecture

Architecture documentation for the ChannelInitializerTest class in ChannelInitializerTest.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  1d273673_4ec9_d923_c0aa_b8258d9bebe4["ChannelInitializerTest"]
  c325dd3c_6448_75c4_1715_a1af2456be2b["ChannelInitializerTest.java"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|defined in| c325dd3c_6448_75c4_1715_a1af2456be2b
  6c57cd5c_2632_2bfa_be7b_3d4ef3aa4bb6["setUp()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 6c57cd5c_2632_2bfa_be7b_3d4ef3aa4bb6
  b3f7bf4b_54e4_cf4c_9811_a40bed0de40c["tearDown()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| b3f7bf4b_54e4_cf4c_9811_a40bed0de40c
  3c8bc239_f2e4_ad3b_5c28_37b0e0deb19f["testInitChannelThrowsRegisterFirst()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 3c8bc239_f2e4_ad3b_5c28_37b0e0deb19f
  562eaef8_dcc4_7af8_71b3_ef17b555d753["testInitChannelThrowsRegisterAfter()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 562eaef8_dcc4_7af8_71b3_ef17b555d753
  c492b1c1_f6d3_2090_6fd0_181783165065["testInitChannelThrows()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| c492b1c1_f6d3_2090_6fd0_181783165065
  6bad5e48_9d4e_32d3_9adf_2b33c960a4b6["testChannelInitializerInInitializerCorrectOrdering()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 6bad5e48_9d4e_32d3_9adf_2b33c960a4b6
  fb80681c_08b8_e96a_7b4b_a7d8ff936b98["testChannelInitializerReentrance()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| fb80681c_08b8_e96a_7b4b_a7d8ff936b98
  95df6634_45a3_f1df_2e55_51e722b186d4["firstHandlerInPipelineShouldReceiveChannelRegisteredEvent()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 95df6634_45a3_f1df_2e55_51e722b186d4
  77987415_086d_b896_3578_190ba1161255["lastHandlerInPipelineShouldReceiveChannelRegisteredEvent()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 77987415_086d_b896_3578_190ba1161255
  456ac6bd_a1cd_6036_9316_5e875b51f1ef["testAddFirstChannelInitializer()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 456ac6bd_a1cd_6036_9316_5e875b51f1ef
  bf2a4fbd_583d_2233_a274_7e4fa79f6a77["testAddLastChannelInitializer()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| bf2a4fbd_583d_2233_a274_7e4fa79f6a77
  15c06dbc_8bf9_bdce_11c6_845769f210ff["testAddChannelInitializer()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 15c06dbc_8bf9_bdce_11c6_845769f210ff
  7c459eda_a662_432c_51c7_fb43b84d54c9["testChannelRegisteredEventPropagation()"]
  1d273673_4ec9_d923_c0aa_b8258d9bebe4 -->|method| 7c459eda_a662_432c_51c7_fb43b84d54c9

Relationship Graph

Source Code

transport/src/test/java/io/netty/channel/ChannelInitializerTest.java lines 49–415

public class ChannelInitializerTest {
    private static final int TIMEOUT_MILLIS = 1000;
    private static final LocalAddress SERVER_ADDRESS = new LocalAddress("addr");
    private EventLoopGroup group;
    private ServerBootstrap server;
    private Bootstrap client;
    private InspectableHandler testHandler;

    @BeforeEach
    public void setUp() {
        group = new MultiThreadIoEventLoopGroup(1, LocalIoHandler.newFactory());
        server = new ServerBootstrap()
                .group(group)
                .channel(LocalServerChannel.class)
                .localAddress(SERVER_ADDRESS);
        client = new Bootstrap()
                .group(group)
                .channel(LocalChannel.class)
                .handler(new ChannelInboundHandlerAdapter());
        testHandler = new InspectableHandler();
    }

    @AfterEach
    public void tearDown() {
        group.shutdownGracefully(0, TIMEOUT_MILLIS, TimeUnit.MILLISECONDS).syncUninterruptibly();
    }

    @Test
    public void testInitChannelThrowsRegisterFirst() {
        testInitChannelThrows(true);
    }

    @Test
    public void testInitChannelThrowsRegisterAfter() {
        testInitChannelThrows(false);
    }

    private void testInitChannelThrows(boolean registerFirst) {
        final Exception exception = new Exception();
        final AtomicReference<Throwable> causeRef = new AtomicReference<Throwable>();

        ChannelPipeline pipeline = new LocalChannel().pipeline();

        if (registerFirst) {
            group.register(pipeline.channel()).syncUninterruptibly();
        }
        pipeline.addFirst(new ChannelInitializer<Channel>() {
            @Override
            protected void initChannel(Channel ch) throws Exception {
                throw exception;
            }

            @Override
            public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
                causeRef.set(cause);
                super.exceptionCaught(ctx, cause);
            }
        });

        if (!registerFirst) {
            group.register(pipeline.channel()).syncUninterruptibly();
        }
        pipeline.channel().close().syncUninterruptibly();
        pipeline.channel().closeFuture().syncUninterruptibly();

        assertSame(exception, causeRef.get());
    }

    @Test
    public void testChannelInitializerInInitializerCorrectOrdering() {
        final ChannelInboundHandlerAdapter handler1 = new ChannelInboundHandlerAdapter();
        final ChannelInboundHandlerAdapter handler2 = new ChannelInboundHandlerAdapter();
        final ChannelInboundHandlerAdapter handler3 = new ChannelInboundHandlerAdapter();
        final ChannelInboundHandlerAdapter handler4 = new ChannelInboundHandlerAdapter();

        client.handler(new ChannelInitializer<Channel>() {
            @Override
            protected void initChannel(Channel ch) {
                ch.pipeline().addLast(handler1);
                ch.pipeline().addLast(new ChannelInitializer<Channel>() {
                    @Override

Frequently Asked Questions

What is the ChannelInitializerTest class?
ChannelInitializerTest is a class in the netty codebase, defined in transport/src/test/java/io/netty/channel/ChannelInitializerTest.java.
Where is ChannelInitializerTest defined?
ChannelInitializerTest is defined in transport/src/test/java/io/netty/channel/ChannelInitializerTest.java at line 49.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free