From a8015b90cd43027f327e5318d57cfd3202b5e8dc Mon Sep 17 00:00:00 2001 From: Benjamin Confino Date: Fri, 23 Feb 2024 14:56:27 +0000 Subject: [PATCH] emit useful errors on failure --- .../metrics/tck/cdi/DoubleCounterTest.java | 44 +++++++++++++------ 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/tck/metrics/src/main/java/org/eclipse/microprofile/telemetry/metrics/tck/cdi/DoubleCounterTest.java b/tck/metrics/src/main/java/org/eclipse/microprofile/telemetry/metrics/tck/cdi/DoubleCounterTest.java index fc741efb..425986cb 100644 --- a/tck/metrics/src/main/java/org/eclipse/microprofile/telemetry/metrics/tck/cdi/DoubleCounterTest.java +++ b/tck/metrics/src/main/java/org/eclipse/microprofile/telemetry/metrics/tck/cdi/DoubleCounterTest.java @@ -21,9 +21,10 @@ **********************************************************************/ package org.eclipse.microprofile.telemetry.metrics.tck.cdi; -import static io.opentelemetry.api.common.AttributeKey.stringKey; - +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import org.eclipse.microprofile.telemetry.metrics.tck.TestLibraries; import org.eclipse.microprofile.telemetry.metrics.tck.exporter.InMemoryMetricExporter; @@ -82,6 +83,7 @@ void setUp() { @Test void testDoubleCounter() throws InterruptedException { + DoubleCounter doubleCounter = sdkMeter .counterBuilder(counterName) @@ -91,19 +93,35 @@ void testDoubleCounter() throws InterruptedException { .build(); Assert.assertNotNull(doubleCounter); - doubleCounter.add(DOUBLE_WITH_ATTRIBUTES, Attributes.builder().put("K", "V").build()); - doubleCounter.add(DOUBLE_WITHOUT_ATTRIBUTES, Attributes.empty()); - List metrics = metricExporter.getMetricData((MetricDataType.DOUBLE_SUM)); + Map expectedResults = new HashMap(); + expectedResults.put(DOUBLE_WITH_ATTRIBUTES, Attributes.builder().put("K", "V").build()); + expectedResults.put(DOUBLE_WITHOUT_ATTRIBUTES, Attributes.empty()); - boolean result = metrics - .stream() - .flatMap(metricData -> metricData.getDoubleSumData().getPoints().stream()) - .allMatch(point -> (point.getValue() == DOUBLE_WITHOUT_ATTRIBUTES - && point.getAttributes() == Attributes.empty()) - || (point.getValue() == DOUBLE_WITH_ATTRIBUTES - && point.getAttributes().get(stringKey("K")).equals("V"))); + expectedResults.keySet().stream().forEach(key -> doubleCounter.add(key, expectedResults.get(key))); - Assert.assertTrue(result); + List metrics = metricExporter.getMetricData((MetricDataType.DOUBLE_SUM)); + metrics.stream() + .peek(metricData -> { + Assert.assertEquals(metricData.getName(), counterName); + Assert.assertEquals(metricData.getDescription(), counterDescription); + Assert.assertEquals(metricData.getUnit(), counterUnit); + }) + .flatMap(metricData -> metricData.getDoubleSumData().getPoints().stream()) + .forEach(point -> { + Assert.assertTrue(expectedResults.containsKey(point.getValue()), + "Double" + point.getValue() + " was not an expected result"); + Assert.assertTrue(point.getAttributes().equals(expectedResults.get(point.getValue())), + "Attributes were not equal." + + System.lineSeparator() + "Actual values: " + + mapToString(point.getAttributes().asMap()) + + System.lineSeparator() + "Expected values: " + + mapToString(expectedResults.get(point.getValue()).asMap())); + }); } + private String mapToString(Map map) { + return (String) map.keySet().stream() + .map(key -> "" + key + "=" + map.get(key)) + .collect(Collectors.joining(", ", "{", "}")); + } }