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();