io.netty.handler.codec.dns.DefaultDnsQuestion #io.netty.resolver.ResolvedAddressTypes源码实例Demo

下面列出了 io.netty.handler.codec.dns.DefaultDnsQuestion #io.netty.resolver.ResolvedAddressTypes 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: netty-4.1.22   文件: DnsNameResolverBuilder.java
/**
 * Compute a {@link ResolvedAddressTypes} from some {@link InternetProtocolFamily}s.
 * An empty input will return the default value, based on "java.net" System properties.
 * Valid inputs are (), (IPv4), (IPv6), (Ipv4, IPv6) and (IPv6, IPv4).
 * @param internetProtocolFamilies a valid sequence of {@link InternetProtocolFamily}s
 * @return a {@link ResolvedAddressTypes}
 */
public static ResolvedAddressTypes computeResolvedAddressTypes(InternetProtocolFamily... internetProtocolFamilies) {
    if (internetProtocolFamilies == null || internetProtocolFamilies.length == 0) {
        return DnsNameResolver.DEFAULT_RESOLVE_ADDRESS_TYPES;
    }
    if (internetProtocolFamilies.length > 2) {
        throw new IllegalArgumentException("No more than 2 InternetProtocolFamilies");
    }

    switch(internetProtocolFamilies[0]) {
        case IPv4:
            return (internetProtocolFamilies.length >= 2
                    && internetProtocolFamilies[1] == InternetProtocolFamily.IPv6) ?
                    ResolvedAddressTypes.IPV4_PREFERRED: ResolvedAddressTypes.IPV4_ONLY;
        case IPv6:
            return (internetProtocolFamilies.length >= 2
                    && internetProtocolFamilies[1] == InternetProtocolFamily.IPv4) ?
                    ResolvedAddressTypes.IPV6_PREFERRED: ResolvedAddressTypes.IPV6_ONLY;
        default:
            throw new IllegalArgumentException(
                    "Couldn't resolve ResolvedAddressTypes from InternetProtocolFamily array");
    }
}
 
源代码2 项目: armeria   文件: RefreshingAddressResolverGroup.java
private static ImmutableList<DnsRecordType> dnsRecordTypes(ResolvedAddressTypes resolvedAddressTypes) {
    final Builder<DnsRecordType> builder = ImmutableList.builder();
    switch (resolvedAddressTypes) {
        case IPV4_ONLY:
            builder.add(DnsRecordType.A);
            break;
        case IPV4_PREFERRED:
            builder.add(DnsRecordType.A);
            builder.add(DnsRecordType.AAAA);
            break;
        case IPV6_PREFERRED:
            builder.add(DnsRecordType.AAAA);
            builder.add(DnsRecordType.A);
            break;
    }
    return builder.build();
}
 
源代码3 项目: armeria   文件: RefreshingAddressResolverGroup.java
RefreshingAddressResolverGroup(Consumer<DnsNameResolverBuilder> resolverConfigurator,
                               int minTtl, int maxTtl, int negativeTtl, long queryTimeoutMillis,
                               Backoff refreshBackoff,
                               @Nullable ResolvedAddressTypes resolvedAddressTypes) {
    this.resolverConfigurator = resolverConfigurator;
    this.minTtl = minTtl;
    this.maxTtl = maxTtl;
    this.negativeTtl = negativeTtl;
    this.queryTimeoutMillis = queryTimeoutMillis;
    this.refreshBackoff = refreshBackoff;
    if (resolvedAddressTypes == null) {
        dnsRecordTypes = defaultDnsRecordTypes;
    } else {
        dnsRecordTypes = dnsRecordTypes(resolvedAddressTypes);
    }
}
 
源代码4 项目: armeria   文件: DnsAddressEndpointGroup.java
DnsAddressEndpointGroup(EndpointSelectionStrategy selectionStrategy, EventLoop eventLoop,
                        int minTtl, int maxTtl, long queryTimeoutMillis,
                        DnsServerAddressStreamProvider serverAddressStreamProvider,
                        Backoff backoff, @Nullable ResolvedAddressTypes resolvedAddressTypes,
                        String hostname, int port) {

    super(selectionStrategy, eventLoop, minTtl, maxTtl, queryTimeoutMillis, serverAddressStreamProvider,
          backoff, newQuestions(hostname, resolvedAddressTypes),
          resolverBuilder -> {
              if (resolvedAddressTypes != null) {
                  resolverBuilder.resolvedAddressTypes(resolvedAddressTypes);
              }
          });

    this.hostname = hostname;
    this.port = port;
    start();
}
 
源代码5 项目: armeria   文件: RefreshingAddressResolverTest.java
@Test
void returnDnsQuestionsWhenAllQueryTimeout() throws Exception {
    try (TestDnsServer server1 = new TestDnsServer(ImmutableMap.of(), new AlwaysTimeoutHandler());
         TestDnsServer server2 = new TestDnsServer(ImmutableMap.of(), new AlwaysTimeoutHandler())) {
        final EventLoop eventLoop = eventLoopExtension.get();
        final DnsResolverGroupBuilder builder = builder(server1, server2)
                .queryTimeoutMillis(1000)
                .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED);
        try (RefreshingAddressResolverGroup group = builder.build(eventLoop)) {
            final AddressResolver<InetSocketAddress> resolver = group.getResolver(eventLoop);
            final Future<InetSocketAddress> future = resolver.resolve(
                    InetSocketAddress.createUnresolved("foo.com", 36462));
            await().until(future::isDone);
            assertThat(future.cause()).isInstanceOf(DnsTimeoutException.class);
        }
    }
}
 
源代码6 项目: armeria   文件: RefreshingAddressResolverTest.java
@Test
void returnPartialDnsQuestions() throws Exception {
    // Returns IPv6 correctly and make IPv4 timeout.
    try (TestDnsServer server = new TestDnsServer(
            ImmutableMap.of(
                    new DefaultDnsQuestion("foo.com.", AAAA),
                    new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "::1", 1))))
    ) {
        final EventLoop eventLoop = eventLoopExtension.get();
        final DnsResolverGroupBuilder builder = builder(server)
                .queryTimeoutMillis(1000)
                .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED);
        try (RefreshingAddressResolverGroup group = builder.build(eventLoop)) {
            final AddressResolver<InetSocketAddress> resolver = group.getResolver(eventLoop);
            final Future<InetSocketAddress> future = resolver.resolve(
                    InetSocketAddress.createUnresolved("foo.com", 36462));
            await().until(future::isDone);
            assertThat(future.getNow().getAddress().getHostAddress()).isEqualTo("0:0:0:0:0:0:0:1");
        }
    }
}
 
源代码7 项目: armeria   文件: RefreshingAddressResolverTest.java
@Test
void preferredOrderIpv4() throws Exception {
    try (TestDnsServer server = new TestDnsServer(
            ImmutableMap.of(
                    new DefaultDnsQuestion("foo.com.", A),
                    new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "1.1.1.1")),
                    new DefaultDnsQuestion("foo.com.", AAAA),
                    new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "::1", 1))),
            new DelayHandler(A))
    ) {
        final EventLoop eventLoop = eventLoopExtension.get();
        final DnsResolverGroupBuilder builder = builder(server)
                .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED);
        try (RefreshingAddressResolverGroup group = builder.build(eventLoop)) {
            final AddressResolver<InetSocketAddress> resolver = group.getResolver(eventLoop);
            final Future<InetSocketAddress> future = resolver.resolve(
                    InetSocketAddress.createUnresolved("foo.com", 36462));
            await().until(future::isSuccess);
            assertThat(future.getNow().getAddress().getHostAddress()).isEqualTo("1.1.1.1");
        }
    }
}
 
源代码8 项目: armeria   文件: RefreshingAddressResolverTest.java
@Test
void preferredOrderIpv6() throws Exception {
    try (TestDnsServer server = new TestDnsServer(
            ImmutableMap.of(
                    new DefaultDnsQuestion("foo.com.", A),
                    new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "1.1.1.1")),
                    new DefaultDnsQuestion("foo.com.", AAAA),
                    new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "::1", 1))),
            new DelayHandler(AAAA))
    ) {
        final EventLoop eventLoop = eventLoopExtension.get();
        final DnsResolverGroupBuilder builder = builder(server)
                .resolvedAddressTypes(ResolvedAddressTypes.IPV6_PREFERRED);
        try (RefreshingAddressResolverGroup group = builder.build(eventLoop)) {
            final AddressResolver<InetSocketAddress> resolver = group.getResolver(eventLoop);
            final Future<InetSocketAddress> future = resolver.resolve(
                    InetSocketAddress.createUnresolved("foo.com", 36462));
            await().until(future::isSuccess);
            assertThat(future.getNow().getAddress().getHostAddress()).isEqualTo("0:0:0:0:0:0:0:1");
        }
    }
}
 
源代码9 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void ipV4Only() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("foo.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "1.1.1.1"))
                                     .addRecord(ANSWER, newAddressRecord("unrelated.com", "1.2.3.4")),
            new DefaultDnsQuestion("foo.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "::1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("foo.com")
                                            .port(8080)
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV4_ONLY)
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("foo.com", 8080).withIpAddr("1.1.1.1"));
        }
    }
}
 
源代码10 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void ipV6Only() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("bar.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("bar.com.", "1.1.1.1")),
            new DefaultDnsQuestion("bar.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("bar.com.", "::1"))
                                     .addRecord(ANSWER, newAddressRecord("bar.com.", "::1234:5678:90ab"))
                                     .addRecord(ANSWER, newAddressRecord("bar.com.",
                                                                         "2404:6800:4004:806::2013"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("bar.com")
                                            .port(8080)
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV6_ONLY)
                                            .build()) {

            assertThat(group.whenReady().get(10, TimeUnit.SECONDS)).containsExactly(
                    Endpoint.of("bar.com", 8080).withIpAddr("2404:6800:4004:806::2013"),
                    Endpoint.of("bar.com", 8080).withIpAddr("::1"),
                    Endpoint.of("bar.com", 8080).withIpAddr("::1234:5678:90ab"));
        }
    }
}
 
源代码11 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void ipV4AndIpV6() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("baz.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("baz.com.", "1.1.1.1")),
            new DefaultDnsQuestion("baz.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("baz.com.", "::1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("baz.com")
                                            .port(8080)
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED)
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("baz.com", 8080).withIpAddr("1.1.1.1"),
                    Endpoint.of("baz.com", 8080).withIpAddr("::1"));
        }
    }
}
 
源代码12 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void cname() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("a.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newBadAddressRecord("a.com.", true))
                                     .addRecord(ANSWER, newCnameRecord("a.com.", "b.com."))
                                     .addRecord(ANSWER, newAddressRecord("b.com.", "1.1.1.1")),
            new DefaultDnsQuestion("a.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newBadAddressRecord("a.com.", false))
                                     .addRecord(ANSWER, newCnameRecord("a.com.", "b.com."))
                                     .addRecord(ANSWER, newAddressRecord("b.com.", "::1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("a.com")
                                            .port(8080)
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED)
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("a.com", 8080).withIpAddr("1.1.1.1"),
                    Endpoint.of("a.com", 8080).withIpAddr("::1"));
        }
    }
}
 
源代码13 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void mixedLoopbackAddresses() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("foo.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "127.0.0.1")),
            new DefaultDnsQuestion("foo.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("foo.com.", "::1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("foo.com")
                                            .port(8080)
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV4_PREFERRED)
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("foo.com", 8080).withIpAddr("127.0.0.1"));
        }
    }
}
 
源代码14 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void ipV4MappedOrCompatibleAddresses() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("bar.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newCompatibleAddressRecord("bar.com.", "1.1.1.1"))
                                     .addRecord(ANSWER, newCompatibleAddressRecord("bar.com.", "1.1.1.2"))
                                     .addRecord(ANSWER, newMappedAddressRecord("bar.com.", "1.1.1.1"))
                                     .addRecord(ANSWER, newMappedAddressRecord("bar.com.", "1.1.1.3"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("bar.com")
                                            .port(8080)
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV6_ONLY)
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("bar.com", 8080).withIpAddr("1.1.1.1"),
                    Endpoint.of("bar.com", 8080).withIpAddr("1.1.1.2"),
                    Endpoint.of("bar.com", 8080).withIpAddr("1.1.1.3"));
        }
    }
}
 
源代码15 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@Test
public void noPort() throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            new DefaultDnsQuestion("no-port.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("no-port.com", "1.1.1.1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("no-port.com")
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(ResolvedAddressTypes.IPV4_ONLY)
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("no-port.com").withIpAddr("1.1.1.1"));
        }
    }
}
 
源代码16 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@EnumSource(value = ResolvedAddressTypes.class, names = { "IPV4_PREFERRED", "IPV6_PREFERRED" })
@ParameterizedTest
public void partialIpV4Response(ResolvedAddressTypes resolvedAddressTypes) throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            // Respond A record only.
            // Respond with NXDOMAIN for AAAA.
            new DefaultDnsQuestion("partial.com.", A),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("partial.com", "1.1.1.1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("partial.com")
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(resolvedAddressTypes)
                                            .backoff(Backoff.fixed(500))
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("partial.com").withIpAddr("1.1.1.1"));
        }
    }
}
 
源代码17 项目: armeria   文件: DnsAddressEndpointGroupTest.java
@EnumSource(value = ResolvedAddressTypes.class, names = { "IPV4_PREFERRED", "IPV6_PREFERRED" })
@ParameterizedTest
public void partialIpV6Response(ResolvedAddressTypes resolvedAddressTypes) throws Exception {
    try (TestDnsServer server = new TestDnsServer(ImmutableMap.of(
            // Respond AAAA record only.
            // Respond with NXDOMAIN for A.
            new DefaultDnsQuestion("partial.com.", AAAA),
            new DefaultDnsResponse(0).addRecord(ANSWER, newAddressRecord("partial.com", "::1"))
    ))) {
        try (DnsAddressEndpointGroup group =
                     DnsAddressEndpointGroup.builder("partial.com")
                                            .serverAddresses(server.addr())
                                            .resolvedAddressTypes(resolvedAddressTypes)
                                            .backoff(Backoff.fixed(500))
                                            .build()) {

            assertThat(group.whenReady().get()).containsExactly(
                    Endpoint.of("partial.com").withIpAddr("::1"));
        }
    }
}
 
源代码18 项目: netty-4.1.22   文件: DnsNameResolverTest.java
@Test
public void testResolveAorAAAA() throws Exception {
    DnsNameResolver resolver = newResolver(ResolvedAddressTypes.IPV4_PREFERRED).build();
    try {
        testResolve0(resolver, EXCLUSIONS_RESOLVE_A, AAAA);
    } finally {
        resolver.close();
    }
}
 
源代码19 项目: netty-4.1.22   文件: DnsNameResolverTest.java
@Test
public void testResolveAAAAorA() throws Exception {
    DnsNameResolver resolver = newResolver(ResolvedAddressTypes.IPV6_PREFERRED).build();
    try {
        testResolve0(resolver, EXCLUSIONS_RESOLVE_A, A);
    } finally {
        resolver.close();
    }
}
 
源代码20 项目: netty-4.1.22   文件: DnsNameResolverTest.java
@Test
public void testResolveA() throws Exception {
    DnsNameResolver resolver = newResolver(ResolvedAddressTypes.IPV4_ONLY)
            // Cache for eternity
            .ttl(Integer.MAX_VALUE, Integer.MAX_VALUE)
            .build();
    try {
        final Map<String, InetAddress> resultA = testResolve0(resolver, EXCLUSIONS_RESOLVE_A, null);

        // Now, try to resolve again to see if it's cached.
        // This test works because the DNS servers usually randomizes the order of the records in a response.
        // If cached, the resolved addresses must be always same, because we reuse the same response.

        final Map<String, InetAddress> resultB = testResolve0(resolver, EXCLUSIONS_RESOLVE_A, null);

        // Ensure the result from the cache is identical from the uncached one.
        assertThat(resultB.size(), is(resultA.size()));
        for (Entry<String, InetAddress> e: resultA.entrySet()) {
            InetAddress expected = e.getValue();
            InetAddress actual = resultB.get(e.getKey());
            if (!actual.equals(expected)) {
                // Print the content of the cache when test failure is expected.
                System.err.println("Cache for " + e.getKey() + ": " + resolver.resolveAll(e.getKey()).getNow());
            }
            assertThat(actual, is(expected));
        }
    } finally {
        resolver.close();
    }
}
 
源代码21 项目: netty-4.1.22   文件: DnsNameResolverTest.java
@Test
public void testResolveAAAA() throws Exception {
    DnsNameResolver resolver = newResolver(ResolvedAddressTypes.IPV6_ONLY).build();
    try {
        testResolve0(resolver, EXCLUSIONS_RESOLVE_AAAA, null);
    } finally {
        resolver.close();
    }
}
 
源代码22 项目: netty-4.1.22   文件: DnsNameResolverTest.java
@Test
public void testNonCachedResolve() throws Exception {
    DnsNameResolver resolver = newNonCachedResolver(ResolvedAddressTypes.IPV4_ONLY).build();
    try {
        testResolve0(resolver, EXCLUSIONS_RESOLVE_A, null);
    } finally {
        resolver.close();
    }
}
 
源代码23 项目: netty-4.1.22   文件: DnsNameResolverTest.java
public void testNonCachedResolveEmptyHostName(String inetHost) throws Exception {
    DnsNameResolver resolver = newNonCachedResolver(ResolvedAddressTypes.IPV4_ONLY).build();
    try {
        InetAddress addr = resolver.resolve(inetHost).syncUninterruptibly().getNow();
        assertEquals(SocketUtils.addressByName(inetHost), addr);
    } finally {
        resolver.close();
    }
}
 
源代码24 项目: netty-4.1.22   文件: DnsNameResolverTest.java
private static void testNonCachedResolveAllEmptyHostName(String inetHost) throws UnknownHostException {
    DnsNameResolver resolver = newNonCachedResolver(ResolvedAddressTypes.IPV4_ONLY).build();
    try {
        List<InetAddress> addrs = resolver.resolveAll(inetHost).syncUninterruptibly().getNow();
        assertEquals(Arrays.asList(
                SocketUtils.allAddressesByName(inetHost)), addrs);
    } finally {
        resolver.close();
    }
}
 
源代码25 项目: netty-4.1.22   文件: DnsNameResolverTest.java
private static void testResolve0(ResolvedAddressTypes addressTypes, InetAddress expectedAddr, String name) {
    DnsNameResolver resolver = newResolver(addressTypes).build();
    try {
        InetAddress address = resolver.resolve(name).syncUninterruptibly().getNow();
        assertEquals(expectedAddr, address);

        // We are resolving the local address, so we shouldn't make any queries.
        assertNoQueriesMade(resolver);
    } finally {
        resolver.close();
    }
}
 
源代码26 项目: netty-4.1.22   文件: DnsNameResolverTest.java
private static void testResolveAll0(ResolvedAddressTypes addressTypes, InetAddress expectedAddr, String name) {
    DnsNameResolver resolver = newResolver(addressTypes).build();
    try {
        List<InetAddress> addresses = resolver.resolveAll(name).syncUninterruptibly().getNow();
        assertEquals(1, addresses.size());
        assertEquals(expectedAddr, addresses.get(0));

        // We are resolving the local address, so we shouldn't make any queries.
        assertNoQueriesMade(resolver);
    } finally {
        resolver.close();
    }
}
 
源代码27 项目: servicetalk   文件: DefaultDnsClient.java
private static ResolvedAddressTypes toNettyType(final DnsResolverAddressTypes dnsResolverAddressTypes) {
    switch (dnsResolverAddressTypes) {
        case IPV4_ONLY:
            return ResolvedAddressTypes.IPV4_ONLY;
        case IPV6_ONLY:
            return ResolvedAddressTypes.IPV6_ONLY;
        case IPV6_PREFERRED:
            return ResolvedAddressTypes.IPV6_PREFERRED;
        case IPV4_PREFERRED:
            return ResolvedAddressTypes.IPV4_PREFERRED;
        default:
            throw new Error();
    }
}
 
源代码28 项目: armeria   文件: DnsAddressEndpointGroup.java
private static List<DnsQuestion> newQuestions(
        String hostname, @Nullable ResolvedAddressTypes resolvedAddressTypes) {

    if (resolvedAddressTypes == null) {
        if (NetUtil.isIpV4StackPreferred() || !anyInterfaceSupportsIpV6()) {
            resolvedAddressTypes = ResolvedAddressTypes.IPV4_ONLY;
        } else {
            resolvedAddressTypes = ResolvedAddressTypes.IPV4_PREFERRED;
        }
    }

    final ImmutableList.Builder<DnsQuestion> builder = ImmutableList.builder();
    switch (resolvedAddressTypes) {
        case IPV4_ONLY:
        case IPV4_PREFERRED:
        case IPV6_PREFERRED:
            builder.add(DnsQuestionWithoutTrailingDot.of(hostname, DnsRecordType.A));
            break;
    }
    switch (resolvedAddressTypes) {
        case IPV6_ONLY:
        case IPV4_PREFERRED:
        case IPV6_PREFERRED:
            builder.add(DnsQuestionWithoutTrailingDot.of(hostname, DnsRecordType.AAAA));
            break;
    }
    return builder.build();
}
 
源代码29 项目: armeria   文件: DefaultDnsNameResolver.java
public DefaultDnsNameResolver(DnsNameResolver delegate, EventLoop eventLoop, long queryTimeoutMillis) {
    this.delegate = requireNonNull(delegate, "delegate");
    this.eventLoop = requireNonNull(eventLoop, "eventLoop");
    checkArgument(queryTimeoutMillis >= 0, "queryTimeoutMillis: %s (expected: >= 0)", queryTimeoutMillis);
    this.queryTimeoutMillis = queryTimeoutMillis;

    if (delegate.resolvedAddressTypes() == ResolvedAddressTypes.IPV6_PREFERRED) {
        preferredOrder = Ordering.explicit(DnsRecordType.AAAA, DnsRecordType.A);
    } else {
        preferredOrder = Ordering.explicit(DnsRecordType.A, DnsRecordType.AAAA);
    }
}
 
源代码30 项目: armeria   文件: RefreshingAddressResolverTest.java
private static DnsResolverGroupBuilder builder(TestDnsServer... servers) {
    final DnsServerAddressStreamProvider dnsServerAddressStreamProvider =
            hostname -> DnsServerAddresses.sequential(
                    Stream.of(servers).map(TestDnsServer::addr).collect(toImmutableList())).stream();
    return new DnsResolverGroupBuilder()
            .dnsServerAddressStreamProvider(dnsServerAddressStreamProvider)
            .resolvedAddressTypes(ResolvedAddressTypes.IPV4_ONLY)
            .traceEnabled(false);
}