Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(767)

Side by Side Diff: components/tracing/common/trace_config_file_unittest.cc

Issue 2683913002: Enable startup tracing from command line flags in components/tracing (Closed)
Patch Set: Rebase. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/tracing/common/trace_config_file.h"
6
5 #include "base/at_exit.h" 7 #include "base/at_exit.h"
6 #include "base/command_line.h" 8 #include "base/command_line.h"
7 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
8 #include "base/files/scoped_temp_dir.h" 10 #include "base/files/scoped_temp_dir.h"
9 #include "components/tracing/browser/trace_config_file.h"
10 #include "components/tracing/common/tracing_switches.h" 11 #include "components/tracing/common/tracing_switches.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
12 13
13 namespace tracing { 14 namespace tracing {
14 15
15 namespace { 16 namespace {
16 17
17 const char kTraceConfig[] = 18 const char kTraceConfig[] =
18 "{" 19 "{"
19 "\"enable_argument_filter\":true," 20 "\"enable_argument_filter\":true,"
(...skipping 22 matching lines...) Expand all
42 if (!result_file.empty()) { 43 if (!result_file.empty()) {
43 if (content != "{") 44 if (content != "{")
44 content += ","; 45 content += ",";
45 content += "\"result_file\":\"" + result_file + "\""; 46 content += "\"result_file\":\"" + result_file + "\"";
46 } 47 }
47 48
48 content += "}"; 49 content += "}";
49 return content; 50 return content;
50 } 51 }
51 52
52 } // namespace 53 } // namespace
53 54
54 TEST(TraceConfigFileTest, TraceStartupEnabled) { 55 TEST(TraceConfigFileTest, TraceStartupEnabled) {
55 base::ShadowingAtExitManager sem; 56 base::ShadowingAtExitManager sem;
56 base::CommandLine::ForCurrentProcess()->AppendSwitch( 57 base::CommandLine::ForCurrentProcess()->AppendSwitch(switches::kTraceStartup);
57 switches::kTraceStartup);
58 base::CommandLine::ForCurrentProcess()->AppendSwitch( 58 base::CommandLine::ForCurrentProcess()->AppendSwitch(
59 switches::kTraceConfigFile); 59 switches::kTraceConfigFile);
60 60
61 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled()); 61 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
62 } 62 }
63 63
64 TEST(TraceConfigFileTest, TraceShutdownEnabled) { 64 TEST(TraceConfigFileTest, TraceShutdownEnabled) {
65 base::ShadowingAtExitManager sem; 65 base::ShadowingAtExitManager sem;
66 base::CommandLine::ForCurrentProcess()->AppendSwitch( 66 base::CommandLine::ForCurrentProcess()->AppendSwitch(
67 switches::kTraceShutdown); 67 switches::kTraceShutdown);
(...skipping 25 matching lines...) Expand all
93 base::ShadowingAtExitManager sem; 93 base::ShadowingAtExitManager sem;
94 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 94 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
95 switches::kTraceConfigFile, 95 switches::kTraceConfigFile,
96 base::FilePath(FILE_PATH_LITERAL("invalid-trace-config-file-path"))); 96 base::FilePath(FILE_PATH_LITERAL("invalid-trace-config-file-path")));
97 97
98 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled()); 98 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
99 } 99 }
100 100
101 TEST(TraceConfigFileTest, ValidContent) { 101 TEST(TraceConfigFileTest, ValidContent) {
102 base::ShadowingAtExitManager sem; 102 base::ShadowingAtExitManager sem;
103 std::string content = GetTraceConfigFileContent( 103 std::string content =
104 kTraceConfig, "10", "trace_result_file.log"); 104 GetTraceConfigFileContent(kTraceConfig, "10", "trace_result_file.log");
105 105
106 base::FilePath trace_config_file; 106 base::FilePath trace_config_file;
107 base::ScopedTempDir temp_dir; 107 base::ScopedTempDir temp_dir;
108 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 108 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
109 ASSERT_TRUE( 109 ASSERT_TRUE(
110 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 110 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
111 ASSERT_NE(-1, base::WriteFile( 111 ASSERT_NE(-1, base::WriteFile(trace_config_file, content.c_str(),
112 trace_config_file, content.c_str(), (int)content.length())); 112 (int)content.length()));
113 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 113 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
114 switches::kTraceConfigFile, trace_config_file); 114 switches::kTraceConfigFile, trace_config_file);
115 115
116 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled()); 116 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
117 EXPECT_STREQ( 117 EXPECT_STREQ(
118 kTraceConfig, 118 kTraceConfig,
119 TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str()); 119 TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str());
120 EXPECT_EQ(10, TraceConfigFile::GetInstance()->GetStartupDuration()); 120 EXPECT_EQ(10, TraceConfigFile::GetInstance()->GetStartupDuration());
121 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("trace_result_file.log")), 121 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("trace_result_file.log")),
122 TraceConfigFile::GetInstance()->GetResultFile()); 122 TraceConfigFile::GetInstance()->GetResultFile());
123 } 123 }
124 124
125 TEST(TraceConfigFileTest, ValidContentWithOnlyTraceConfig) { 125 TEST(TraceConfigFileTest, ValidContentWithOnlyTraceConfig) {
126 base::ShadowingAtExitManager sem; 126 base::ShadowingAtExitManager sem;
127 std::string content = GetTraceConfigFileContent(kTraceConfig, "", ""); 127 std::string content = GetTraceConfigFileContent(kTraceConfig, "", "");
128 128
129 base::FilePath trace_config_file; 129 base::FilePath trace_config_file;
130 base::ScopedTempDir temp_dir; 130 base::ScopedTempDir temp_dir;
131 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 131 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
132 ASSERT_TRUE( 132 ASSERT_TRUE(
133 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 133 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
134 ASSERT_NE(-1, base::WriteFile( 134 ASSERT_NE(-1, base::WriteFile(trace_config_file, content.c_str(),
135 trace_config_file, content.c_str(), (int)content.length())); 135 (int)content.length()));
136 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 136 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
137 switches::kTraceConfigFile, trace_config_file); 137 switches::kTraceConfigFile, trace_config_file);
138 138
139 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled()); 139 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
140 EXPECT_STREQ( 140 EXPECT_STREQ(
141 kTraceConfig, 141 kTraceConfig,
142 TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str()); 142 TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str());
143 EXPECT_EQ(0, TraceConfigFile::GetInstance()->GetStartupDuration()); 143 EXPECT_EQ(0, TraceConfigFile::GetInstance()->GetStartupDuration());
144 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")), 144 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")),
145 TraceConfigFile::GetInstance()->GetResultFile()); 145 TraceConfigFile::GetInstance()->GetResultFile());
146 } 146 }
147 147
148 TEST(TraceConfigFileTest, ContentWithAbsoluteResultFilePath) { 148 TEST(TraceConfigFileTest, ContentWithAbsoluteResultFilePath) {
149 base::ShadowingAtExitManager sem; 149 base::ShadowingAtExitManager sem;
150 base::ScopedTempDir temp_dir; 150 base::ScopedTempDir temp_dir;
151 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 151 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
152 152
153 const base::FilePath result_file_path = 153 const base::FilePath result_file_path =
154 temp_dir.GetPath().Append(FILE_PATH_LITERAL("trace_result_file.log")); 154 temp_dir.GetPath().Append(FILE_PATH_LITERAL("trace_result_file.log"));
155 ASSERT_TRUE(result_file_path.IsAbsolute()); 155 ASSERT_TRUE(result_file_path.IsAbsolute());
156 156
157 std::string result_file_path_str = result_file_path.AsUTF8Unsafe(); 157 std::string result_file_path_str = result_file_path.AsUTF8Unsafe();
158 auto it = std::find( 158 auto it =
159 result_file_path_str.begin(), result_file_path_str.end(), '\\'); 159 std::find(result_file_path_str.begin(), result_file_path_str.end(), '\\');
160 while (it != result_file_path_str.end()) { 160 while (it != result_file_path_str.end()) {
161 auto it2 = result_file_path_str.insert(it, '\\'); 161 auto it2 = result_file_path_str.insert(it, '\\');
162 it = std::find(it2+2, result_file_path_str.end(), '\\'); 162 it = std::find(it2 + 2, result_file_path_str.end(), '\\');
163 } 163 }
164 std::string content = GetTraceConfigFileContent( 164 std::string content =
165 kTraceConfig, "10", result_file_path_str); 165 GetTraceConfigFileContent(kTraceConfig, "10", result_file_path_str);
166 166
167 base::FilePath trace_config_file; 167 base::FilePath trace_config_file;
168 ASSERT_TRUE( 168 ASSERT_TRUE(
169 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 169 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
170 ASSERT_NE(-1, base::WriteFile( 170 ASSERT_NE(-1, base::WriteFile(trace_config_file, content.c_str(),
171 trace_config_file, content.c_str(), (int)content.length())); 171 (int)content.length()));
172 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 172 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
173 switches::kTraceConfigFile, trace_config_file); 173 switches::kTraceConfigFile, trace_config_file);
174 174
175 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled()); 175 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
176 EXPECT_EQ(result_file_path, TraceConfigFile::GetInstance()->GetResultFile()); 176 EXPECT_EQ(result_file_path, TraceConfigFile::GetInstance()->GetResultFile());
177 } 177 }
178 178
179 TEST(TraceConfigFileTest, ContentWithNegtiveDuration) { 179 TEST(TraceConfigFileTest, ContentWithNegtiveDuration) {
180 base::ShadowingAtExitManager sem; 180 base::ShadowingAtExitManager sem;
181 std::string content = GetTraceConfigFileContent(kTraceConfig, "-1", ""); 181 std::string content = GetTraceConfigFileContent(kTraceConfig, "-1", "");
182 182
183 base::FilePath trace_config_file; 183 base::FilePath trace_config_file;
184 base::ScopedTempDir temp_dir; 184 base::ScopedTempDir temp_dir;
185 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 185 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
186 ASSERT_TRUE( 186 ASSERT_TRUE(
187 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 187 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
188 ASSERT_NE(-1, base::WriteFile( 188 ASSERT_NE(-1, base::WriteFile(trace_config_file, content.c_str(),
189 trace_config_file, content.c_str(), (int)content.length())); 189 (int)content.length()));
190 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 190 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
191 switches::kTraceConfigFile, trace_config_file); 191 switches::kTraceConfigFile, trace_config_file);
192 192
193 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled()); 193 ASSERT_TRUE(TraceConfigFile::GetInstance()->IsEnabled());
194 EXPECT_STREQ( 194 EXPECT_STREQ(
195 kTraceConfig, 195 kTraceConfig,
196 TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str()); 196 TraceConfigFile::GetInstance()->GetTraceConfig().ToString().c_str());
197 EXPECT_EQ(0, TraceConfigFile::GetInstance()->GetStartupDuration()); 197 EXPECT_EQ(0, TraceConfigFile::GetInstance()->GetStartupDuration());
198 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")), 198 EXPECT_EQ(base::FilePath(FILE_PATH_LITERAL("chrometrace.log")),
199 TraceConfigFile::GetInstance()->GetResultFile()); 199 TraceConfigFile::GetInstance()->GetResultFile());
200 } 200 }
201 201
202 TEST(TraceConfigFileTest, ContentWithoutTraceConfig) { 202 TEST(TraceConfigFileTest, ContentWithoutTraceConfig) {
203 base::ShadowingAtExitManager sem; 203 base::ShadowingAtExitManager sem;
204 std::string content = GetTraceConfigFileContent( 204 std::string content =
205 "", "10", "trace_result_file.log"); 205 GetTraceConfigFileContent("", "10", "trace_result_file.log");
206 206
207 base::FilePath trace_config_file; 207 base::FilePath trace_config_file;
208 base::ScopedTempDir temp_dir; 208 base::ScopedTempDir temp_dir;
209 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 209 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
210 ASSERT_TRUE( 210 ASSERT_TRUE(
211 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 211 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
212 ASSERT_NE(-1, base::WriteFile( 212 ASSERT_NE(-1, base::WriteFile(trace_config_file, content.c_str(),
213 trace_config_file, content.c_str(), (int)content.length())); 213 (int)content.length()));
214 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 214 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
215 switches::kTraceConfigFile, trace_config_file); 215 switches::kTraceConfigFile, trace_config_file);
216 216
217 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled()); 217 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
218 } 218 }
219 219
220 TEST(TraceConfigFileTest, InvalidContent) { 220 TEST(TraceConfigFileTest, InvalidContent) {
221 base::ShadowingAtExitManager sem; 221 base::ShadowingAtExitManager sem;
222 std::string content = "invalid trace config file content"; 222 std::string content = "invalid trace config file content";
223 223
224 base::FilePath trace_config_file; 224 base::FilePath trace_config_file;
225 base::ScopedTempDir temp_dir; 225 base::ScopedTempDir temp_dir;
226 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 226 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
227 ASSERT_TRUE( 227 ASSERT_TRUE(
228 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 228 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
229 ASSERT_NE(-1, base::WriteFile( 229 ASSERT_NE(-1, base::WriteFile(trace_config_file, content.c_str(),
230 trace_config_file, content.c_str(), (int)content.length())); 230 (int)content.length()));
231 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 231 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
232 switches::kTraceConfigFile, trace_config_file); 232 switches::kTraceConfigFile, trace_config_file);
233 233
234 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled()); 234 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
235 } 235 }
236 236
237 TEST(TraceConfigFileTest, EmptyContent) { 237 TEST(TraceConfigFileTest, EmptyContent) {
238 base::ShadowingAtExitManager sem; 238 base::ShadowingAtExitManager sem;
239 base::FilePath trace_config_file; 239 base::FilePath trace_config_file;
240 base::ScopedTempDir temp_dir; 240 base::ScopedTempDir temp_dir;
241 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 241 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
242 ASSERT_TRUE( 242 ASSERT_TRUE(
243 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file)); 243 base::CreateTemporaryFileInDir(temp_dir.GetPath(), &trace_config_file));
244 base::CommandLine::ForCurrentProcess()->AppendSwitchPath( 244 base::CommandLine::ForCurrentProcess()->AppendSwitchPath(
245 switches::kTraceConfigFile, trace_config_file); 245 switches::kTraceConfigFile, trace_config_file);
246 246
247 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled()); 247 EXPECT_FALSE(TraceConfigFile::GetInstance()->IsEnabled());
248 } 248 }
249 249
250 } // namespace tracing 250 } // namespace tracing
OLDNEW
« no previous file with comments | « components/tracing/common/trace_config_file.cc ('k') | components/tracing/common/trace_startup.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698