From 0f0777619163e123b12d2022485cf78473f3f53f Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Thu, 14 Mar 2019 14:36:14 -0700 Subject: [PATCH 1/2] =?UTF-8?q?Agent=20doesn=E2=80=99t=20like=20getting=20?= =?UTF-8?q?floats.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Convert to doubles instead. --- .../datadog/opentracing/DDSpanContext.java | 6 +++- .../datadog/trace/DDSpanContextTest.groovy | 28 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDSpanContext.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDSpanContext.java index 085341fda4b..202f5169974 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDSpanContext.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDSpanContext.java @@ -295,7 +295,11 @@ public void setMetric(final String key, final Number value) { if (metrics.get() == null) { metrics.compareAndSet(null, new ConcurrentHashMap()); } - metrics.get().put(key, value); + if (value instanceof Float) { + metrics.get().put(key, value.doubleValue()); + } else { + metrics.get().put(key, value); + } } /** * Add a tag to the span. Tags are not propagated to the children diff --git a/dd-trace-ot/src/test/groovy/datadog/trace/DDSpanContextTest.groovy b/dd-trace-ot/src/test/groovy/datadog/trace/DDSpanContextTest.groovy index fc7f9995d9f..3d0c096b5d6 100644 --- a/dd-trace-ot/src/test/groovy/datadog/trace/DDSpanContextTest.groovy +++ b/dd-trace-ot/src/test/groovy/datadog/trace/DDSpanContextTest.groovy @@ -70,4 +70,32 @@ class DDSpanContextTest extends Specification { "tag-with-bool" | false "tag_with_float" | 0.321 } + + def "metrics use the expected types"() { + // floats should be converted to doubles. + setup: + def context = SpanFactory.newSpanOf(0).context + context.setMetric("test", value) + def metrics = context.getMetrics() + + expect: + type.isInstance(metrics["test"]) + + where: + type | value + Integer | 0 + Integer | Integer.MAX_VALUE + Integer | Integer.MIN_VALUE + Short | Short.MAX_VALUE + Short | Short.MIN_VALUE + Double | Float.MAX_VALUE + Double | Float.MIN_VALUE + Double | Double.MAX_VALUE + Double | Double.MIN_VALUE + Double | 1f + Double | 1d + Double | 0.5f + Double | 0.5d + Integer | 0x55 + } } From 472262149cdc679be6c8380ed34fec881cdfdac7 Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Thu, 14 Mar 2019 15:44:32 -0700 Subject: [PATCH 2/2] Apply timeout and retry to test This test seems to hang a lot in java 7. --- .../groovy/datadog/trace/agent/CustomLogManagerTest.groovy | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dd-java-agent/src/test/groovy/datadog/trace/agent/CustomLogManagerTest.groovy b/dd-java-agent/src/test/groovy/datadog/trace/agent/CustomLogManagerTest.groovy index 94e32f25e69..8e8365a9189 100644 --- a/dd-java-agent/src/test/groovy/datadog/trace/agent/CustomLogManagerTest.groovy +++ b/dd-java-agent/src/test/groovy/datadog/trace/agent/CustomLogManagerTest.groovy @@ -2,12 +2,16 @@ package datadog.trace.agent import datadog.trace.agent.test.IntegrationTestUtils import jvmbootstraptest.LogManagerSetter +import spock.lang.Retry import spock.lang.Shared import spock.lang.Specification +import spock.lang.Timeout import java.lang.management.ManagementFactory import java.lang.management.RuntimeMXBean +@Retry +@Timeout(30) class CustomLogManagerTest extends Specification { // Run all tests using forked jvm because groovy has already set the global log manager