public static void toJson(CheckList obj, java.util.Map<String, Object> json) { json.put("index", obj.getIndex()); if (obj.getList() != null) { JsonArray array = new JsonArray(); obj.getList().forEach(item -> array.add(item.toJson())); json.put("list", array); } } }
private void checkCheckList(CheckList expected, CheckList actual) { assertEquals(expected, actual); assertEquals(expected.hashCode(), actual.hashCode()); assertEquals(expected.getIndex(), actual.getIndex()); List<Check> expectedList = expected.getList(); List<Check> actualList = actual.getList(); assertTrue(expectedList.containsAll(actualList)); assertTrue(actualList.containsAll(expectedList)); }
@Test public void testCheckListCopy() { List<Check> checks = new ArrayList<>(); checks.add(randomCheck()); checks.add(randomCheck()); CheckList list = new CheckList() .setIndex(randomPositiveInt()) .setList(checks); checkCheckList(list, new CheckList(list)); checkCheckList(list, new CheckList(list.toJson())); List<Check> shuffledEvents = new ArrayList<>(); shuffledEvents.add(checks.get(1)); shuffledEvents.add(checks.get(0)); CheckList shuffled = new CheckList() .setIndex(list.getIndex()) .setList(shuffledEvents); checkCheckList(list, shuffled); }
@Test public void healthState() throws InterruptedException { String serviceName = randomAlphaString(10); ServiceOptions opts = new ServiceOptions() .setName(serviceName) .setId(serviceName) .setCheckOptions(new CheckOptions().setTtl("1m")); runAsync(h -> ctx.writeClient().registerService(opts, h)); CheckList list1 = getAsync(h -> ctx.readClient().healthState(HealthState.CRITICAL, h)); CountDownLatch latch = new CountDownLatch(1); waitBlockingQuery(latch, 10, list1.getIndex(), (idx, fut) -> { CheckQueryOptions options = new CheckQueryOptions() .setBlockingOptions(new BlockingQueryOptions().setIndex(idx)); ctx.readClient().healthStateWithOptions(HealthState.PASSING, options, h -> { List<String> names = h.result().getList().stream().map(Check::getServiceName).collect(Collectors.toList()); waitComplete(vertx, fut, h.result().getIndex(), names.contains(serviceName)); }); }); runAsync(h -> ctx.writeClient().passCheck("service:" + serviceName, h)); awaitLatch(latch); runAsync(h -> ctx.writeClient().deregisterService(serviceName, h)); }
waitBlockingQuery(latch, 10, list1.getIndex(), (idx, fut) -> { CheckQueryOptions options = new CheckQueryOptions() .setBlockingOptions(new BlockingQueryOptions().setIndex(idx)); success &= ids.contains("checkId1"); success &= ids.contains("checkId2"); waitComplete(vertx, fut, h.result().getIndex(), success); }); });