@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())); })); }); }); }); }); })); }