@Override public boolean ok() { if (debug) logger.debug("HealthService::ok()"); boolean ok = serviceHealthStatMap.values() .stream() .allMatch(serviceHealthStat -> serviceHealthStat.getStatus() == HealthStatus.PASS); if (debug) logger.debug("HealthService::ok() was ok? {}", ok); return ok; }
@Override public List<String> findAllNodesWithStatus(final HealthStatus queryStatus) { final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() == queryStatus) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); return names; }
@Override public List<String> findHealthyNodes() { logger.info("HealthService::findHealthyNodes() called"); final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() == HealthStatus.PASS) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); logger.info("HealthService::findHealthyNodes() called returns {}", names); return names; }
@Override public List<String> findNotHealthyNodes() { final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() != HealthStatus.PASS) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); return names; }
private void reportStatus(String name, NodeHealthStat currentHealth) { switch (currentHealth.getStatus()) { case PASS: if (debug) logger.debug("HEALTH PASS :: {} status check and got status {} ", name, currentHealth); onCheckIn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("pass"); break; case FAIL: logger.error("HEALTH FAIL :: {} status check and got status {} ", name, currentHealth); onFail.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("fail"); break; case WARN: logger.warn("HEALTH WARNING :: {} status check and got status {} ", name, currentHealth); onWarn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("warn"); break; default: onCheckIn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); } }
@Test public void testWarn() throws Exception { healthService.register("foo", 1, TimeUnit.SECONDS); healthService.warnWithError("foo", new Exception("FOO")); assertFalse("foo is not found among the healthy ", healthService.findHealthyNodes().stream().anyMatch(s -> s.equals("foo"))); final List<NodeHealthStat> nodeHealthStats = healthService.loadNodes(); assertEquals(1, nodeHealthStats.size()); assertEquals("foo", nodeHealthStats.get(0).getName()); assertEquals(HealthStatus.WARN, nodeHealthStats.get(0).getStatus()); assertEquals(HealthFailReason.ERROR, nodeHealthStats.get(0).getReason()); assertEquals("FOO", nodeHealthStats.get(0).getError().get().getMessage()); }
@Test public void testFail() throws Exception { healthService.register("foo", 1, TimeUnit.SECONDS); healthService.failWithError("foo", new Exception("FOO")); assertFalse("foo is not found among the healthy ", healthService.findHealthyNodes().stream().anyMatch(s -> s.equals("foo"))); final List<NodeHealthStat> nodeHealthStats = healthService.loadNodes(); assertEquals(1, nodeHealthStats.size()); assertEquals("foo", nodeHealthStats.get(0).getName()); assertEquals(HealthStatus.FAIL, nodeHealthStats.get(0).getStatus()); assertEquals(HealthFailReason.ERROR, nodeHealthStats.get(0).getReason()); assertEquals("FOO", nodeHealthStats.get(0).getError().get().getMessage()); }
@Test public void testWarnNoError() throws Exception { healthService.register("foo", 1, TimeUnit.SECONDS); healthService.warnWithReason("foo", HealthFailReason.TIMEOUT); assertFalse("foo is not found among the healthy ", healthService.findHealthyNodes().stream().anyMatch(s -> s.equals("foo"))); final List<NodeHealthStat> nodeHealthStats = healthService.loadNodes(); assertEquals(1, nodeHealthStats.size()); assertEquals("foo", nodeHealthStats.get(0).getName()); assertEquals(HealthStatus.WARN, nodeHealthStats.get(0).getStatus()); assertEquals(HealthFailReason.TIMEOUT, nodeHealthStats.get(0).getReason()); assertEquals(false, nodeHealthStats.get(0).getError().isPresent()); }
@Override public boolean ok() { if (debug) logger.debug("HealthService::ok()"); boolean ok = serviceHealthStatMap.values() .stream() .allMatch(serviceHealthStat -> serviceHealthStat.getStatus() == HealthStatus.PASS); if (debug) logger.debug("HealthService::ok() was ok? {}", ok); return ok; }
@Override public boolean ok() { if (debug) logger.debug("HealthService::ok()"); boolean ok = serviceHealthStatMap.values() .stream() .allMatch(serviceHealthStat -> serviceHealthStat.getStatus() == HealthStatus.PASS); logger.error("HealthService::ok() was ok? {}", ok); return ok; }
@Override public List<String> findHealthyNodes() { logger.info("HealthService::findHealthyNodes() called"); final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() == HealthStatus.PASS) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); logger.info("HealthService::findHealthyNodes() called returns {}", names); return names; }
@Override public List<String> findNotHealthyNodes() { final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() != HealthStatus.PASS) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); return names; }
@Override public List<String> findNotHealthyNodes() { final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() != HealthStatus.PASS) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); return names; }
@Override public List<String> findHealthyNodes() { logger.info("HealthService::findHealthyNodes() called"); final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() == HealthStatus.PASS) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); logger.info("HealthService::findHealthyNodes() called returns {}", names); return names; }
@Override public List<String> findAllNodesWithStatus(final HealthStatus queryStatus) { final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() == queryStatus) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); return names; }
@Override public List<String> findAllNodesWithStatus(final HealthStatus queryStatus) { final List<String> names = new ArrayList<>(); serviceHealthStatMap.values() .stream() .filter(serviceHealthStat -> serviceHealthStat.getStatus() == queryStatus) .forEach(serviceHealthStat -> names.add(serviceHealthStat.getName())); return names; }
private void reportStatus(String name, NodeHealthStat currentHealth) { switch (currentHealth.getStatus()) { case PASS: if (debug) logger.debug("HEALTH PASS :: {} status check and got status {} ", name, currentHealth); onCheckIn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("pass"); break; case FAIL: logger.error("HEALTH FAIL :: {} status check and got status {} ", name, currentHealth); onFail.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("fail"); break; case WARN: logger.warn("HEALTH WARNING :: {} status check and got status {} ", name, currentHealth); onWarn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("warn"); break; default: onCheckIn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); } }
private void reportStatus(String name, NodeHealthStat currentHealth) { switch(currentHealth.getStatus()) { case PASS: if (debug) logger.debug("HEALTH PASS :: {} status check and got status {} ", name, currentHealth); onCheckIn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("pass"); break; case FAIL: logger.error("HEALTH FAIL :: {} status check and got status {} ", name, currentHealth); onFail.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("fail"); break; case WARN: logger.warn("HEALTH WARNING :: {} status check and got status {} ", name, currentHealth); onWarn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); super.incrementCount("warn"); break; default: onCheckIn.ifPresent(checkIn -> checkIn.accept(BeanUtils.copy(currentHealth))); } }