Home / Class/ EpollDomainSocketFdTest Class — netty Architecture

EpollDomainSocketFdTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  bc37b1b6_756d_8e84_002e_3eac4254daff["EpollDomainSocketFdTest"]
  7d8b92e4_a8da_e088_bfb8_5e007bad184b["EpollDomainSocketFdTest.java"]
  bc37b1b6_756d_8e84_002e_3eac4254daff -->|defined in| 7d8b92e4_a8da_e088_bfb8_5e007bad184b
  f1a1825d_c46f_b8c1_4576_10f1df22fc9b["SocketAddress()"]
  bc37b1b6_756d_8e84_002e_3eac4254daff -->|method| f1a1825d_c46f_b8c1_4576_10f1df22fc9b
  3c3fce5c_d721_0a6e_d39b_23e6bd96157d["newFactories()"]
  bc37b1b6_756d_8e84_002e_3eac4254daff -->|method| 3c3fce5c_d721_0a6e_d39b_23e6bd96157d
  169ef119_faae_cf92_466a_d873ca1bf824["testSendRecvFd()"]
  bc37b1b6_756d_8e84_002e_3eac4254daff -->|method| 169ef119_faae_cf92_466a_d873ca1bf824

Relationship Graph

Source Code

transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainSocketFdTest.java lines 41–111

public class EpollDomainSocketFdTest extends AbstractSocketTest {
    @Override
    protected SocketAddress newSocketAddress() {
        return EpollSocketTestPermutation.newDomainSocketAddress();
    }

    @Override
    protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
        return EpollSocketTestPermutation.INSTANCE.domainSocket();
    }

    @Test
    @Timeout(value = 30000, unit = TimeUnit.MILLISECONDS)
    public void testSendRecvFd(TestInfo testInfo) throws Throwable {
        run(testInfo, new Runner<ServerBootstrap, Bootstrap>() {
            @Override
            public void run(ServerBootstrap serverBootstrap, Bootstrap bootstrap) throws Throwable {
                testSendRecvFd(serverBootstrap, bootstrap);
            }
        });
    }

    public void testSendRecvFd(ServerBootstrap sb, Bootstrap cb) throws Throwable {
        final BlockingQueue<Object> queue = new LinkedBlockingQueue<Object>(1);
        sb.childHandler(new ChannelInboundHandlerAdapter() {
            @Override
            public void channelActive(ChannelHandlerContext ctx) throws Exception {
                // Create new channel and obtain a file descriptor from it.
                final EpollDomainSocketChannel ch = new EpollDomainSocketChannel();

                ctx.writeAndFlush(ch.fd()).addListener(future -> {
                    if (!future.isSuccess()) {
                        Throwable cause = future.cause();
                        queue.offer(cause);
                    }
                });
            }
        });
        cb.handler(new ChannelInboundHandlerAdapter() {
            @Override
            public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
                FileDescriptor fd = (FileDescriptor) msg;
                queue.offer(fd);
            }

            @Override
            public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
                queue.add(cause);
                ctx.close();
            }
        });
        cb.option(EpollChannelOption.DOMAIN_SOCKET_READ_MODE,
                DomainSocketReadMode.FILE_DESCRIPTORS);
        Channel sc = sb.bind().sync().channel();
        Channel cc = cb.connect(sc.localAddress()).sync().channel();

        Object received = queue.take();
        cc.close().sync();
        sc.close().sync();

        if (received instanceof FileDescriptor) {
            FileDescriptor fd = (FileDescriptor) received;
            assertTrue(fd.isOpen());
            fd.close();
            assertFalse(fd.isOpen());
            assertNull(queue.poll());
        } else {
            throw (Throwable) received;
        }
    }
}

Frequently Asked Questions

What is the EpollDomainSocketFdTest class?
EpollDomainSocketFdTest is a class in the netty codebase, defined in transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainSocketFdTest.java.
Where is EpollDomainSocketFdTest defined?
EpollDomainSocketFdTest is defined in transport-native-epoll/src/test/java/io/netty/channel/epoll/EpollDomainSocketFdTest.java at line 41.

Analyze Your Own Codebase

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

Try Supermodel Free