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 <[email protected]>
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