Increase backward compatibility for PrintResultProxyMetricsExporter

Bug: b/246095034
Change-Id: Ie6f3dd86a402c2d5cec4dce90b5aa08c2a96ac27
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/276741
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#38206}
diff --git a/api/test/metrics/print_result_proxy_metrics_exporter.cc b/api/test/metrics/print_result_proxy_metrics_exporter.cc
index 70cc9d5..4ae32ff 100644
--- a/api/test/metrics/print_result_proxy_metrics_exporter.cc
+++ b/api/test/metrics/print_result_proxy_metrics_exporter.cc
@@ -93,6 +93,16 @@
       continue;
     }
 
+    if (metric.time_series.samples.size() == 1lu) {
+      // Increase backwards compatibility for 1 value use case.
+      PrintResult(
+          metric.name, /*modifier=*/"", metric.test_case,
+          ToPrintResultValue(metric.time_series.samples[0].value, metric.unit),
+          ToPrintResultUnit(metric.unit), /*important=*/false,
+          ToPrintResultImproveDirection(metric.improvement_direction));
+      continue;
+    }
+
     SamplesStatsCounter counter;
     for (size_t i = 0; i < metric.time_series.samples.size(); ++i) {
       counter.AddSample(SamplesStatsCounter::StatsSample{
diff --git a/api/test/metrics/print_result_proxy_metrics_exporter_test.cc b/api/test/metrics/print_result_proxy_metrics_exporter_test.cc
index c783fba..355eec0 100644
--- a/api/test/metrics/print_result_proxy_metrics_exporter_test.cc
+++ b/api/test/metrics/print_result_proxy_metrics_exporter_test.cc
@@ -71,6 +71,40 @@
 }
 
 TEST(PrintResultProxyMetricsExporterTest,
+     ExportMetricsWithTimeSeriesOfSingleValueFormatCorrect) {
+  Metric metric1{
+      .name = "test_metric1",
+      .unit = Unit::kMilliseconds,
+      .improvement_direction = ImprovementDirection::kBiggerIsBetter,
+      .test_case = "test_case_name1",
+      .metric_metadata = DefaultMetadata(),
+      .time_series = Metric::TimeSeries{.samples = std::vector{Sample(10)}},
+      .stats =
+          Metric::Stats{.mean = 10.0, .stddev = 0.0, .min = 10.0, .max = 10.0}};
+  Metric metric2{
+      .name = "test_metric2",
+      .unit = Unit::kKilobitsPerSecond,
+      .improvement_direction = ImprovementDirection::kSmallerIsBetter,
+      .test_case = "test_case_name2",
+      .metric_metadata = DefaultMetadata(),
+      .time_series = Metric::TimeSeries{.samples = std::vector{Sample(20)}},
+      .stats =
+          Metric::Stats{.mean = 20.0, .stddev = 0.0, .min = 20.0, .max = 20.0}};
+
+  testing::internal::CaptureStdout();
+  PrintResultProxyMetricsExporter exporter;
+
+  std::string expected =
+      "RESULT test_metric1: test_case_name1= 10 "
+      "msBestFitFormat_biggerIsBetter\n"
+      "RESULT test_metric2: test_case_name2= 2500 "
+      "bytesPerSecond_smallerIsBetter\n";
+
+  EXPECT_TRUE(exporter.Export(std::vector<Metric>{metric1, metric2}));
+  EXPECT_EQ(expected, testing::internal::GetCapturedStdout());
+}
+
+TEST(PrintResultProxyMetricsExporterTest,
      ExportMetricsWithStatsOnlyFormatCorrect) {
   Metric metric1{.name = "test_metric1",
                  .unit = Unit::kMilliseconds,