use of io.vertx.core.dns.AddressResolverOptions in project vert.x by eclipse.
the class HostnameResolutionTest method testResolveMissingLocalhost.
@Test
public void testResolveMissingLocalhost() throws Exception {
InetAddress localhost = InetAddress.getByName("localhost");
// Set a dns resolver that won't resolve localhost
dnsServer.stop();
dnsServer = FakeDNSServer.testResolveASameServer("127.0.0.1");
dnsServer.start();
dnsServerAddress = (InetSocketAddress) dnsServer.getTransports()[0].getAcceptor().getLocalAddress();
// Test using the resolver API
VertxInternal vertx = (VertxInternal) vertx(new VertxOptions().setAddressResolverOptions(new AddressResolverOptions().addServer(dnsServerAddress.getAddress().getHostAddress() + ":" + dnsServerAddress.getPort()).setOptResourceEnabled(false)));
CompletableFuture<Void> test1 = new CompletableFuture<>();
vertx.resolveAddress("localhost", ar -> {
if (ar.succeeded()) {
InetAddress resolved = ar.result();
if (resolved.equals(localhost)) {
test1.complete(null);
} else {
test1.completeExceptionally(new AssertionError("Unexpected localhost value " + resolved));
}
} else {
test1.completeExceptionally(ar.cause());
}
});
test1.get(10, TimeUnit.SECONDS);
CompletableFuture<Void> test2 = new CompletableFuture<>();
vertx.resolveAddress("LOCALHOST", ar -> {
if (ar.succeeded()) {
InetAddress resolved = ar.result();
if (resolved.equals(localhost)) {
test2.complete(null);
} else {
test2.completeExceptionally(new AssertionError("Unexpected localhost value " + resolved));
}
} else {
test2.completeExceptionally(ar.cause());
}
});
test2.get(10, TimeUnit.SECONDS);
// Test using bootstrap
CompletableFuture<Void> test3 = new CompletableFuture<>();
NetServer server = vertx.createNetServer(new NetServerOptions().setPort(1234).setHost(localhost.getHostAddress()));
server.connectHandler(so -> {
so.write("hello").end();
});
server.listen(ar -> {
if (ar.succeeded()) {
test3.complete(null);
} else {
test3.completeExceptionally(ar.cause());
}
});
test3.get(10, TimeUnit.SECONDS);
CompletableFuture<Void> test4 = new CompletableFuture<>();
NetClient client = vertx.createNetClient();
client.connect(1234, "localhost", ar -> {
if (ar.succeeded()) {
test4.complete(null);
} else {
test4.completeExceptionally(ar.cause());
}
});
test4.get(10, TimeUnit.SECONDS);
}
use of io.vertx.core.dns.AddressResolverOptions in project vert.x by eclipse.
the class HostnameResolutionTest method testDefaultJsonOptions.
@Test
public void testDefaultJsonOptions() {
AddressResolverOptions options = new AddressResolverOptions(new JsonObject());
assertEquals(AddressResolverOptions.DEFAULT_OPT_RESOURCE_ENABLED, options.isOptResourceEnabled());
assertEquals(AddressResolverOptions.DEFAULT_SERVERS, options.getServers());
assertEquals(AddressResolverOptions.DEFAULT_CACHE_MIN_TIME_TO_LIVE, options.getCacheMinTimeToLive());
assertEquals(AddressResolverOptions.DEFAULT_CACHE_MAX_TIME_TO_LIVE, options.getCacheMaxTimeToLive());
assertEquals(AddressResolverOptions.DEFAULT_CACHE_NEGATIVE_TIME_TO_LIVE, options.getCacheNegativeTimeToLive());
assertEquals(AddressResolverOptions.DEFAULT_QUERY_TIMEOUT, options.getQueryTimeout());
assertEquals(AddressResolverOptions.DEFAULT_MAX_QUERIES, options.getMaxQueries());
assertEquals(AddressResolverOptions.DEFAULT_RD_FLAG, options.getRdFlag());
assertEquals(AddressResolverOptions.DEFAULT_SEACH_DOMAINS, options.getSearchDomains());
assertEquals(AddressResolverOptions.DEFAULT_NDOTS, options.getNdots());
}
use of io.vertx.core.dns.AddressResolverOptions in project vert.x by eclipse.
the class HostnameResolutionTest method testResolveFromFile.
@Test
public void testResolveFromFile() {
File f = new File(new File(new File(new File("src"), "test"), "resources"), "hosts_config.txt");
VertxInternal vertx = (VertxInternal) vertx(new VertxOptions().setAddressResolverOptions(new AddressResolverOptions().setHostsPath(f.getAbsolutePath())));
vertx.resolveAddress("server.net", onSuccess(addr -> {
assertEquals("192.168.0.15", addr.getHostAddress());
assertEquals("server.net", addr.getHostName());
testComplete();
}));
await();
}
use of io.vertx.core.dns.AddressResolverOptions in project vert.x by eclipse.
the class HostnameResolutionTest method testSearchDomain.
@Test
public void testSearchDomain() throws Exception {
Map<String, String> records = new HashMap<>();
records.put("host1.foo.com", "127.0.0.1");
records.put("host1", "127.0.0.2");
records.put("host3", "127.0.0.3");
records.put("host4.sub.foo.com", "127.0.0.4");
records.put("host5.sub.foo.com", "127.0.0.5");
records.put("host5.sub", "127.0.0.6");
dnsServer.stop();
dnsServer = FakeDNSServer.testResolveA(records);
dnsServer.start();
VertxInternal vertx = (VertxInternal) vertx(new VertxOptions().setAddressResolverOptions(new AddressResolverOptions().addServer(dnsServerAddress.getAddress().getHostAddress() + ":" + dnsServerAddress.getPort()).setOptResourceEnabled(false).addSearchDomain("foo.com")));
// host1 resolves host1.foo.com with foo.com search domain
CountDownLatch latch1 = new CountDownLatch(1);
vertx.resolveAddress("host1", onSuccess(resolved -> {
assertEquals("127.0.0.1", resolved.getHostAddress());
latch1.countDown();
}));
awaitLatch(latch1);
// "host1." absolute query
CountDownLatch latch2 = new CountDownLatch(1);
vertx.resolveAddress("host1.", onSuccess(resolved -> {
assertEquals("127.0.0.2", resolved.getHostAddress());
latch2.countDown();
}));
awaitLatch(latch2);
// "host2" not resolved
CountDownLatch latch3 = new CountDownLatch(1);
vertx.resolveAddress("host2", onFailure(cause -> {
assertTrue(cause instanceof UnknownHostException);
latch3.countDown();
}));
awaitLatch(latch3);
// "host3" does not contain a dot or is not absolute
CountDownLatch latch4 = new CountDownLatch(1);
vertx.resolveAddress("host3", onFailure(cause -> {
assertTrue(cause instanceof UnknownHostException);
latch4.countDown();
}));
awaitLatch(latch4);
// "host3." does not contain a dot but is absolute
CountDownLatch latch5 = new CountDownLatch(1);
vertx.resolveAddress("host3.", onSuccess(resolved -> {
assertEquals("127.0.0.3", resolved.getHostAddress());
latch5.countDown();
}));
awaitLatch(latch5);
// "host4.sub" contains a dot but not resolved then resolved to "host4.sub.foo.com" with "foo.com" search domain
CountDownLatch latch6 = new CountDownLatch(1);
vertx.resolveAddress("host4.sub", onSuccess(resolved -> {
assertEquals("127.0.0.4", resolved.getHostAddress());
latch6.countDown();
}));
awaitLatch(latch6);
// "host5.sub" contains a dot and is resolved
CountDownLatch latch7 = new CountDownLatch(1);
vertx.resolveAddress("host5.sub", onSuccess(resolved -> {
assertEquals("127.0.0.6", resolved.getHostAddress());
latch7.countDown();
}));
awaitLatch(latch7);
}
use of io.vertx.core.dns.AddressResolverOptions in project vert.x by eclipse.
the class HostnameResolutionTest method testInvalidHostsConfig.
@Test
public void testInvalidHostsConfig() {
try {
AddressResolverOptions options = new AddressResolverOptions().setHostsPath("whatever.txt");
vertx(new VertxOptions().setAddressResolverOptions(options));
fail();
} catch (VertxException ignore) {
}
}
Aggregations