Home / Class/ DnsAddressResolverGroupTest Class — netty Architecture

DnsAddressResolverGroupTest Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  7de44a2b_93e5_48a5_c515_7968f4e2b9e0["DnsAddressResolverGroupTest"]
  72eb81d4_18b7_5732_ea47_8b087acd92ae["DnsAddressResolverGroupTest.java"]
  7de44a2b_93e5_48a5_c515_7968f4e2b9e0 -->|defined in| 72eb81d4_18b7_5732_ea47_8b087acd92ae
  17ad9576_75c4_5cdb_b86b_aa07026d7c42["testUseConfiguredEventLoop()"]
  7de44a2b_93e5_48a5_c515_7968f4e2b9e0 -->|method| 17ad9576_75c4_5cdb_b86b_aa07026d7c42
  9f99cb47_90bc_f4d4_7c6e_f22e5c818709["testSharedDNSCacheAcrossEventLoops()"]
  7de44a2b_93e5_48a5_c515_7968f4e2b9e0 -->|method| 9f99cb47_90bc_f4d4_7c6e_f22e5c818709
  35749a68_0504_eb58_9876_d08a56ea8070["InetAddress()"]
  7de44a2b_93e5_48a5_c515_7968f4e2b9e0 -->|method| 35749a68_0504_eb58_9876_d08a56ea8070

Relationship Graph

Source Code

resolver-dns/src/test/java/io/netty/resolver/dns/DnsAddressResolverGroupTest.java lines 41–115

public class DnsAddressResolverGroupTest {
    @Test
    public void testUseConfiguredEventLoop() throws InterruptedException {
        EventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
        final EventLoop loop = group.next();

        EventLoopGroup defaultEventLoopGroup = new MultiThreadIoEventLoopGroup(1, LocalIoHandler.newFactory());
        DnsNameResolverBuilder builder = new DnsNameResolverBuilder()
                .eventLoop(loop).datagramChannelType(NioDatagramChannel.class);
        DnsAddressResolverGroup resolverGroup = new DnsAddressResolverGroup(builder);
        try {
            final Promise<?> promise = loop.newPromise();
            AddressResolver<?> resolver = resolverGroup.getResolver(defaultEventLoopGroup.next());
            resolver.resolve(new SocketAddress() {
                private static final long serialVersionUID = 3169703458729818468L;
            }).addListener((FutureListener<Object>) future -> {
                try {
                    assertInstanceOf(UnsupportedAddressTypeException.class, future.cause());
                    assertTrue(loop.inEventLoop());
                    promise.setSuccess(null);
                } catch (Throwable cause) {
                    promise.setFailure(cause);
                }
            }).await();
            promise.sync();
        } finally {
            resolverGroup.close();
            group.shutdownGracefully();
            defaultEventLoopGroup.shutdownGracefully();
        }
    }

    @Test
    public void testSharedDNSCacheAcrossEventLoops() throws InterruptedException, ExecutionException {
        MultiThreadIoEventLoopGroup group = new MultiThreadIoEventLoopGroup(1, NioIoHandler.newFactory());
        final EventLoop loop = group.next();
        DnsNameResolverBuilder builder = new DnsNameResolverBuilder()
                .eventLoop(loop).datagramChannelType(NioDatagramChannel.class);
        DnsAddressResolverGroup resolverGroup = new DnsAddressResolverGroup(builder);
        EventLoopGroup defaultEventLoopGroup = new MultiThreadIoEventLoopGroup(1, LocalIoHandler.newFactory());
        EventLoop eventLoop1 = defaultEventLoopGroup.next();
        EventLoop eventLoop2 = defaultEventLoopGroup.next();
        try {
            final Promise<InetSocketAddress> promise1 = loop.newPromise();
            InetSocketAddressResolver resolver1 = (InetSocketAddressResolver) resolverGroup.getResolver(eventLoop1);
            InetAddress address1 =
                    resolve(resolver1, InetSocketAddress.createUnresolved("netty.io", 80), promise1);
            final Promise<InetSocketAddress> promise2 = loop.newPromise();
            InetSocketAddressResolver resolver2 = (InetSocketAddressResolver) resolverGroup.getResolver(eventLoop2);
            InetAddress address2 =
                    resolve(resolver2, InetSocketAddress.createUnresolved("netty.io", 80), promise2);
            assertSame(address1, address2);
        } finally {
            resolverGroup.close();
            group.shutdownGracefully();
            defaultEventLoopGroup.shutdownGracefully();
        }
    }

    private InetAddress resolve(InetSocketAddressResolver resolver, SocketAddress socketAddress,
                                final Promise<InetSocketAddress> promise)
            throws InterruptedException, ExecutionException {
        resolver.resolve(socketAddress)
                .addListener((FutureListener<InetSocketAddress>) future -> {
                    try {
                        promise.setSuccess(future.get());
                    } catch (Throwable cause) {
                        promise.setFailure(cause);
                    }
                }).await();
        promise.sync();
        InetSocketAddress inetSocketAddress = promise.get();
        return inetSocketAddress.getAddress();
    }
}

Frequently Asked Questions

What is the DnsAddressResolverGroupTest class?
DnsAddressResolverGroupTest is a class in the netty codebase, defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsAddressResolverGroupTest.java.
Where is DnsAddressResolverGroupTest defined?
DnsAddressResolverGroupTest is defined in resolver-dns/src/test/java/io/netty/resolver/dns/DnsAddressResolverGroupTest.java at line 41.

Analyze Your Own Codebase

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

Try Supermodel Free