From e0f011eb7941d5437089d997360d909c742f17c3 Mon Sep 17 00:00:00 2001 From: checketts Date: Sun, 20 Oct 2019 22:37:00 -0600 Subject: [PATCH] Account for Double.NaN when creating human readable output (#1637) --- .../core/instrument/logging/LoggingMeterRegistry.java | 2 +- .../core/instrument/logging/LoggingMeterRegistryTest.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java index 8632bd0bfb..876aabc2f8 100644 --- a/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java +++ b/micrometer-core/src/main/java/io/micrometer/core/instrument/logging/LoggingMeterRegistry.java @@ -209,7 +209,7 @@ String value(double value) { // see https://stackoverflow.com/a/3758880/510017 String humanReadableByteCount(double bytes) { int unit = 1024; - if (bytes < unit) return decimalOrNan(bytes) + " B"; + if (bytes < unit || Double.isNaN(bytes)) return decimalOrNan(bytes) + " B"; int exp = (int) (Math.log(bytes) / Math.log(unit)); String pre = "KMGTPE".charAt(exp - 1) + "i"; return decimalOrNan(bytes / Math.pow(unit, exp)) + " " + pre + "B"; diff --git a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java index 1b7cb4977a..ca92d54173 100644 --- a/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java +++ b/micrometer-core/src/test/java/io/micrometer/core/instrument/logging/LoggingMeterRegistryTest.java @@ -43,6 +43,7 @@ void humanReadableByteCount() { .baseUnit(BaseUnits.BYTES) .register(registry)); + assertThat(printer.humanReadableBaseUnit(Double.NaN)).isEqualTo("NaN B"); assertThat(printer.humanReadableBaseUnit(1.0)).isEqualTo("1 B"); assertThat(printer.humanReadableBaseUnit(1024)).isEqualTo("1 KiB"); assertThat(printer.humanReadableBaseUnit(1024 * 1024 * 2.5678976654)).isEqualTo("2.567898 MiB");