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