webrtc_m130/test/test_main.cc

119 lines
3.8 KiB
C++
Raw Normal View History

/*
* Copyright (c) 2013 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 "rtc_base/flags.h"
#include "rtc_base/logging.h"
#include "rtc_base/thread.h"
#include "system_wrappers/include/field_trial_default.h"
#include "system_wrappers/include/metrics_default.h"
#include "test/field_trial.h"
#include "test/gmock.h"
#include "test/gtest.h"
#include "test/testsupport/fileutils.h"
#include "test/testsupport/perf_test.h"
#if defined(WEBRTC_IOS)
#include "test/ios/test_support.h"
Reland of Stop silently accepting unsupported flags in test binaries (patchset #1 id:1 of https://codereview.webrtc.org/3002963002/ ) Reason for revert: Relanding without changes. Problem with unused flags was fixed in https://codereview.webrtc.org/2998143002/ Original issue's description: > Revert of Stop silently accepting unsupported flags in test binaries (patchset #5 id:150001 of https://codereview.webrtc.org/2968003003/ ) > > Reason for revert: > Causes failures on perf bots > https://luci-milo.appspot.com/buildbot/client.webrtc.perf/Mac%2010.11/3567 > > Original issue's description: > > Stop silently accepting unsupported flags in test binaries > > > > Instead explicitly ignore only the flags we know should be ignored. > > > > BUG=webrtc:7568 > > > > Review-Url: https://codereview.webrtc.org/2968003003 > > Cr-Commit-Position: refs/heads/master@{#19412} > > Committed: https://chromium.googlesource.com/external/webrtc/+/a2782f6f5d350e423b8166d603f44e17e1d7540b > > TBR=kjellander@webrtc.org,henrika@webrtc.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=webrtc:7568 > > Review-Url: https://codereview.webrtc.org/3002963002 > Cr-Commit-Position: refs/heads/master@{#19413} > Committed: https://chromium.googlesource.com/external/webrtc/+/d64072c598875cdf3a8ce5806d3410125363596d TBR=kjellander@webrtc.org,henrika@webrtc.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=webrtc:7568 Review-Url: https://codereview.webrtc.org/2999383002 Cr-Commit-Position: refs/heads/master@{#19455}
2017-08-22 10:55:47 -07:00
DEFINE_string(NSTreatUnknownArgumentsAsOpen,
"",
"Intentionally ignored flag intended for iOS simulator.");
DEFINE_string(ApplePersistenceIgnoreState,
"",
"Intentionally ignored flag intended for iOS simulator.");
DEFINE_bool(
save_chartjson_result,
false,
"Store the perf results in Documents/perf_result.json in the format "
"described by "
"https://github.com/catapult-project/catapult/blob/master/dashboard/docs/"
"data-format.md.");
#else
DEFINE_string(isolated_script_test_output,
"",
"Intentionally ignored flag intended for Chromium.");
DEFINE_string(
isolated_script_test_perf_output,
"",
"Path where the perf results should be stored in the JSON format described "
"by "
"https://github.com/catapult-project/catapult/blob/master/dashboard/docs/"
"data-format.md.");
#endif
DEFINE_bool(logs, false, "print logs to stderr");
DEFINE_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.");
DEFINE_bool(help, false, "Print this message.");
int main(int argc, char* argv[]) {
::testing::InitGoogleMock(&argc, argv);
// Default to LS_INFO, even for release builds to provide better test logging.
// TODO(pbos): Consider adding a command-line override.
if (rtc::LogMessage::GetLogToDebug() > rtc::LS_INFO)
rtc::LogMessage::LogToDebug(rtc::LS_INFO);
if (rtc::FlagList::SetFlagsFromCommandLine(&argc, argv, false)) {
return 1;
}
if (FLAG_help) {
rtc::FlagList::Print(nullptr, false);
return 0;
}
webrtc::test::SetExecutablePath(argv[0]);
webrtc::test::ValidateFieldTrialsStringOrDie(FLAG_force_fieldtrials);
// InitFieldTrialsFromString stores the char*, so the char array must outlive
// the application.
webrtc::field_trial::InitFieldTrialsFromString(FLAG_force_fieldtrials);
webrtc::metrics::Enable();
rtc::LogMessage::SetLogToStderr(FLAG_logs);
// Ensure that main thread gets wrapped as an rtc::Thread.
// TODO(bugs.webrt.org/9714): It might be better to avoid wrapping the main
// thread, or leave it to individual tests that need it. But as long as we
// have automatic thread wrapping, we need this to avoid that some other
// random thread (which one depending on which tests are run) gets
// automatically wrapped.
rtc::ThreadManager::Instance()->WrapCurrentThread();
RTC_CHECK(rtc::Thread::Current());
#if defined(WEBRTC_IOS)
rtc::test::InitTestSuite(RUN_ALL_TESTS, argc, argv,
FLAG_save_chartjson_result);
rtc::test::RunTestsFromIOSApp();
#else
int exit_code = RUN_ALL_TESTS();
std::string chartjson_result_file = FLAG_isolated_script_test_perf_output;
if (!chartjson_result_file.empty()) {
webrtc::test::WritePerfResults(chartjson_result_file);
}
return exit_code;
#endif
}