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

jamesnetherton pushed a commit to branch camel-quarkus-main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus-examples.git


The following commit(s) were added to refs/heads/camel-quarkus-main by this 
push:
     new 875395a  Fix observability example for Kubernetes env
875395a is described below

commit 875395a3c55e9f945a4368466d7a5ffeee72d49d
Author: Lukas Lowinger <[email protected]>
AuthorDate: Tue Mar 11 18:32:46 2025 +0100

    Fix observability example for Kubernetes env
---
 observability/pom.xml                               |  5 +++++
 .../java/org/acme/observability/TimerRoute.java     |  2 +-
 .../health/camel/CustomLivenessCheck.java           |  2 +-
 .../org/acme/observability/ObservabilityTest.java   | 21 ++++++++++++---------
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/observability/pom.xml b/observability/pom.xml
index 9373d71..e8b5838 100644
--- a/observability/pom.xml
+++ b/observability/pom.xml
@@ -114,6 +114,11 @@
             <artifactId>rest-assured</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/observability/src/main/java/org/acme/observability/TimerRoute.java 
b/observability/src/main/java/org/acme/observability/TimerRoute.java
index 2d237bc..2c59b2c 100644
--- a/observability/src/main/java/org/acme/observability/TimerRoute.java
+++ b/observability/src/main/java/org/acme/observability/TimerRoute.java
@@ -22,7 +22,7 @@ public class TimerRoute extends RouteBuilder {
 
     @Override
     public void configure() throws Exception {
-        from("timer:greeting?period=10000")
+        from("timer:greeting?delay=10000&period=10000")
                 .bean("timerCounter", "count")
                 
.to("http://{{greeting-app.service.host}}:{{greeting-app.service.port}}/greeting";);
     }
diff --git 
a/observability/src/main/java/org/acme/observability/health/camel/CustomLivenessCheck.java
 
b/observability/src/main/java/org/acme/observability/health/camel/CustomLivenessCheck.java
index 6294ccd..7f48f40 100644
--- 
a/observability/src/main/java/org/acme/observability/health/camel/CustomLivenessCheck.java
+++ 
b/observability/src/main/java/org/acme/observability/health/camel/CustomLivenessCheck.java
@@ -40,7 +40,7 @@ public class CustomLivenessCheck extends AbstractHealthCheck {
         int hits = hitCount.incrementAndGet();
 
         // Flag the check as DOWN on every 5th invocation (but not on 
Kubernetes), else it is UP
-        if (hits % 5 == 0 && System.getenv("KUBERNETES_NAMESPACE") == null) {
+        if (hits % 5 == 0 && System.getenv("KUBERNETES_PORT") == null) {
             builder.down();
         } else {
             builder.up();
diff --git 
a/observability/src/test/java/org/acme/observability/ObservabilityTest.java 
b/observability/src/test/java/org/acme/observability/ObservabilityTest.java
index a6115a7..f8fdc4a 100644
--- a/observability/src/test/java/org/acme/observability/ObservabilityTest.java
+++ b/observability/src/test/java/org/acme/observability/ObservabilityTest.java
@@ -16,10 +16,12 @@
  */
 package org.acme.observability;
 
+import java.time.Duration;
 import java.util.Arrays;
 
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
+import org.awaitility.Awaitility;
 import org.eclipse.microprofile.config.ConfigProvider;
 import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
@@ -47,15 +49,16 @@ public class ObservabilityTest {
     @Test
     public void metrics() {
         // Verify Camel metrics are available
-        String prometheusMetrics = RestAssured
-                .get(getManagementPrefix() + "/observe/metrics")
-                .then()
-                .statusCode(200)
-                .extract()
-                .body().asString();
-
-        assertEquals(3,
-                Arrays.stream(prometheusMetrics.split("\n")).filter(line -> 
line.contains("purpose=\"example\"")).count());
+        
Awaitility.await().pollInterval(Duration.ofSeconds(5)).atMost(Duration.ofMinutes(1)).untilAsserted(()
 -> {
+            String prometheusMetrics = RestAssured
+                    .get(getManagementPrefix() + "/observe/metrics")
+                    .then()
+                    .statusCode(200)
+                    .extract()
+                    .body().asString();
+            assertEquals(3,
+                    Arrays.stream(prometheusMetrics.split("\n")).filter(line 
-> line.contains("purpose=\"example\"")).count());
+        });
     }
 
     @Test

Reply via email to