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 <jamesnether...@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