refactor: centralize telemetry metadata formatting

This commit is contained in:
lingniu
2026-07-01 10:05:36 +08:00
parent da17acb09a
commit 418aefc189
5 changed files with 51 additions and 18 deletions

View File

@@ -0,0 +1,22 @@
package com.lingniu.ingest.api.event;
import java.util.Locale;
/**
* Stable string formatting for metadata values shared across protocol mappers.
*/
public final class TelemetryMetadataValues {
private TelemetryMetadataValues() {
}
public static String doubleValue(double value) {
if (!Double.isFinite(value)) {
return "";
}
String formatted = String.format(Locale.ROOT, "%.6f", value);
return formatted.indexOf('.') < 0
? formatted
: formatted.replaceAll("0+$", "").replaceAll("\\.$", "");
}
}

View File

@@ -0,0 +1,23 @@
package com.lingniu.ingest.api.event;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
class TelemetryMetadataValuesTest {
@Test
void formatsDoubleWithoutFloatingPointNoise() {
assertThat(TelemetryMetadataValues.doubleValue(123456.70000000001)).isEqualTo("123456.7");
assertThat(TelemetryMetadataValues.doubleValue(1234.5)).isEqualTo("1234.5");
assertThat(TelemetryMetadataValues.doubleValue(1234.0)).isEqualTo("1234");
assertThat(TelemetryMetadataValues.doubleValue(1.23456789)).isEqualTo("1.234568");
}
@Test
void rejectsNonFiniteDoubleValuesAsBlankMetadata() {
assertThat(TelemetryMetadataValues.doubleValue(Double.NaN)).isEmpty();
assertThat(TelemetryMetadataValues.doubleValue(Double.POSITIVE_INFINITY)).isEmpty();
assertThat(TelemetryMetadataValues.doubleValue(Double.NEGATIVE_INFINITY)).isEmpty();
}
}