@Test public void testResolveSRV() throws Exception { final int priority = 10; final int weight = 1; final int port = 80; final String target = "vertx.io"; dnsServer.testResolveSRV(priority, weight, port, target); DnsClient dns = prepareDns(); dns.resolveSRV("vertx.io", ar -> { List<SrvRecord> result = ar.result(); assertNotNull(result); assertFalse(result.isEmpty()); assertEquals(1, result.size()); SrvRecord record = result.get(0); assertEquals(priority, record.priority()); assertEquals(weight, record.weight()); assertEquals(port, record.port()); assertEquals(target, record.target()); testComplete(); }); await(); }
private void attemptRecover(final Callback<List<EndpointDefinition>> callback, final String serviceURL, final Throwable error) { final DnsClient dnsClient2 = dnsClientProvider.getIfErrors(); dnsClient2.resolveSRV(serviceURL, event -> { if (event.succeeded()) { if (debug) logger.debug("loadServiceEndpointsByDNSService FAIL OVER SUCCESS serviceURL={} ", serviceURL); callback.resolve(convertEndpoints(event.result())); } else { logger.info("loadServiceEndpointsByDNSService FAIL OVER FAILURE " + serviceURL, event.cause()); //Send the first failure callback.onError(error); } }); }
/** * Load the services nodes by its "${SRV.service}${SRV.name}". * * @param callback callback * @param serviceURL serviceURL */ public void loadServiceEndpointsByDNSService(final Callback<List<EndpointDefinition>> callback, final String serviceURL) { final DnsClient dnsClient = dnsClientProvider.get(); dnsClient.resolveSRV(serviceURL, event -> { if (event.succeeded()) { if (debug) logger.debug("loadServiceEndpointsByDNSService SUCCESS serviceURL={} ", serviceURL); callback.resolve(convertEndpoints(event.result())); } else { Throwable error = event.cause(); logger.info("loadServiceEndpointsByDNSService FAILURE " + serviceURL, error); attemptRecover(callback, serviceURL, error); } } ); }
@Test public void testIllegalArguments() throws Exception { dnsServer.testResolveAAAA("::1"); DnsClient dns = prepareDns(); assertNullPointerException(() -> dns.lookup(null, ar -> {})); assertNullPointerException(() -> dns.lookup4(null, ar -> {})); assertNullPointerException(() -> dns.lookup6(null, ar -> {})); assertNullPointerException(() -> dns.resolveA(null, ar -> {})); assertNullPointerException(() -> dns.resolveAAAA(null, ar -> {})); assertNullPointerException(() -> dns.resolveCNAME(null, ar -> {})); assertNullPointerException(() -> dns.resolveMX(null, ar -> {})); assertNullPointerException(() -> dns.resolveTXT(null, ar -> {})); assertNullPointerException(() -> dns.resolvePTR(null, ar -> {})); assertNullPointerException(() -> dns.resolveNS(null, ar -> {})); assertNullPointerException(() -> dns.resolveSRV(null, ar -> {})); }
/** * Try to resolve the SRV records for the given name. * @param name the name for which the SRV records should be resolved * @param handler the to notify with the . The handler will get notified with a List that contains all resolved {@link io.vertx.rxjava.core.dns.SrvRecord}s. If none was found it will get notified with an empty {@link java.util.List}. If an error accours it will get failed. * @return a reference to this, so the API can be used fluently. */ public io.vertx.rxjava.core.dns.DnsClient resolveSRV(String name, Handler<AsyncResult<List<io.vertx.rxjava.core.dns.SrvRecord>>> handler) { delegate.resolveSRV(name, new Handler<AsyncResult<java.util.List<io.vertx.core.dns.SrvRecord>>>() { public void handle(AsyncResult<java.util.List<io.vertx.core.dns.SrvRecord>> ar) { if (ar.succeeded()) { handler.handle(io.vertx.core.Future.succeededFuture(ar.result().stream().map(elt -> io.vertx.rxjava.core.dns.SrvRecord.newInstance(elt)).collect(java.util.stream.Collectors.toList()))); } else { handler.handle(io.vertx.core.Future.failedFuture(ar.cause())); } } }); return this; }
/** * Try to resolve the SRV records for the given name. * @param name the name for which the SRV records should be resolved * @param handler the to notify with the . The handler will get notified with a List that contains all resolved {@link io.vertx.rxjava.core.dns.SrvRecord}s. If none was found it will get notified with an empty {@link java.util.List}. If an error accours it will get failed. * @return a reference to this, so the API can be used fluently. */ public io.vertx.rxjava.core.dns.DnsClient resolveSRV(String name, Handler<AsyncResult<List<io.vertx.rxjava.core.dns.SrvRecord>>> handler) { delegate.resolveSRV(name, new Handler<AsyncResult<java.util.List<io.vertx.core.dns.SrvRecord>>>() { public void handle(AsyncResult<java.util.List<io.vertx.core.dns.SrvRecord>> ar) { if (ar.succeeded()) { handler.handle(io.vertx.core.Future.succeededFuture(ar.result().stream().map(elt -> io.vertx.rxjava.core.dns.SrvRecord.newInstance(elt)).collect(java.util.stream.Collectors.toList()))); } else { handler.handle(io.vertx.core.Future.failedFuture(ar.cause())); } } }); return this; }
@Test public void testResolveSRV() throws Exception { final int priority = 10; final int weight = 1; final int port = 80; final String target = "vertx.io"; dnsServer.testResolveSRV(priority, weight, port, target); DnsClient dns = prepareDns(); dns.resolveSRV("vertx.io", ar -> { List<SrvRecord> result = ar.result(); assertNotNull(result); assertFalse(result.isEmpty()); assertEquals(1, result.size()); SrvRecord record = result.get(0); assertEquals(priority, record.priority()); assertEquals(weight, record.weight()); assertEquals(port, record.port()); assertEquals(target, record.target()); testComplete(); }); await(); }
private void attemptRecover(final Callback<List<EndpointDefinition>> callback, final String serviceURL, final Throwable error) { final DnsClient dnsClient2 = dnsClientProvider.getIfErrors(); dnsClient2.resolveSRV(serviceURL, event -> { if (event.succeeded()) { if (debug) logger.debug("loadServiceEndpointsByDNSService FAIL OVER SUCCESS serviceURL={} ", serviceURL); callback.returnThis(convertEndpoints(event.result())); } else { logger.info("loadServiceEndpointsByDNSService FAIL OVER FAILURE " + serviceURL, event.cause()); //Send the first failure callback.onError(error); } }); }
/** * Load the services nodes by its "${SRV.service}${SRV.name}". * @param callback callback * @param serviceURL serviceURL */ public void loadServiceEndpointsByDNSService(final Callback<List<EndpointDefinition>> callback, final String serviceURL) { final DnsClient dnsClient = dnsClientProvider.get(); dnsClient.resolveSRV(serviceURL, event -> { if (event.succeeded()) { if (debug) logger.debug("loadServiceEndpointsByDNSService SUCCESS serviceURL={} ", serviceURL); callback.returnThis(convertEndpoints(event.result())); } else { Throwable error = event.cause(); logger.info("loadServiceEndpointsByDNSService FAILURE " + serviceURL, error); attemptRecover(callback, serviceURL, error); } } ); }
@Test public void testIllegalArguments() throws Exception { dnsServer.testResolveAAAA("::1"); DnsClient dns = prepareDns(); assertNullPointerException(() -> dns.lookup(null, ar -> {})); assertNullPointerException(() -> dns.lookup4(null, ar -> {})); assertNullPointerException(() -> dns.lookup6(null, ar -> {})); assertNullPointerException(() -> dns.resolveA(null, ar -> {})); assertNullPointerException(() -> dns.resolveAAAA(null, ar -> {})); assertNullPointerException(() -> dns.resolveCNAME(null, ar -> {})); assertNullPointerException(() -> dns.resolveMX(null, ar -> {})); assertNullPointerException(() -> dns.resolveTXT(null, ar -> {})); assertNullPointerException(() -> dns.resolvePTR(null, ar -> {})); assertNullPointerException(() -> dns.resolveNS(null, ar -> {})); assertNullPointerException(() -> dns.resolveSRV(null, ar -> {})); }