case "name": if (member.getValue() instanceof String) { obj.setName((String)member.getValue());
@Test(timeout = 3 * 60 * 1000) public void deregisterAfter(TestContext tc) { if (System.getProperty("skipDeregisterAfter") != null) { System.out.println("skip"); return; } CheckOptions opts = new CheckOptions() .setDeregisterAfter("1m") .setStatus(CheckStatus.PASSING) .setTtl("10s") .setName("checkName"); Async async = tc.async(); createCheck(tc, opts, checkId -> { getCheckInfo(tc, checkId, passing -> { tc.assertEquals(CheckStatus.PASSING, passing.getStatus()); vertx.setTimer(30000, l1 -> { getCheckInfo(tc, checkId, critical -> { tc.assertEquals(CheckStatus.CRITICAL, critical.getStatus()); vertx.setTimer(90000, l2 -> { ctx.writeClient().localChecks(tc.asyncAssertSuccess(checks -> { tc.assertEquals(checks.stream().filter(c -> c.getName().equals("checkName")).count(), (long) 0); async.complete(); })); }); }); }); }); }); }
@Test public void bindCheckToService() { String serviceName = "serviceName"; ServiceOptions service = new ServiceOptions() .setName(serviceName) .setAddress("10.0.0.1") .setPort(8080); runAsync(h -> ctx.writeClient().registerService(service, h)); List<Service> services = getAsync(h -> ctx.writeClient().localServices(h)); Service s = services.stream().filter(i -> "serviceName".equals(i.getName())).findFirst().get(); String serviceId = s.getId(); assertEquals(s.getAddress(), "10.0.0.1"); assertEquals(s.getPort(), 8080); CheckOptions check = new CheckOptions() .setId("checkId") .setName("checkName") .setNotes("checkNotes") .setServiceId(serviceId) .setStatus(CheckStatus.PASSING) .setTtl("10s"); runAsync(h -> ctx.writeClient().registerCheck(check, h)); List<Check> checks = getAsync(h -> ctx.writeClient().localChecks(h)); Check c = checks.stream().filter(i -> "checkId".equals(i.getId())).findFirst().get(); assertEquals(c.getServiceId(), serviceId); assertEquals(c.getStatus(), CheckStatus.PASSING); assertEquals(c.getNotes(), "checkNotes"); runAsync(h -> ctx.writeClient().deregisterService(serviceId, h)); }
@Test public void watchService() throws InterruptedException { StateConsumer<String> consumer = new StateConsumer<>(); ServiceOptions service = new ServiceOptions() .setCheckOptions(new CheckOptions() .setStatus(CheckStatus.PASSING) .setTtl("4s") .setName(randomAlphaString(10))) .setId(randomAlphaString(10)) .setName(randomAlphaString(10)); Watch<ServiceEntryList> watch = Watch.service(service.getName(), vertx, ctx.readClientOptions()) .setHandler(list -> { if (list.succeeded()) { consumer.consume(list.nextResult().getList() .stream().filter(s -> s.getService().getName().equals(service.getName())) .map(e -> e.getService().getName() + "/" + e.getChecks().stream() .filter(c -> c.getId().equals("service:" + service.getId())) .map(c -> c.getStatus().name()).findFirst().orElse("")) .findFirst().orElse("")); } }) .start(); consumer.await(""); runAsync(h -> ctx.writeClient().registerService(service, h)); consumer.await(service.getName() + "/" + CheckStatus.PASSING.name()); consumer.await(service.getName() + "/" + CheckStatus.CRITICAL.name()); consumer.check(); watch.stop(); runAsync(h -> ctx.writeClient().deregisterService(service.getId(), h)); }
public static CheckOptions randomCheckOptions() { return new CheckOptions() .setId(randomAlphaString(10)) .setName(randomAlphaString(10)) .setNotes(randomAlphaString(10)) .setServiceId(randomAlphaString(10)) .setStatus(randomElement(CheckStatus.values())) .setTtl(randomSeconds()); }
@Test public void grpcCheckLifecycle(TestContext tc) { if (ctx.consulVersion().compareTo("1.0.3") < 0) { System.out.println("skip " + ctx.consulVersion() + " version"); return; } GrpcHealthReporter reporter = new GrpcHealthReporter(vertx); Async async = tc.async(); CheckOptions opts = new CheckOptions() .setGrpc("localhost:" + reporter.port() + "/testee") .setInterval("2s") .setName("checkName"); String checkId = createCheck(opts); reporter.start(tc.asyncAssertSuccess(v1 -> { vertx.setTimer(3000, t1 -> { getCheckInfo(tc, checkId, c1 -> { tc.assertEquals(CheckStatus.PASSING, c1.getStatus()); reporter.setStatus(HealthCheck.HealthCheckResponse.ServingStatus.NOT_SERVING); vertx.setTimer(3000, t2 -> { getCheckInfo(tc, checkId, c2 -> { tc.assertEquals(CheckStatus.CRITICAL, c2.getStatus()); reporter.close(tc.asyncAssertSuccess(v2 -> { ctx.writeClient().deregisterCheck(checkId, tc.asyncAssertSuccess(v -> async.complete())); })); }); }); }); }); })); }
@Test public void tcpCheckLifecycle() { HttpHealthReporter reporter = new HttpHealthReporter(vertx); CheckOptions opts = new CheckOptions() .setTcp("localhost:" + reporter.port()) .setInterval("2s") .setName("checkName"); String checkId = createCheck(opts); sleep(vertx, 3000); Check check = getCheckInfo(checkId); assertEquals(CheckStatus.PASSING, check.getStatus()); reporter.close(); sleep(vertx, 3000); check = getCheckInfo(checkId); assertEquals(CheckStatus.CRITICAL, check.getStatus()); runAsync(h -> ctx.writeClient().deregisterCheck(checkId, h)); }
@Test public void scriptCheckLifecycle() { ScriptHealthReporter reporter = new ScriptHealthReporter(); CheckOptions opts = new CheckOptions() .setScriptArgs(reporter.scriptArgs()) .setInterval("2s") .setName("checkName"); String checkId = createCheck(opts); sleep(vertx, 3000); Check check = getCheckInfo(checkId); assertEquals(CheckStatus.PASSING, check.getStatus()); reporter.setStatus(CheckStatus.WARNING); sleep(vertx, 3000); check = getCheckInfo(checkId); assertEquals(CheckStatus.WARNING, check.getStatus()); reporter.setStatus(CheckStatus.CRITICAL); sleep(vertx, 3000); check = getCheckInfo(checkId); assertEquals(CheckStatus.CRITICAL, check.getStatus()); runAsync(h -> ctx.writeClient().deregisterCheck(checkId, h)); }
@Test public void httpCheckLifecycle() { HttpHealthReporter reporter = new HttpHealthReporter(vertx); CheckOptions opts = new CheckOptions() .setHttp("http://localhost:" + reporter.port()) .setInterval("2s") .setName("checkName"); String checkId = createCheck(opts); sleep(vertx, 3000); Check check = getCheckInfo(checkId); assertEquals(CheckStatus.PASSING, check.getStatus()); reporter.setStatus(CheckStatus.WARNING); sleep(vertx, 3000); check = getCheckInfo(checkId); assertEquals(CheckStatus.WARNING, check.getStatus()); reporter.setStatus(CheckStatus.CRITICAL); sleep(vertx, 3000); check = getCheckInfo(checkId); assertEquals(CheckStatus.CRITICAL, check.getStatus()); reporter.close(); runAsync(h -> ctx.writeClient().deregisterCheck(checkId, h)); }
@Test public void ttlCheckLifecycle(TestContext tc) { CheckOptions opts = new CheckOptions() .setTtl("2s") .setName(randomAlphaString(10)); String checkId = createCheck(opts); Check check; runAsync(h -> ctx.writeClient().warnCheckWithNote(checkId, "warn", h)); check = getCheckInfo(checkId); assertEquals(CheckStatus.WARNING, check.getStatus()); assertEquals("warn", check.getOutput()); runAsync(h -> ctx.writeClient().failCheckWithNote(checkId, "fail", h)); check = getCheckInfo(checkId); assertEquals(CheckStatus.CRITICAL, check.getStatus()); assertEquals("fail", check.getOutput()); runAsync(h -> ctx.writeClient().passCheckWithNote(checkId, "pass", h)); check = getCheckInfo(checkId); assertEquals(CheckStatus.PASSING, check.getStatus()); assertEquals("pass", check.getOutput()); sleep(vertx, 3000); check = getCheckInfo(checkId); assertEquals(CheckStatus.CRITICAL, check.getStatus()); runAsync(h -> ctx.writeClient().deregisterCheck(checkId, h)); }