From 2ae78ce40e51803801ea51bd221d449a5dd5a4ae Mon Sep 17 00:00:00 2001 From: David Ebbo Date: Wed, 15 May 2024 12:17:15 +0200 Subject: [PATCH 1/2] Special case time 0 display in trace times Fixes #4107 --- src/Aspire.Dashboard/Otlp/Model/DurationFormatter.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Aspire.Dashboard/Otlp/Model/DurationFormatter.cs b/src/Aspire.Dashboard/Otlp/Model/DurationFormatter.cs index bcd339b471..d36f6a21c5 100644 --- a/src/Aspire.Dashboard/Otlp/Model/DurationFormatter.cs +++ b/src/Aspire.Dashboard/Otlp/Model/DurationFormatter.cs @@ -28,6 +28,12 @@ public static string FormatDuration(TimeSpan duration) var ofPrevious = primaryUnit.Ticks / secondaryUnit.Ticks; var ticks = (double)duration.Ticks; + // Special case time 0 to not display any unit, as "0μs" looks quirky + if (ticks == 0) + { + return "0"; + } + if (primaryUnit.IsDecimal) { // If the unit is decimal based, display as a decimal From 934abbe4ac4fcc6e0343c22df9e680b3731bc806 Mon Sep 17 00:00:00 2001 From: David Ebbo Date: Wed, 15 May 2024 12:24:11 +0200 Subject: [PATCH 2/2] Fix duration test to match new expected display --- tests/Aspire.Dashboard.Tests/DurationFormatterTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Aspire.Dashboard.Tests/DurationFormatterTests.cs b/tests/Aspire.Dashboard.Tests/DurationFormatterTests.cs index e4e02c6fa7..f3b177a46f 100644 --- a/tests/Aspire.Dashboard.Tests/DurationFormatterTests.cs +++ b/tests/Aspire.Dashboard.Tests/DurationFormatterTests.cs @@ -68,6 +68,6 @@ public void DisplaysTimesLessThanMicroseconds() public void DisplaysTimesOf0() { var input = 0; - Assert.Equal("0μs", DurationFormatter.FormatDuration(TimeSpan.FromTicks(input))); + Assert.Equal("0", DurationFormatter.FormatDuration(TimeSpan.FromTicks(input))); } }