public static EventLoopGroup eventLoopGroup(int threads, String threadFactoryName) {
        ThreadFactory threadFactory = new DefaultThreadFactory(threadFactoryName, true);
        return shouldEpoll()
                ? new EpollEventLoopGroup(threads, threadFactory)
                : new NioEventLoopGroup(threads, threadFactory);
    }
@Test
    void eventLoopGroup() {
        if (isEpoll()) {
            EventLoopGroup eventLoopGroup = NettyEventLoopFactory.eventLoopGroup(1, "test");
            Assertions.assertTrue(eventLoopGroup instanceof EpollEventLoopGroup);

            Class<? extends SocketChannel> socketChannelClass = NettyEventLoopFactory.socketChannelClass();
            Assertions.assertEquals(socketChannelClass, EpollSocketChannel.class);

            Class<? extends ServerSocketChannel> serverSocketChannelClass =
                    NettyEventLoopFactory.serverSocketChannelClass();
            Assertions.assertEquals(serverSocketChannelClass, EpollServerSocketChannel.class);

        } else {
            EventLoopGroup eventLoopGroup = NettyEventLoopFactory.eventLoopGroup(1, "test");
            Assertions.assertTrue(eventLoopGroup instanceof NioEventLoopGroup);

            Class<? extends SocketChannel> socketChannelClass = NettyEventLoopFactory.socketChannelClass();
            Assertions.assertEquals(socketChannelClass, NioSocketChannel.class);

            Class<? extends ServerSocketChannel> serverSocketChannelClass =
                    NettyEventLoopFactory.serverSocketChannelClass();
            Assertions.assertEquals(serverSocketChannelClass, NioServerSocketChannel.class);
        }
    }