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 <landrey@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33311}
diff --git a/test/testsupport/perf_test.cc b/test/testsupport/perf_test.cc
index c3800b9..d2ac620 100644
--- a/test/testsupport/perf_test.cc
+++ b/test/testsupport/perf_test.cc
@@ -42,6 +42,19 @@
}
}
+std::vector<SamplesStatsCounter::StatsSample> GetSortedSamples(
+ const SamplesStatsCounter& counter) {
+ rtc::ArrayView<const SamplesStatsCounter::StatsSample> view =
+ counter.GetTimedSamples();
+ std::vector<SamplesStatsCounter::StatsSample> 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 <typename Container>
void OutputListToStream(std::ostream* ostream, const Container& values) {
const char* sep = "";
@@ -278,8 +291,19 @@
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<SamplesStatsCounter::StatsSample> timed_samples =
+ GetSortedSamples(counter);
+ std::vector<double> 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 6b083d6..83025a7 100644
--- a/test/testsupport/perf_test_histogram_writer_unittest.cc
+++ b/test/testsupport/perf_test_histogram_writer_unittest.cc
@@ -34,6 +34,25 @@
ASSERT_EQ(histogram_set.histograms_size(), 1);
}
+TEST(PerfHistogramWriterUnittest, TestListOfValuesHistogram) {
+ std::unique_ptr<PerfTestResultWriter> writer =
+ std::unique_ptr<PerfTestResultWriter>(CreateHistogramWriter());
+
+ std::vector<double> 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<PerfTestResultWriter> writer =
std::unique_ptr<PerfTestResultWriter>(CreateHistogramWriter());