You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2021/03/26 13:23:21 UTC
[camel] branch master updated: CAMEL-16396: Fix resolution of
health checks from HealthCheckRegistryRepository
This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 710bd55 CAMEL-16396: Fix resolution of health checks from HealthCheckRegistryRepository
710bd55 is described below
commit 710bd5573152b73df203c52de40c2ab36f1881ba
Author: James Netherton <ja...@gmail.com>
AuthorDate: Fri Mar 26 11:17:08 2021 +0000
CAMEL-16396: Fix resolution of health checks from HealthCheckRegistryRepository
---
.../impl/health/HealthCheckRegistryRepository.java | 11 +++--
.../camel/main/MainHealthCheckConfigTest.java | 56 ++++++++++++++++++++++
2 files changed, 62 insertions(+), 5 deletions(-)
diff --git a/core/camel-health/src/main/java/org/apache/camel/impl/health/HealthCheckRegistryRepository.java b/core/camel-health/src/main/java/org/apache/camel/impl/health/HealthCheckRegistryRepository.java
index 5becc66..1e599fd 100644
--- a/core/camel-health/src/main/java/org/apache/camel/impl/health/HealthCheckRegistryRepository.java
+++ b/core/camel-health/src/main/java/org/apache/camel/impl/health/HealthCheckRegistryRepository.java
@@ -109,10 +109,11 @@ public class HealthCheckRegistryRepository implements CamelContextAware, HealthC
}
private HealthCheckConfiguration matchConfiguration(String id) {
-
- return configurations.values().stream()
- .filter(s -> PatternHelper.matchPattern(id, s.getParent()))
- .findAny()
- .orElse(fallbackConfiguration);
+ for (String key : configurations.keySet()) {
+ if (PatternHelper.matchPattern(id, key)) {
+ return configurations.get(key);
+ }
+ }
+ return fallbackConfiguration;
}
}
diff --git a/core/camel-main/src/test/java/org/apache/camel/main/MainHealthCheckConfigTest.java b/core/camel-main/src/test/java/org/apache/camel/main/MainHealthCheckConfigTest.java
index 97e5a40..15d6178 100644
--- a/core/camel-main/src/test/java/org/apache/camel/main/MainHealthCheckConfigTest.java
+++ b/core/camel-main/src/test/java/org/apache/camel/main/MainHealthCheckConfigTest.java
@@ -16,14 +16,20 @@
*/
package org.apache.camel.main;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
+import java.util.stream.Collectors;
import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.health.HealthCheck;
import org.apache.camel.health.HealthCheckConfiguration;
import org.apache.camel.health.HealthCheckRegistry;
import org.apache.camel.health.HealthCheckRepository;
+import org.apache.camel.health.HealthCheckResultBuilder;
+import org.apache.camel.impl.health.AbstractHealthCheck;
+import org.apache.camel.impl.health.HealthCheckRegistryRepository;
import org.apache.camel.impl.health.RoutesHealthCheckRepository;
import org.junit.jupiter.api.Test;
@@ -74,6 +80,56 @@ public class MainHealthCheckConfigTest {
}
}
+ @Test
+ public void testMainBasicHealthCheckConfiguration() {
+ Main main = new Main();
+ main.configure().addRoutesBuilder(new Routes());
+ main.addInitialProperty("camel.health.config[custom].parent", "registry-health-check-repository");
+ main.addInitialProperty("camel.health.config[custom].enabled", "false");
+ main.addInitialProperty("camel.health.config[custom].interval", "20s");
+ main.addInitialProperty("camel.health.config[custom].failure-threshold", "10");
+
+ main.start();
+ try {
+ CamelContext camelContext = main.getCamelContext();
+ assertNotNull(camelContext);
+
+ HealthCheck healthCheck = new AbstractHealthCheck("custom") {
+ @Override
+ protected void doCall(HealthCheckResultBuilder builder, Map<String, Object> options) {
+ // Noop
+ }
+ };
+
+ // This configuration will be overridden by the camel-main config properties
+ healthCheck.getConfiguration().setEnabled(true);
+ healthCheck.getConfiguration().setInterval(10);
+ healthCheck.getConfiguration().setFailureThreshold(5);
+ camelContext.getRegistry().bind("custom", healthCheck);
+
+ HealthCheckRegistry healthCheckRegistry = camelContext.getExtension(HealthCheckRegistry.class);
+ assertNotNull(healthCheckRegistry);
+
+ Optional<HealthCheckRepository> repository = healthCheckRegistry.getRepository("registry-health-check-repository");
+ assertTrue(repository.isPresent());
+
+ HealthCheckRegistryRepository registryRepository = (HealthCheckRegistryRepository) repository.get();
+ assertTrue(registryRepository.isEnabled());
+
+ List<HealthCheck> healthChecks = registryRepository.stream().collect(Collectors.toList());
+ assertEquals(1, healthChecks.size());
+
+ HealthCheck myCustomCheck = healthChecks.get(0);
+ HealthCheckConfiguration configuration = myCustomCheck.getConfiguration();
+ assertNotNull(configuration);
+ assertFalse(configuration.isEnabled());
+ assertEquals(20000, configuration.getInterval());
+ assertEquals(10, configuration.getFailureThreshold());
+ } finally {
+ main.stop();
+ }
+ }
+
static class Routes extends RouteBuilder {
@Override