aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrik Höglund <phoglund@webrtc.org>2020-03-27 19:22:36 +0100
committerCommit Bot <commit-bot@chromium.org>2020-03-28 13:44:43 +0000
commita7a0173713946b5378b678460bfe71a8157d86d4 (patch)
tree4f4303594ed6fdcacc8a168fa7b434159dd2c25b
parent16c63eb5f3e23c6fe80b31e6db9b95ea34c24c23 (diff)
downloadwebrtc-a7a0173713946b5378b678460bfe71a8157d86d4.tar.gz
Remove the histogram flag and all Chart JSON code.
Since the flag is now on by default, we can remove it (after all callers stop passing it). We can also remove all Chart JSON code from WebRTC since it is no longer used. Requires one recipe CL and one downstream CL to land first. Bug: chromium:1029452 Change-Id: Ic1d62e8ab9dfcd255cd2bf51d153db80d59c564b Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/171878 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Patrik Höglund <phoglund@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30927}
-rwxr-xr-xaudio/test/low_bandwidth_audio_test.py1
-rw-r--r--test/BUILD.gn2
-rw-r--r--test/test_main_lib.cc6
-rw-r--r--test/testsupport/perf_test.cc38
-rw-r--r--test/testsupport/perf_test.h12
-rw-r--r--test/testsupport/perf_test_graphjson_writer.cc144
-rw-r--r--test/testsupport/perf_test_graphjson_writer.h32
-rw-r--r--test/testsupport/perf_test_unittest.cc66
8 files changed, 23 insertions, 278 deletions
diff --git a/audio/test/low_bandwidth_audio_test.py b/audio/test/low_bandwidth_audio_test.py
index 6a95903373..51273f7486 100755
--- a/audio/test/low_bandwidth_audio_test.py
+++ b/audio/test/low_bandwidth_audio_test.py
@@ -286,7 +286,6 @@ def main():
_LogCommand(test_command + [
'--sample_rate_hz=%d' % analyzer.sample_rate_hz,
'--test_case_prefix=%s' % analyzer.name,
- '--write_histogram_proto_json'
] + args.extra_test_args),
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
perf_results_file = None
diff --git a/test/BUILD.gn b/test/BUILD.gn
index d84a78b15c..29d5d6d883 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -226,8 +226,6 @@ rtc_library("perf_test") {
"testsupport/perf_result_reporter.h",
"testsupport/perf_test.cc",
"testsupport/perf_test.h",
- "testsupport/perf_test_graphjson_writer.cc",
- "testsupport/perf_test_graphjson_writer.h",
"testsupport/perf_test_histogram_writer.h",
"testsupport/perf_test_result_writer.h",
]
diff --git a/test/test_main_lib.cc b/test/test_main_lib.cc
index f954a5eee5..15318b49e1 100644
--- a/test/test_main_lib.cc
+++ b/test/test_main_lib.cc
@@ -175,10 +175,10 @@ class TestMainImpl : public TestMain {
#else
int exit_code = RUN_ALL_TESTS();
- std::string chartjson_result_file =
+ std::string perf_output_file =
absl::GetFlag(FLAGS_isolated_script_test_perf_output);
- if (!chartjson_result_file.empty()) {
- if (!webrtc::test::WritePerfResults(chartjson_result_file)) {
+ if (!perf_output_file.empty()) {
+ if (!webrtc::test::WritePerfResults(perf_output_file)) {
return 1;
}
}
diff --git a/test/testsupport/perf_test.cc b/test/testsupport/perf_test.cc
index 5b2f7a0479..310c7e36a5 100644
--- a/test/testsupport/perf_test.cc
+++ b/test/testsupport/perf_test.cc
@@ -19,22 +19,26 @@
#include "rtc_base/checks.h"
#include "rtc_base/critical_section.h"
-#include "test/testsupport/perf_test_graphjson_writer.h"
#include "test/testsupport/perf_test_histogram_writer.h"
-ABSL_FLAG(bool,
- write_histogram_proto_json,
- true,
- "Use the histogram C++ API, which will write Histogram protos "
- "instead of Chart JSON. See histogram.proto in third_party/catapult. "
- "This flag only has effect if --isolated_script_test_perf_output is "
- "specified");
-
namespace webrtc {
namespace test {
namespace {
+std::string UnitWithDirection(
+ const std::string& units,
+ webrtc::test::ImproveDirection improve_direction) {
+ switch (improve_direction) {
+ case webrtc::test::ImproveDirection::kNone:
+ return units;
+ case webrtc::test::ImproveDirection::kSmallerIsBetter:
+ return units + "_smallerIsBetter";
+ case webrtc::test::ImproveDirection::kBiggerIsBetter:
+ return units + "_biggerIsBetter";
+ }
+}
+
template <typename Container>
void OutputListToStream(std::ostream* ostream, const Container& values) {
const char* sep = "";
@@ -192,13 +196,8 @@ ResultsLinePrinter& GetResultsLinePrinter() {
}
PerfTestResultWriter& GetPerfWriter() {
- if (absl::GetFlag(FLAGS_write_histogram_proto_json)) {
- static PerfTestResultWriter* writer = CreateHistogramWriter();
- return *writer;
- } else {
- static PerfTestResultWriter* writer = CreateGraphJsonWriter();
- return *writer;
- }
+ static PerfTestResultWriter* writer = CreateHistogramWriter();
+ return *writer;
}
} // namespace
@@ -222,12 +221,7 @@ void PrintPlottableResults(const std::vector<std::string>& desired_graphs) {
bool WritePerfResults(const std::string& output_path) {
std::string results = GetPerfResults();
- FILE* output;
- if (absl::GetFlag(FLAGS_write_histogram_proto_json)) {
- output = fopen(output_path.c_str(), "wb");
- } else {
- output = fopen(output_path.c_str(), "w");
- }
+ FILE* output = fopen(output_path.c_str(), "wb");
if (output == NULL) {
printf("Failed to write to %s.\n", output_path.c_str());
return false;
diff --git a/test/testsupport/perf_test.h b/test/testsupport/perf_test.h
index 338a14480d..b0a5607d20 100644
--- a/test/testsupport/perf_test.h
+++ b/test/testsupport/perf_test.h
@@ -91,12 +91,11 @@ void PrintResult(const std::string& measurement,
const bool important,
ImproveDirection improve_direction = ImproveDirection::kNone);
-// If --write_histogram_proto_json=false, this returns all perf results to date
-// in a JSON string formatted as described in dashboard/docs/data-format.md
-// in https://github.com/catapult-project/catapult/blob/master/. If
-// --write_histogram_proto_json=true, returns a string-encoded proto as
-// described in tracing/tracing/proto/histogram.proto in
+// Returns a string-encoded proto as described in
+// tracing/tracing/proto/histogram.proto in
// https://github.com/catapult-project/catapult/blob/master/.
+// If you want to print the proto in human readable format, use
+// tracing/bin/proto2json from third_party/catapult in your WebRTC checkout.
std::string GetPerfResults();
// Print into stdout plottable metrics for further post processing.
@@ -122,7 +121,4 @@ void ClearPerfResults();
} // namespace test
} // namespace webrtc
-// Only for use by tests.
-ABSL_DECLARE_FLAG(bool, write_histogram_proto_json);
-
#endif // TEST_TESTSUPPORT_PERF_TEST_H_
diff --git a/test/testsupport/perf_test_graphjson_writer.cc b/test/testsupport/perf_test_graphjson_writer.cc
deleted file mode 100644
index cf49b29320..0000000000
--- a/test/testsupport/perf_test_graphjson_writer.cc
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#include "test/testsupport/perf_test_graphjson_writer.h"
-
-#include <fstream>
-#include <map>
-#include <sstream>
-#include <string>
-#include <vector>
-
-#include "rtc_base/checks.h"
-#include "rtc_base/critical_section.h"
-
-namespace webrtc {
-namespace test {
-
-std::string UnitWithDirection(
- const std::string& units,
- webrtc::test::ImproveDirection improve_direction) {
- switch (improve_direction) {
- case webrtc::test::ImproveDirection::kNone:
- return units;
- case webrtc::test::ImproveDirection::kSmallerIsBetter:
- return units + "_smallerIsBetter";
- case webrtc::test::ImproveDirection::kBiggerIsBetter:
- return units + "_biggerIsBetter";
- }
-}
-
-template <typename Container>
-void OutputListToStream(std::ostream* ostream, const Container& values) {
- const char* sep = "";
- for (const auto& v : values) {
- (*ostream) << sep << v;
- sep = ",";
- }
-}
-
-namespace {
-
-class PerfTestGraphJsonWriter : public PerfTestResultWriter {
- public:
- PerfTestGraphJsonWriter() : crit_(), graphs_() {}
- void ClearResults() {
- rtc::CritScope lock(&crit_);
- graphs_.clear();
- }
-
- void LogResult(const std::string& graph_name,
- const std::string& trace_name,
- const double value,
- const std::string& units,
- const bool important,
- webrtc::test::ImproveDirection improve_direction) {
- std::ostringstream json_stream;
- json_stream << '"' << trace_name << R"(":{)";
- json_stream << R"("type":"scalar",)";
- json_stream << R"("value":)" << value << ',';
- json_stream << R"("units":")" << UnitWithDirection(units, improve_direction)
- << R"("})";
- rtc::CritScope lock(&crit_);
- graphs_[graph_name].push_back(json_stream.str());
- }
-
- void LogResultMeanAndError(const std::string& graph_name,
- const std::string& trace_name,
- const double mean,
- const double error,
- const std::string& units,
- const bool important,
- webrtc::test::ImproveDirection improve_direction) {
- std::ostringstream json_stream;
- json_stream << '"' << trace_name << R"(":{)";
- json_stream << R"("type":"list_of_scalar_values",)";
- json_stream << R"("values":[)" << mean << "],";
- json_stream << R"("std":)" << error << ',';
- json_stream << R"("units":")" << UnitWithDirection(units, improve_direction)
- << R"("})";
- rtc::CritScope lock(&crit_);
- graphs_[graph_name].push_back(json_stream.str());
- }
-
- void LogResultList(const std::string& graph_name,
- const std::string& trace_name,
- const rtc::ArrayView<const double> values,
- const std::string& units,
- const bool important,
- webrtc::test::ImproveDirection improve_direction) {
- std::ostringstream value_stream;
- value_stream.precision(8);
- value_stream << '[';
- OutputListToStream(&value_stream, values);
- value_stream << ']';
-
- std::ostringstream json_stream;
- json_stream << '"' << trace_name << R"(":{)";
- json_stream << R"("type":"list_of_scalar_values",)";
- json_stream << R"("values":)" << value_stream.str() << ',';
- json_stream << R"("units":")" << UnitWithDirection(units, improve_direction)
- << R"("})";
- rtc::CritScope lock(&crit_);
- graphs_[graph_name].push_back(json_stream.str());
- }
-
- std::string Serialize() const {
- std::ostringstream json_stream;
- json_stream << R"({"format_version":"1.0",)";
- json_stream << R"("charts":{)";
- rtc::CritScope lock(&crit_);
- for (auto graphs_it = graphs_.begin(); graphs_it != graphs_.end();
- ++graphs_it) {
- if (graphs_it != graphs_.begin())
- json_stream << ',';
- json_stream << '"' << graphs_it->first << "\":";
- json_stream << '{';
- OutputListToStream(&json_stream, graphs_it->second);
- json_stream << '}';
- }
- json_stream << "}}";
- return json_stream.str();
- }
-
- private:
- rtc::CriticalSection crit_;
- std::map<std::string, std::vector<std::string>> graphs_
- RTC_GUARDED_BY(&crit_);
-};
-
-} // namespace
-
-PerfTestResultWriter* CreateGraphJsonWriter() {
- return new PerfTestGraphJsonWriter();
-}
-
-} // namespace test
-} // namespace webrtc
diff --git a/test/testsupport/perf_test_graphjson_writer.h b/test/testsupport/perf_test_graphjson_writer.h
deleted file mode 100644
index ae32cfa9e0..0000000000
--- a/test/testsupport/perf_test_graphjson_writer.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2020 The WebRTC project authors. All Rights Reserved.
- *
- * Use of this source code is governed by a BSD-style license
- * that can be found in the LICENSE file in the root of the source
- * tree. An additional intellectual property rights grant can be found
- * in the file PATENTS. All contributing project authors may
- * be found in the AUTHORS file in the root of the source tree.
- */
-
-#ifndef TEST_TESTSUPPORT_PERF_TEST_GRAPHJSON_WRITER_H_
-#define TEST_TESTSUPPORT_PERF_TEST_GRAPHJSON_WRITER_H_
-
-#include <string>
-
-#include "test/testsupport/perf_test.h"
-#include "test/testsupport/perf_test_result_writer.h"
-
-namespace webrtc {
-namespace test {
-
-PerfTestResultWriter* CreateGraphJsonWriter();
-
-// Utilities that happen to be useful to perf_test.cc. Just move these back
-// to perf_test.cc when this file goes away.
-std::string UnitWithDirection(const std::string& units,
- webrtc::test::ImproveDirection improve_direction);
-
-} // namespace test
-} // namespace webrtc
-
-#endif // TEST_TESTSUPPORT_PERF_TEST_GRAPHJSON_WRITER_H_
diff --git a/test/testsupport/perf_test_unittest.cc b/test/testsupport/perf_test_unittest.cc
index d99014bf80..b779f4c6ec 100644
--- a/test/testsupport/perf_test_unittest.cc
+++ b/test/testsupport/perf_test_unittest.cc
@@ -22,47 +22,6 @@
namespace proto = catapult::tracing::tracing::proto;
#endif
-namespace {
-
-const char* kJsonExpected = R"({
- "format_version":"1.0",
- "charts":{
- "foobar":{
- "baz_v":{
- "type":"scalar",
- "value":7,
- "units":"widgets"
- },
- "baz_me":{
- "type":"list_of_scalar_values",
- "values":[1],
- "std":2,
- "units":"lemurs"
- },
- "baz_vl":{
- "type":"list_of_scalar_values",
- "values":[1,2,3],
- "units":"units"
- }
- },
- "measurementmodifier":{
- "trace":{
- "type":"scalar",
- "value":42,
- "units":"units"
- }
- }
- }
-})";
-
-std::string RemoveSpaces(std::string s) {
- s.erase(std::remove(s.begin(), s.end(), ' '), s.end());
- s.erase(std::remove(s.begin(), s.end(), '\n'), s.end());
- return s;
-}
-
-} // namespace
-
namespace webrtc {
namespace test {
@@ -96,21 +55,6 @@ TEST_F(PerfTest, MAYBE_TestPrintResult) {
EXPECT_EQ(expected, ::testing::internal::GetCapturedStdout());
}
-TEST_F(PerfTest, TestGetPerfResultsJSON) {
- bool original_flag = absl::GetFlag(FLAGS_write_histogram_proto_json);
- absl::SetFlag(&FLAGS_write_histogram_proto_json, false);
-
- PrintResult("measurement", "modifier", "trace", 42, "units", false);
- PrintResult("foo", "bar", "baz_v", 7, "widgets", true);
- PrintResultMeanAndError("foo", "bar", "baz_me", 1, 2, "lemurs", false);
- const double kListOfScalars[] = {1, 2, 3};
- PrintResultList("foo", "bar", "baz_vl", kListOfScalars, "units", false);
-
- EXPECT_EQ(RemoveSpaces(kJsonExpected), GetPerfResults());
-
- absl::SetFlag(&FLAGS_write_histogram_proto_json, original_flag);
-}
-
TEST_F(PerfTest, TestClearPerfResults) {
PrintResult("measurement", "modifier", "trace", 42, "units", false);
ClearPerfResults();
@@ -158,16 +102,6 @@ TEST_F(PerfTest, TestGetPerfResultsHistograms) {
EXPECT_EQ(hist2.unit().unit(), proto::MS_BEST_FIT_FORMAT);
}
-TEST_F(PerfTest, TestClearPerfResultsHistograms) {
- bool original_flag = absl::GetFlag(FLAGS_write_histogram_proto_json);
- absl::SetFlag(&FLAGS_write_histogram_proto_json, true);
- PrintResult("measurement", "modifier", "trace", 42, "ms", false);
- ClearPerfResults();
- EXPECT_EQ("", GetPerfResults());
-
- absl::SetFlag(&FLAGS_write_histogram_proto_json, original_flag);
-}
-
#endif // WEBRTC_ENABLE_PROTOBUF
#if GTEST_HAS_DEATH_TEST