From 1d33648baf92ab3ab8d833c556723a5de06d9371 Mon Sep 17 00:00:00 2001 From: SylvainJuge <763082+SylvainJuge@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:18:55 +0200 Subject: [PATCH] fix invalid jmx state metrics empty unit (#14194) --- .../instrumentation/jmx/engine/UnitConverter.java | 11 +++-------- .../instrumentation/jmx/engine/UnitConverterTest.java | 5 +++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverter.java b/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverter.java index b7627645ed5a..8e4fbbf4da3f 100644 --- a/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverter.java +++ b/instrumentation/jmx-metrics/library/src/main/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverter.java @@ -33,17 +33,12 @@ class UnitConverter { * @param sourceUnit a source unit supported by requested converter * @param targetUnit a target unit supported by requested converter * @return an instance of converter, or {@literal null} if {@code sourceUnit} is {@literal null} - * or empty, which means that there is no conversion needed. - * @throws IllegalArgumentException if {@code targetUnit} is empty, or matching converter was not - * found for provided units. + * or empty or if {@code targetUnit} is empty, which means that there is no conversion needed. + * @throws IllegalArgumentException if matching converter was not found for provided units. */ @Nullable public static UnitConverter getInstance(@Nullable String sourceUnit, String targetUnit) { - if (targetUnit.isEmpty()) { - throw new IllegalArgumentException("Non empty targetUnit must be provided"); - } - - if (sourceUnit == null || sourceUnit.isEmpty()) { + if (sourceUnit == null || sourceUnit.isEmpty() || targetUnit.isEmpty()) { // No conversion is needed return null; } diff --git a/instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverterTest.java b/instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverterTest.java index 465e2487698e..4221059b443e 100644 --- a/instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverterTest.java +++ b/instrumentation/jmx-metrics/library/src/test/java/io/opentelemetry/instrumentation/jmx/engine/UnitConverterTest.java @@ -5,9 +5,9 @@ package io.opentelemetry.instrumentation.jmx.engine; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; @@ -58,10 +58,11 @@ void shouldHandleUnsupportedConversion(String sourceUnit, String targetUnit) { @CsvSource({ ", s", // null -> "s" "'', s", // "" -> "s" + "1, ''", // empty target unit }) void shouldSkipConversionWhenSourceUnitNotSpecified(String sourceUnit, String targetUnit) { UnitConverter converter = UnitConverter.getInstance(sourceUnit, targetUnit); - assertNull(converter); + assertThat(converter).isNull(); } @Test