From bc9dc5a0b0418dd7e21475af7d4aef035aa77cec Mon Sep 17 00:00:00 2001 From: Artem Titov Date: Sat, 20 Feb 2021 01:31:37 +0100 Subject: [PATCH] Upload all values instead of only mean and err into histograms Bug: None Change-Id: I3c4778bcc8170f5de11b61173dfebbdb5fd9b462 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208287 Reviewed-by: Andrey Logvin Commit-Queue: Artem Titov Cr-Commit-Position: refs/heads/master@{#33311} --- test/testsupport/perf_test.cc | 28 +++++++++++++++++-- .../perf_test_histogram_writer_unittest.cc | 19 +++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/test/testsupport/perf_test.cc b/test/testsupport/perf_test.cc index c3800b93d0..d2ac62003e 100644 --- a/test/testsupport/perf_test.cc +++ b/test/testsupport/perf_test.cc @@ -42,6 +42,19 @@ std::string UnitWithDirection( } } +std::vector GetSortedSamples( + const SamplesStatsCounter& counter) { + rtc::ArrayView view = + counter.GetTimedSamples(); + std::vector out(view.begin(), view.end()); + std::sort(out.begin(), out.end(), + [](const SamplesStatsCounter::StatsSample& a, + const SamplesStatsCounter::StatsSample& b) { + return a.time < b.time; + }); + return out; +} + template void OutputListToStream(std::ostream* ostream, const Container& values) { const char* sep = ""; @@ -278,8 +291,19 @@ void PrintResult(absl::string_view measurement, double mean = counter.IsEmpty() ? 0 : counter.GetAverage(); double error = counter.IsEmpty() ? 0 : counter.GetStandardDeviation(); - PrintResultMeanAndError(measurement, modifier, trace, mean, error, units, - important, improve_direction); + + std::vector timed_samples = + GetSortedSamples(counter); + std::vector samples(timed_samples.size()); + for (size_t i = 0; i < timed_samples.size(); ++i) { + samples[i] = timed_samples[i].value; + } + + GetPerfWriter().LogResultList(graph_name.str(), trace, samples, units, + important, improve_direction); + GetResultsLinePrinter().PrintResultMeanAndError(graph_name.str(), trace, mean, + error, units, important, + improve_direction); } void PrintResultMeanAndError(absl::string_view measurement, diff --git a/test/testsupport/perf_test_histogram_writer_unittest.cc b/test/testsupport/perf_test_histogram_writer_unittest.cc index 6b083d6543..83025a7447 100644 --- a/test/testsupport/perf_test_histogram_writer_unittest.cc +++ b/test/testsupport/perf_test_histogram_writer_unittest.cc @@ -34,6 +34,25 @@ TEST(PerfHistogramWriterUnittest, TestSimpleHistogram) { ASSERT_EQ(histogram_set.histograms_size(), 1); } +TEST(PerfHistogramWriterUnittest, TestListOfValuesHistogram) { + std::unique_ptr writer = + std::unique_ptr(CreateHistogramWriter()); + + std::vector samples{0, 1, 2}; + writer->LogResultList("-", "-", samples, "ms", false, + ImproveDirection::kNone); + + proto::HistogramSet histogram_set; + EXPECT_TRUE(histogram_set.ParseFromString(writer->Serialize())) + << "Expected valid histogram set"; + + ASSERT_EQ(histogram_set.histograms_size(), 1); + ASSERT_EQ(histogram_set.histograms(0).sample_values_size(), 3); + EXPECT_EQ(histogram_set.histograms(0).sample_values(0), 0); + EXPECT_EQ(histogram_set.histograms(0).sample_values(1), 1); + EXPECT_EQ(histogram_set.histograms(0).sample_values(2), 2); +} + TEST(PerfHistogramWriterUnittest, WritesSamplesAndUserStory) { std::unique_ptr writer = std::unique_ptr(CreateHistogramWriter());