| Index: components/tracing/trace_config_file_unittest.cc
|
| diff --git a/components/tracing/trace_config_file_unittest.cc b/components/tracing/trace_config_file_unittest.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3cb32af41df132111399df9474f4ad204b157aff
|
| --- /dev/null
|
| +++ b/components/tracing/trace_config_file_unittest.cc
|
| @@ -0,0 +1,225 @@
|
| +// Copyright (c) 2015 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.
|
| +
|
| +#include "base/at_exit.h"
|
| +#include "base/command_line.h"
|
| +#include "base/files/file_util.h"
|
| +#include "base/files/scoped_temp_dir.h"
|
| +#include "components/tracing/trace_config_file.h"
|
| +#include "components/tracing/tracing_switches.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +
|
| +namespace tracing {
|
| +
|
| +namespace {
|
| +
|
| +const char kTraceConfig[] =
|
| + "{"
|
| + "\"enable_argument_filter\":true,"
|
| + "\"enable_sampling\":true,"
|
| + "\"enable_systrace\":true,"
|
| + "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"],"
|
| + "\"included_categories\":[\"included\","
|
| + "\"inc_pattern*\","
|
| + "\"disabled-by-default-cc\"],"
|
| + "\"record_mode\":\"record-continuously\","
|
| + "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]"
|
| + "}";
|
| +
|
| +std::string GetTraceConfigFileContent(std::string trace_config,
|
| + std::string startup_duration,
|
| + std::string result_file) {
|
| + std::string content = "{";
|
| + if (!trace_config.empty())
|
| + content += "\"trace_config\":" + trace_config;
|
| +
|
| + if (!startup_duration.empty()) {
|
| + if (content != "{")
|
| + content += ",";
|
| + content += "\"startup_duration\":" + startup_duration;
|
| + }
|
| +
|
| + if (!result_file.empty()) {
|
| + if (content != "{")
|
| + content += ",";
|
| + content += "\"result_file\":\"" + result_file + "\"";
|
| + }
|
| +
|
| + content += "}";
|
| + return content;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +TEST(TraceConfigFileTest, TraceStartupEnabled) {
|
| + base::ShadowingAtExitManager sem;
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kTraceStartup);
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kTraceConfigFile);
|
| +
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, TraceShutdownEnabled) {
|
| + base::ShadowingAtExitManager sem;
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kTraceShutdown);
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kTraceConfigFile);
|
| +
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, TraceConfigFileNotEnabled) {
|
| + base::ShadowingAtExitManager sem;
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, TraceConfigFileEnabledWithoutPath) {
|
| + base::ShadowingAtExitManager sem;
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kTraceConfigFile);
|
| +
|
| + ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
|
| + EXPECT_EQ(base::trace_event::TraceConfig().ToString(),
|
| + TraceConfigFile::GetInstance()->GetTraceConfig().ToString());
|
| + EXPECT_EQ(5, TraceConfigFile::GetInstance()->GetStartupDuration());
|
| + EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")),
|
| + TraceConfigFile::GetInstance()->GetResultFile());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, TraceConfigFileEnabledWithInvalidPath) {
|
| + base::ShadowingAtExitManager sem;
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile,
|
| + base::FilePath(FILE_PATH_LITERAL("invalid-trace-config-file-path")));
|
| +
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, ValidContent) {
|
| + base::ShadowingAtExitManager sem;
|
| + std::string content = GetTraceConfigFileContent(
|
| + kTraceConfig, "10", "trace_result_file.log");
|
| +
|
| + base::FilePath trace_config_file;
|
| + base::ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + ASSERT_TRUE(
|
| + base::CreateTemporaryFileInDir(temp_dir.path(), &trace_config_file));
|
| + ASSERT_NE(
|
| + -1,
|
| + base::WriteFile(trace_config_file, content.c_str(), content.length()));
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile, trace_config_file);
|
| +
|
| + ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
|
| + EXPECT_STREQ(
|
| + kTraceConfig,
|
| + TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str());
|
| + EXPECT_EQ(10, TraceConfigFile::GetInstance()->GetStartupDuration());
|
| + EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("trace_result_file.log")),
|
| + TraceConfigFile::GetInstance()->GetResultFile());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, ValidContentWithOnlyTraceConfig) {
|
| + base::ShadowingAtExitManager sem;
|
| + std::string content = GetTraceConfigFileContent(kTraceConfig, "", "");
|
| +
|
| + base::FilePath trace_config_file;
|
| + base::ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + ASSERT_TRUE(
|
| + base::CreateTemporaryFileInDir(temp_dir.path(), &trace_config_file));
|
| + ASSERT_NE(
|
| + -1,
|
| + base::WriteFile(trace_config_file, content.c_str(), content.length()));
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile, trace_config_file);
|
| +
|
| + ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
|
| + EXPECT_STREQ(
|
| + kTraceConfig,
|
| + TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str());
|
| + EXPECT_EQ(0, TraceConfigFile::GetInstance()->GetStartupDuration());
|
| + EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")),
|
| + TraceConfigFile::GetInstance()->GetResultFile());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, ContentWithNegtiveDuration) {
|
| + base::ShadowingAtExitManager sem;
|
| + std::string content = GetTraceConfigFileContent(kTraceConfig, "-1", "");
|
| +
|
| + base::FilePath trace_config_file;
|
| + base::ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + ASSERT_TRUE(
|
| + base::CreateTemporaryFileInDir(temp_dir.path(), &trace_config_file));
|
| + ASSERT_NE(
|
| + -1,
|
| + base::WriteFile(trace_config_file, content.c_str(), content.length()));
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile, trace_config_file);
|
| +
|
| + ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
|
| + EXPECT_STREQ(
|
| + kTraceConfig,
|
| + TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str());
|
| + EXPECT_EQ(0, TraceConfigFile::GetInstance()->GetStartupDuration());
|
| + EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")),
|
| + TraceConfigFile::GetInstance()->GetResultFile());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, ContentWithoutTraceConfig) {
|
| + base::ShadowingAtExitManager sem;
|
| + std::string content = GetTraceConfigFileContent(
|
| + "", "10", "trace_result_file.log");
|
| +
|
| + base::FilePath trace_config_file;
|
| + base::ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + ASSERT_TRUE(
|
| + base::CreateTemporaryFileInDir(temp_dir.path(), &trace_config_file));
|
| + ASSERT_NE(
|
| + -1,
|
| + base::WriteFile(trace_config_file, content.c_str(), content.length()));
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile, trace_config_file);
|
| +
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, InvalidContent) {
|
| + base::ShadowingAtExitManager sem;
|
| + std::string content = "invalid trace config file content";
|
| +
|
| + base::FilePath trace_config_file;
|
| + base::ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + ASSERT_TRUE(
|
| + base::CreateTemporaryFileInDir(temp_dir.path(), &trace_config_file));
|
| + ASSERT_NE(
|
| + -1,
|
| + base::WriteFile(trace_config_file, content.c_str(), content.length()));
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile, trace_config_file);
|
| +
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +TEST(TraceConfigFileTest, EmptyContent) {
|
| + base::ShadowingAtExitManager sem;
|
| + base::FilePath trace_config_file;
|
| + base::ScopedTempDir temp_dir;
|
| + ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
|
| + ASSERT_TRUE(
|
| + base::CreateTemporaryFileInDir(temp_dir.path(), &trace_config_file));
|
| + base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
|
| + switches::kTraceConfigFile, trace_config_file);
|
| +
|
| + EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
|
| +}
|
| +
|
| +} // namespace tracing
|
|
|