Search in sources :

Example 6 with FakeDNSServer

use of io.vertx.test.fakedns.FakeDNSServer in project vert.x by eclipse.

the class HostnameResolutionTest method testServerFailover.

@Test
public void testServerFailover() throws Exception {
    FakeDNSServer server = new FakeDNSServer(FakeDNSServer.A_store(Collections.singletonMap("vertx.io", "127.0.0.1"))).port(FakeDNSServer.PORT + 2);
    try {
        AddressResolverOptions options = new AddressResolverOptions();
        options.setOptResourceEnabled(false);
        // 2 + 2
        options.setMaxQueries(4);
        server.start();
        InetSocketAddress dnsServerAddress = server.localAddress();
        // First server is unreachable
        options.addServer(dnsServerAddress.getAddress().getHostAddress() + ":" + (FakeDNSServer.PORT + 1));
        // Second server is the failed over server
        options.addServer(dnsServerAddress.getAddress().getHostAddress() + ":" + dnsServerAddress.getPort());
        AddressResolver resolver = new AddressResolver((VertxImpl) vertx, options);
        CompletableFuture<InetAddress> result = new CompletableFuture<>();
        resolver.resolveHostname("vertx.io", ar -> {
            if (ar.succeeded()) {
                result.complete(ar.result());
            } else {
                result.completeExceptionally(ar.cause());
            }
        });
        String resolved = result.get(10, TimeUnit.SECONDS).getHostAddress();
        assertEquals("127.0.0.1", resolved);
    } finally {
        server.stop();
    }
}
Also used : AddressResolverOptions(io.vertx.core.dns.AddressResolverOptions) AddressResolver(io.vertx.core.impl.AddressResolver) CompletableFuture(java.util.concurrent.CompletableFuture) InetSocketAddress(java.net.InetSocketAddress) InetAddress(java.net.InetAddress) FakeDNSServer(io.vertx.test.fakedns.FakeDNSServer) Test(org.junit.Test)

Aggregations

FakeDNSServer (io.vertx.test.fakedns.FakeDNSServer)6 InetSocketAddress (java.net.InetSocketAddress)5 AddressResolver (io.vertx.core.impl.AddressResolver)4 InetAddress (java.net.InetAddress)4 CompletableFuture (java.util.concurrent.CompletableFuture)4 Test (org.junit.Test)3 AddressResolverOptions (io.vertx.core.dns.AddressResolverOptions)2 FakeClusterManager (io.vertx.test.fakecluster.FakeClusterManager)1 UnknownHostException (java.net.UnknownHostException)1 ArrayList (java.util.ArrayList)1