This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch camel-4.10.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 94e481e2e36360f683a669cb0427925ab6be6fe6
Author: Marco Carletti <mcarl...@redhat.com>
AuthorDate: Mon Apr 7 14:06:24 2025 +0200

    health-check: Fixes Camel context health check (#17680)
---
 .../camel/impl/health/ContextHealthCheckTest.java  | 50 ++++++++++++++++++++++
 .../camel/impl/health/ContextHealthCheck.java      |  2 +
 2 files changed, 52 insertions(+)

diff --git 
a/core/camel-core/src/test/java/org/apache/camel/impl/health/ContextHealthCheckTest.java
 
b/core/camel-core/src/test/java/org/apache/camel/impl/health/ContextHealthCheckTest.java
new file mode 100644
index 00000000000..e65ed8c9bc5
--- /dev/null
+++ 
b/core/camel-core/src/test/java/org/apache/camel/impl/health/ContextHealthCheckTest.java
@@ -0,0 +1,50 @@
+package org.apache.camel.impl.health;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ServiceStatus;
+import org.apache.camel.health.HealthCheck;
+import org.apache.camel.health.HealthCheckResultBuilder;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.junit.jupiter.api.Test;
+
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+public class ContextHealthCheckTest {
+
+    @Test
+    public void testOverallStatusOnceTheContextIsStarted() {
+        CamelContext context = new DefaultCamelContext();
+        context.start();
+
+        ContextHealthCheck check = new ContextHealthCheck();
+        check.setCamelContext(context);
+
+        HealthCheck.Result result = check.call();
+
+        assertEquals(HealthCheck.State.UP, result.getState());
+        assertFalse(result.getMessage().isPresent());
+        
assertFalse(result.getDetails().containsKey(AbstractHealthCheck.CHECK_ENABLED));
+        assertEquals(ServiceStatus.Started, 
result.getDetails().get("context.status"));
+    }
+
+    @Test
+    public void testOverallStatusOnceTheContextIsSuspended() {
+        CamelContext context = new DefaultCamelContext();
+        context.suspend();
+
+        ContextHealthCheck check = new ContextHealthCheck();
+        check.setCamelContext(context);
+
+        HealthCheck.Result result = check.call();
+
+        assertEquals(HealthCheck.State.DOWN, result.getState());
+        assertTrue(result.getMessage().isPresent());
+        
assertFalse(result.getDetails().containsKey(AbstractHealthCheck.CHECK_ENABLED));
+        assertEquals(ServiceStatus.Suspended, 
result.getDetails().get("context.status"));
+    }
+
+
+}
diff --git 
a/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
 
b/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
index aed5dc79c72..8315d9f4a66 100644
--- 
a/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
+++ 
b/core/camel-health/src/main/java/org/apache/camel/impl/health/ContextHealthCheck.java
@@ -71,6 +71,7 @@ public final class ContextHealthCheck extends 
AbstractHealthCheck {
                     break;
                 case Started:
                     builder.up();
+                    break;
                 case Stopping:
                 case Stopped:
                 case Suspending:
@@ -78,6 +79,7 @@ public final class ContextHealthCheck extends 
AbstractHealthCheck {
                     builder.message("Camel Context '" + name + "' is shutting 
down. Status: '" + status + "', Phase: '" + phase
                                     + "'. Please check the debug log");
                     builder.down();
+                    break;
                 default:
                     builder.message("Camel Context '" + name + "' has unknown 
Status: " + status);
                     builder.down();

Reply via email to