From 183e9968cea2269df9affd68f16a78b344110aa6 Mon Sep 17 00:00:00 2001 From: Artem Titov Date: Mon, 26 Sep 2022 12:57:40 +0200 Subject: [PATCH] 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 Reviewed-by: Mirko Bonadei Cr-Commit-Position: refs/heads/main@{#38206} --- .../print_result_proxy_metrics_exporter.cc | 10 ++++++ ...rint_result_proxy_metrics_exporter_test.cc | 34 +++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/api/test/metrics/print_result_proxy_metrics_exporter.cc b/api/test/metrics/print_result_proxy_metrics_exporter.cc index 70cc9d57e2..4ae32fffec 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 @@ bool PrintResultProxyMetricsExporter::Export( 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 c783fbacfd..355eec0d4f 100644 --- a/api/test/metrics/print_result_proxy_metrics_exporter_test.cc +++ b/api/test/metrics/print_result_proxy_metrics_exporter_test.cc @@ -70,6 +70,40 @@ TEST(PrintResultProxyMetricsExporterTest, EXPECT_EQ(expected, testing::internal::GetCapturedStdout()); } +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{metric1, metric2})); + EXPECT_EQ(expected, testing::internal::GetCapturedStdout()); +} + TEST(PrintResultProxyMetricsExporterTest, ExportMetricsWithStatsOnlyFormatCorrect) { Metric metric1{.name = "test_metric1",