@Test public void testResolveAAAA() throws Exception { dnsServer.testResolveAAAA("::1"); DnsClient dns = prepareDns(); dns.resolveAAAA("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals("0:0:0:0:0:0:0:1", result.get(0)); testComplete(); })); await(); }
@Test public void testResolveA() throws Exception { final String ip = "10.0.0.1"; dnsServer.testResolveA(ip); DnsClient dns = prepareDns(); dns.resolveA("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(ip, result.get(0)); ((DnsClientImpl) dns).inProgressQueries(num -> { assertEquals(0, (int)num); testComplete(); }); })); await(); }
@Test public void testResolveNS() throws Exception { final String ns = "ns.vertx.io"; dnsServer.testResolveNS(ns); DnsClient dns = prepareDns(); dns.resolveNS("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(ns, result.get(0)); testComplete(); })); await(); }
@Test public void testResolveTXT() throws Exception { final String txt = "vertx is awesome"; dnsServer.testResolveTXT(txt); DnsClient dns = prepareDns(); dns.resolveTXT("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(txt, result.get(0)); testComplete(); })); await(); }
@Test public void testTimeout() throws Exception { DnsClient dns = vertx.createDnsClient(new DnsClientOptions().setHost("localhost").setPort(10000).setQueryTimeout(5000)); dns.lookup("vertx.io", onFailure(result -> { assertEquals(VertxException.class, result.getClass()); assertEquals("DNS query timeout for vertx.io", result.getMessage()); ((DnsClientImpl) dns).inProgressQueries(num -> { assertEquals(0, (int)num); testComplete(); }); })); await(); }
@Test public void testResolveMX() throws Exception { final String mxRecord = "mail.vertx.io"; final int prio = 10; dnsServer.testResolveMX(prio, mxRecord); DnsClient dns = prepareDns(); dns.resolveMX("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); MxRecord record = result.get(0); assertEquals(prio, record.priority()); assertEquals(record.name(), mxRecord); testComplete(); })); await(); }
@Test public void testResolveAIpV6() throws Exception { final String ip = "10.0.0.1"; dnsServer.testResolveA(ip).ipAddress("::1"); // force the fake dns server to Ipv6 DnsClient dns = prepareDns(); dns.resolveA("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(ip, result.get(0)); ((DnsClientImpl) dns).inProgressQueries(num -> { assertEquals(0, (int)num); testComplete(); }); })); await(); }
@Test public void testResolveCNAME() throws Exception { final String cname = "cname.vertx.io"; dnsServer.testResolveCNAME(cname); DnsClient dns = prepareDns(); dns.resolveCNAME("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); String record = result.get(0); assertFalse(record.isEmpty()); assertEquals(cname, record); testComplete(); })); await(); }
@Test public void testRecursionDesired() throws Exception { final String ip = "10.0.0.1"; dnsServer.testResolveA(ip); DnsClient dns = prepareDns(new DnsClientOptions().setRecursionDesired(true)); dns.resolveA("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(ip, result.get(0)); DnsMessage msg = dnsServer.pollMessage(); assertTrue(msg.isRecursionDesired()); ((DnsClientImpl) dns).inProgressQueries(num -> { assertEquals(0, (int)num); testComplete(); }); })); await(); }
@Test public void testRecursionNotDesired() throws Exception { final String ip = "10.0.0.1"; dnsServer.testResolveA(ip); DnsClient dns = prepareDns(new DnsClientOptions().setRecursionDesired(false)); dns.resolveA("vertx.io", onSuccess(result -> { assertFalse(result.isEmpty()); assertEquals(1, result.size()); assertEquals(ip, result.get(0)); DnsMessage msg = dnsServer.pollMessage(); assertFalse(msg.isRecursionDesired()); ((DnsClientImpl) dns).inProgressQueries(num -> { assertEquals(0, (int)num); testComplete(); }); })); await(); }
private void testDefaultDnsClient(Function<Vertx, DnsClient> clientProvider) throws Exception { final String ip = "10.0.0.1"; dnsServer.testLookup4(ip); VertxOptions vertxOptions = new VertxOptions(); InetSocketAddress fakeServerAddress = dnsServer.localAddress(); vertxOptions.getAddressResolverOptions().addServer(fakeServerAddress.getHostString() + ":" + fakeServerAddress.getPort()); Vertx vertxWithFakeDns = Vertx.vertx(vertxOptions); DnsClient dnsClient = clientProvider.apply(vertxWithFakeDns); dnsClient.lookup4("vertx.io", onSuccess(result -> { assertEquals(ip, result); testComplete(); })); await(); vertxWithFakeDns.close(); }
@Test public void testUnresolvedDnsServer() throws Exception { final String ip = "10.0.0.1"; try { DnsClient dns = vertx.createDnsClient(new DnsClientOptions().setHost("iamanunresolvablednsserver.com").setPort(53)); fail(); } catch (Exception e) { assertTrue(e instanceof IllegalArgumentException); assertEquals("Cannot resolve the host to a valid ip address", e.getMessage()); } }
@Test public void testLookupNonExisting() throws Exception { dnsServer.testLookupNonExisting(); DnsClient dns = prepareDns(); dns.lookup("gfegjegjf.sg1", ar -> { DnsException cause = (DnsException)ar.cause(); assertEquals(DnsResponseCode.NXDOMAIN, cause.code()); testComplete(); }); await(); }
@Test public void testLookup4CNAME() throws Exception { final String cname = "cname.vertx.io"; final String ip = "10.0.0.1"; dnsServer.testLookup4CNAME(cname, ip); DnsClient dns = prepareDns(); dns.lookup4("vertx.io", onSuccess(result -> { assertEquals(ip, result); testComplete(); })); await(); }
@Test public void testLookup6() throws Exception { dnsServer.testLookup6(); DnsClient dns = prepareDns(); dns.lookup6("vertx.io", onSuccess(result -> { assertEquals("0:0:0:0:0:0:0:1", result); testComplete(); })); await(); }
@Test public void testReverseLookupIpv6() throws Exception { String ptr = "ptr.vertx.io"; dnsServer.testReverseLookup(ptr); DnsClient dns = prepareDns(); dns.reverseLookup("::1", onSuccess(result -> { assertEquals(ptr, result); testComplete(); })); await(); }
@Test public void testLookup() throws Exception { String ip = "10.0.0.1"; dnsServer.testLookup(ip); DnsClient dns = prepareDns(); dns.lookup("vertx.io", onSuccess(result -> { assertEquals(ip, result); testComplete(); })); await(); }
@Test public void testReverseLookupIpv4() throws Exception { String address = "10.0.0.1"; String ptr = "ptr.vertx.io"; dnsServer.testReverseLookup(ptr); DnsClient dns = prepareDns(); dns.reverseLookup(address, onSuccess(result -> { assertEquals(ptr, result); testComplete(); })); await(); }
@Test public void testResolvePTR() throws Exception { final String ptr = "ptr.vertx.io"; dnsServer.testResolvePTR(ptr); DnsClient dns = prepareDns(); dns.resolvePTR("10.0.0.1.in-addr.arpa", onSuccess(result -> { assertEquals(ptr, result); testComplete(); })); await(); }
@Test public void testLookup4() throws Exception { final String ip = "10.0.0.1"; dnsServer.testLookup4(ip); DnsClient dns = prepareDns(); dns.lookup4("vertx.io", onSuccess(result -> { assertEquals(ip, result); DnsMessage msg = dnsServer.pollMessage(); assertTrue(msg.isRecursionDesired()); testComplete(); })); await(); }