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,