From e2e1cf4058df428f66bfcc22caa190f5007d04da Mon Sep 17 00:00:00 2001 From: Tommy Ludwig <8924140+shakuzen@users.noreply.github.com> Date: Mon, 14 Nov 2022 16:39:07 +0900 Subject: [PATCH] Only check int value if set in hasValue The logic before could result in the method returning true even if the value did not match due to checking an unset (0) int value against a double value that casts to 0. Resolves gh-3535 --- .../io/micrometer/signalfx/SignalFxMeterRegistryTest.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/implementations/micrometer-registry-signalfx/src/test/java/io/micrometer/signalfx/SignalFxMeterRegistryTest.java b/implementations/micrometer-registry-signalfx/src/test/java/io/micrometer/signalfx/SignalFxMeterRegistryTest.java index e95f23fe53..36783258fa 100644 --- a/implementations/micrometer-registry-signalfx/src/test/java/io/micrometer/signalfx/SignalFxMeterRegistryTest.java +++ b/implementations/micrometer-registry-signalfx/src/test/java/io/micrometer/signalfx/SignalFxMeterRegistryTest.java @@ -331,7 +331,13 @@ private static Condition gaugePoint(String na private static Condition hasValue(double value) { return new Condition<>(point -> { SignalFxProtocolBuffers.Datum v = point.getValue(); - return v.getDoubleValue() == value || v.getIntValue() == (int) value; + if (v.hasDoubleValue()) { + return v.getDoubleValue() == value; + } + if (v.hasIntValue()) { + return v.getIntValue() == (int) value; + } + return false; }, "Has value %s", value); }