diff options
Diffstat (limited to 'base/test/perf_test_suite.h')
-rw-r--r-- | base/test/perf_test_suite.h | 48 |
1 files changed, 35 insertions, 13 deletions
diff --git a/base/test/perf_test_suite.h b/base/test/perf_test_suite.h index 5dc0e21..bac5a63 100644 --- a/base/test/perf_test_suite.h +++ b/base/test/perf_test_suite.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2009 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -6,22 +6,44 @@ #define BASE_TEST_PERF_TEST_SUITE_H_ #pragma once -#include "base/basictypes.h" +#include "base/command_line.h" +#include "base/debug_util.h" +#include "base/file_path.h" +#include "base/perftimer.h" +#include "base/process_util.h" +#include "base/string_util.h" #include "base/test/test_suite.h" -namespace base { - class PerfTestSuite : public TestSuite { public: - PerfTestSuite(int argc, char** argv); - - virtual void Initialize(); - virtual void Shutdown(); - - private: - DISALLOW_COPY_AND_ASSIGN(PerfTestSuite); + PerfTestSuite(int argc, char** argv) : TestSuite(argc, argv) { + } + + virtual void Initialize() { + TestSuite::Initialize(); + + // Initialize the perf timer log + FilePath log_path = + CommandLine::ForCurrentProcess()->GetSwitchValuePath("log-file"); + if (log_path.empty()) { + FilePath exe; + PathService::Get(base::FILE_EXE, &exe); + log_path = exe.ReplaceExtension(FILE_PATH_LITERAL("log")); + log_path = log_path.InsertBeforeExtension(FILE_PATH_LITERAL("_perf")); + } + ASSERT_TRUE(InitPerfLog(log_path)); + + // Raise to high priority to have more precise measurements. Since we don't + // aim at 1% precision, it is not necessary to run at realtime level. + if (!DebugUtil::BeingDebugged()) + base::RaiseProcessToHighPriority(); + } + + virtual void Shutdown() { + TestSuite::Shutdown(); + + FinalizePerfLog(); + } }; -} // namespace base - #endif // BASE_TEST_PERF_TEST_SUITE_H_ |