OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |