From 675c61267cbaa9fc7dc9015ee6a2721def5cd065 Mon Sep 17 00:00:00 2001 From: vmakarevich Date: Thu, 31 Mar 2022 10:41:07 +0300 Subject: [PATCH] Fix tags concatenation in custom metric --- .../datadog_lambda_java/MetricWriter.java | 17 +++++++++++------ .../datadog_lambda_java/CustomMetricTest.java | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java b/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java index 560bc92..eb6b350 100644 --- a/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java +++ b/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java @@ -3,6 +3,8 @@ import com.timgroup.statsd.NonBlockingStatsDClientBuilder; import com.timgroup.statsd.StatsDClient; +import java.util.stream.Collectors; + abstract class MetricWriter { private static MetricWriter IMPL; public static synchronized MetricWriter getMetricWriterImpl(){ @@ -59,14 +61,17 @@ public ExtensionMetricWriter() { @Override public void write(CustomMetric cm){ if(null != client) { - StringBuilder tagsSb = new StringBuilder(); + String tags = ""; if (cm.getTags() != null) { - cm.getTags().forEach((k, val) -> - tagsSb.append(k.toLowerCase()) - .append(":") - .append(val.toString().toLowerCase())); + tags = cm + .getTags() + .entrySet() + .stream() + .map( + entry -> entry.getKey().toLowerCase() + ":" + entry.getValue().toString().toLowerCase() + ).collect(Collectors.joining(",")); } - client.distribution(cm.getName(), cm.getValue(), tagsSb.toString()); + client.distribution(cm.getName(), cm.getValue(), tags); } else { DDLogger.getLoggerImpl().error("Could not write the metric because the client is null"); } diff --git a/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java b/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java index 7456bca..e340d9e 100644 --- a/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java +++ b/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java @@ -90,7 +90,7 @@ public void run() { if (null == text[0] || text[0].equals("notYetReceived")) { Thread.sleep(1000); } else { - assertTrue(text[0].startsWith("foo:24.3|d|#firsttag:firsttagvaluesecondtag:100.34")); + assertTrue(text[0].startsWith("foo:24.3|d|#firsttag:firsttagvalue,secondtag:100.34")); break; } }