From 91b5ca1adc1bd0110a764c31b38e5881802b1331 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Tue, 5 Mar 2024 20:04:15 +0100 Subject: [PATCH] Add tests for sub-resource parameter templating in prometheus metrics Signed-off-by: Thomas Darimont --- .../micrometer/prometheus/RootResource.java | 13 ++++++++++++ .../it/micrometer/prometheus/SubResource.java | 20 +++++++++++++++++++ .../PrometheusMetricsRegistryTest.java | 12 ++++++++++- 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/RootResource.java create mode 100644 integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/SubResource.java diff --git a/integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/RootResource.java b/integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/RootResource.java new file mode 100644 index 0000000000000..bc62e4cae6164 --- /dev/null +++ b/integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/RootResource.java @@ -0,0 +1,13 @@ +package io.quarkus.it.micrometer.prometheus; + +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; + +@Path("/root") +public class RootResource { + + @Path("{rootParam}/sub") + public SubResource subResource(@PathParam("rootParam") String value) { + return new SubResource(value); + } +} diff --git a/integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/SubResource.java b/integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/SubResource.java new file mode 100644 index 0000000000000..ba5d61a5766b3 --- /dev/null +++ b/integration-tests/micrometer-prometheus/src/main/java/io/quarkus/it/micrometer/prometheus/SubResource.java @@ -0,0 +1,20 @@ +package io.quarkus.it.micrometer.prometheus; + +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; + +public class SubResource { + + private final String value; + + public SubResource(String value) { + this.value = value; + } + + @GET + @Path("/{subParam}") + public String get(@PathParam("subParam") String subParam) { + return value + ":" + subParam; + } +} diff --git a/integration-tests/micrometer-prometheus/src/test/java/io/quarkus/it/micrometer/prometheus/PrometheusMetricsRegistryTest.java b/integration-tests/micrometer-prometheus/src/test/java/io/quarkus/it/micrometer/prometheus/PrometheusMetricsRegistryTest.java index 186cb2268a90b..1e530648096c2 100644 --- a/integration-tests/micrometer-prometheus/src/test/java/io/quarkus/it/micrometer/prometheus/PrometheusMetricsRegistryTest.java +++ b/integration-tests/micrometer-prometheus/src/test/java/io/quarkus/it/micrometer/prometheus/PrometheusMetricsRegistryTest.java @@ -98,6 +98,13 @@ void testSecuredEndpoint() { @Test @Order(11) + void testTemplatedPathOnSubResource() { + when().get("/root/r1/sub/s2").then().statusCode(200) + .body(containsString("r1:s2")); + } + + @Test + @Order(20) void testPrometheusScrapeEndpointTextPlain() { RestAssured.given().header("Accept", TextFormat.CONTENT_TYPE_004) .when().get("/q/metrics") @@ -133,6 +140,9 @@ void testPrometheusScrapeEndpointTextPlain() { .body(containsString( "http_server_requests_seconds_count{dummy=\"value\",env=\"test\",env2=\"test\",foo=\"UNSET\",method=\"GET\",outcome=\"SUCCESS\",registry=\"prometheus\",status=\"200\",uri=\"/template/path/{value}\"")) + .body(containsString( + "http_server_requests_seconds_count{dummy=\"value\",env=\"test\",env2=\"test\",foo=\"UNSET\",method=\"GET\",outcome=\"SUCCESS\",registry=\"prometheus\",status=\"200\",uri=\"/root/{rootParam}/sub/{subParam}\"")) + // Verify Hibernate Metrics .body(containsString( "hibernate_sessions_open_total{entityManagerFactory=\"\",env=\"test\",env2=\"test\",registry=\"prometheus\",} 2.0")) @@ -195,7 +205,7 @@ void testPrometheusScrapeEndpointTextPlain() { } @Test - @Order(11) + @Order(20) void testPrometheusScrapeEndpointOpenMetrics() { RestAssured.given().header("Accept", TextFormat.CONTENT_TYPE_OPENMETRICS_100) .when().get("/q/metrics")