From a23742f264b5e825937e2034d914042ab75ddd65 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 18 Mar 2026 09:19:04 +0000 Subject: [PATCH 1/2] fix: make protobuf debug format test resilient to zero nanos Protobuf3 text format omits fields with default (zero) values. When created_timestamp lands on an exact second boundary, the nanos field is absent, causing a flaky assertion failure. Signed-off-by: Gregor Zeitlinger --- .../metrics/it/exporter/test/ExporterIT.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index b01e6b3a8..b9c07f935 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -110,11 +110,16 @@ public void testPrometheusProtobufDebugFormat(String format, String expected) th .replace("", sampleApp); if ("prometheus-protobuf".equals(format)) { - assertThat(actualResponse) - .matches( - Pattern.quote(expectedResponse) - .replace("", "\\E\\d+\\Q") - .replace("", "\\E\\d+\\Q")); + // Protobuf text format omits fields with value 0, so nanos may be absent. + // Replace the nanos placeholder with a regex-friendly marker before quoting. + String withOptionalNanos = + expectedResponse.replace( + "\n nanos: ", ""); + String pattern = + Pattern.quote(withOptionalNanos) + .replace("", "\\E\\d+\\Q") + .replace("", "\\E(\n nanos: \\d+)?\\Q"); + assertThat(actualResponse).matches(pattern); } else { assertThat(actualResponse).isEqualTo(expectedResponse); } From afccf2bb2d46bfe9914e5229203c7adaba6ee559 Mon Sep 17 00:00:00 2001 From: Gregor Zeitlinger Date: Wed, 18 Mar 2026 14:37:11 +0000 Subject: [PATCH 2/2] fix: apply spotless formatting Signed-off-by: Gregor Zeitlinger --- .../io/prometheus/metrics/it/exporter/test/ExporterIT.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java index b9c07f935..5a80d8bdf 100644 --- a/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java +++ b/integration-tests/it-exporter/it-exporter-test/src/test/java/io/prometheus/metrics/it/exporter/test/ExporterIT.java @@ -113,8 +113,7 @@ public void testPrometheusProtobufDebugFormat(String format, String expected) th // Protobuf text format omits fields with value 0, so nanos may be absent. // Replace the nanos placeholder with a regex-friendly marker before quoting. String withOptionalNanos = - expectedResponse.replace( - "\n nanos: ", ""); + expectedResponse.replace("\n nanos: ", ""); String pattern = Pattern.quote(withOptionalNanos) .replace("", "\\E\\d+\\Q")