From 054ea47379a573c421f177ef2f20705fc2fd4dd9 Mon Sep 17 00:00:00 2001 From: Mirko Bonadei Date: Thu, 21 Jul 2022 09:52:32 +0200 Subject: [PATCH] Move common test flags to a separate library. This enables the possibility to use these flags from other main functions. Bug: b/217701950, b/238157120 Change-Id: I6e9f09c4be39b2ac690c8e6b6da380ef3c81f460 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/269140 Commit-Queue: Mirko Bonadei Reviewed-by: Artem Titov Cr-Commit-Position: refs/heads/main@{#37582} --- test/BUILD.gn | 11 +++++++++++ test/test_flags.cc | 38 ++++++++++++++++++++++++++++++++++++++ test/test_flags.h | 22 ++++++++++++++++++++++ test/test_main_lib.cc | 26 +++----------------------- 4 files changed, 74 insertions(+), 23 deletions(-) create mode 100644 test/test_flags.cc create mode 100644 test/test_flags.h diff --git a/test/BUILD.gn b/test/BUILD.gn index 59dd595595..c05181e2fd 100644 --- a/test/BUILD.gn +++ b/test/BUILD.gn @@ -485,6 +485,16 @@ if (rtc_include_tests && !build_with_chromium) { absl_deps = [ "//third_party/abseil-cpp/absl/flags:flag" ] } + rtc_library("test_flags") { + visibility = [ "*" ] + testonly = true + sources = [ + "test_flags.cc", + "test_flags.h", + ] + absl_deps = [ "//third_party/abseil-cpp/absl/flags:flag" ] + } + rtc_library("test_main_lib") { visibility = [ "*" ] testonly = true @@ -497,6 +507,7 @@ if (rtc_include_tests && !build_with_chromium) { ":field_trial", ":perf_test", ":resources_dir_flag", + ":test_flags", ":test_support", "../rtc_base", "../rtc_base:checks", diff --git a/test/test_flags.cc b/test/test_flags.cc new file mode 100644 index 0000000000..3f30aff39a --- /dev/null +++ b/test/test_flags.cc @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 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/test_flags.h" + +#include +#include + +#include "absl/flags/flag.h" + +ABSL_FLAG(std::string, + force_fieldtrials, + "", + "Field trials control experimental feature code which can be forced. " + "E.g. running with --force_fieldtrials=WebRTC-FooFeature/Enable/" + " will assign the group Enable to field trial WebRTC-FooFeature."); + +ABSL_FLAG(std::vector, + plot, + {}, + "List of metrics that should be exported for plotting (if they are " + "available). Example: psnr,ssim,encode_time. To plot all available " + " metrics pass 'all' as flag value"); + +ABSL_FLAG( + std::string, + isolated_script_test_perf_output, + "", + "Path where the perf results should be stored in proto format described " + "described by histogram.proto in " + "https://chromium.googlesource.com/catapult/."); diff --git a/test/test_flags.h b/test/test_flags.h new file mode 100644 index 0000000000..694b4540ce --- /dev/null +++ b/test/test_flags.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2022 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_TEST_FLAGS_H_ +#define TEST_TEST_FLAGS_H_ + +#include +#include + +#include "absl/flags/declare.h" + +ABSL_DECLARE_FLAG(std::string, force_fieldtrials); +ABSL_DECLARE_FLAG(std::vector, plot); +ABSL_DECLARE_FLAG(std::string, isolated_script_test_perf_output); + +#endif // TEST_TEST_FLAGS_H_ diff --git a/test/test_main_lib.cc b/test/test_main_lib.cc index 90dc073fce..204af03ca3 100644 --- a/test/test_main_lib.cc +++ b/test/test_main_lib.cc @@ -28,6 +28,7 @@ #include "system_wrappers/include/metrics.h" #include "test/field_trial.h" #include "test/gtest.h" +#include "test/test_flags.h" #include "test/testsupport/perf_test.h" #include "test/testsupport/resources_dir_flag.h" @@ -64,22 +65,6 @@ ABSL_FLAG(std::string, "", "Path to output an empty JSON file which Chromium infra requires."); -ABSL_FLAG( - std::string, - isolated_script_test_perf_output, - "", - "Path where the perf results should be stored in proto format described " - "described by histogram.proto in " - "https://chromium.googlesource.com/catapult/."); - -constexpr char kPlotAllMetrics[] = "all"; -ABSL_FLAG(std::vector, - plot, - {}, - "List of metrics that should be exported for plotting (if they are " - "available). Example: psnr,ssim,encode_time. To plot all available " - " metrics pass 'all' as flag value"); - ABSL_FLAG(bool, logs, true, "print logs to stderr"); ABSL_FLAG(bool, verbose, false, "verbose logs to stderr"); @@ -89,17 +74,12 @@ ABSL_FLAG(std::string, "Path to collect trace events (json file) for chrome://tracing. " "If not set, events aren't captured."); -ABSL_FLAG(std::string, - force_fieldtrials, - "", - "Field trials control experimental feature code which can be forced. " - "E.g. running with --force_fieldtrials=WebRTC-FooFeature/Enable/" - " will assign the group Enable to field trial WebRTC-FooFeature."); - namespace webrtc { namespace { +constexpr char kPlotAllMetrics[] = "all"; + class TestMainImpl : public TestMain { public: int Init(int* argc, char* argv[]) override { return Init(); }