OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/json/json_reader.h" | |
8 #include "base/macros.h" | 7 #include "base/macros.h" |
9 #include "base/trace_event/memory_dump_manager.h" | 8 #include "base/trace_event/memory_dump_manager.h" |
10 #include "base/trace_event/trace_config.h" | 9 #include "base/trace_event/trace_config.h" |
11 #include "base/trace_event/trace_config_memory_test_util.h" | 10 #include "base/trace_event/trace_config_memory_test_util.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
13 | 12 |
14 namespace base { | 13 namespace base { |
15 namespace trace_event { | 14 namespace trace_event { |
16 | 15 |
17 namespace { | 16 namespace { |
18 | 17 |
19 const char kDefaultTraceConfigString[] = | 18 const char kDefaultTraceConfigString[] = |
20 "{" | 19 "{" |
21 "\"enable_argument_filter\":false," | 20 "\"enable_argument_filter\":false," |
22 "\"enable_sampling\":false," | 21 "\"enable_sampling\":false," |
23 "\"enable_systrace\":false," | 22 "\"enable_systrace\":false," |
24 "\"excluded_categories\":[\"*Debug\",\"*Test\"]," | 23 "\"excluded_categories\":[\"*Debug\",\"*Test\"]," |
25 "\"record_mode\":\"record-until-full\"" | 24 "\"record_mode\":\"record-until-full\"" |
26 "}"; | 25 "}"; |
27 | |
28 const char kCustomTraceConfigString[] = | |
29 "{" | |
30 "\"enable_argument_filter\":true," | |
31 "\"enable_sampling\":true," | |
32 "\"enable_systrace\":true," | |
33 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | |
34 "\"included_categories\":[\"included\"," | |
35 "\"inc_pattern*\"," | |
36 "\"disabled-by-default-cc\"," | |
37 "\"disabled-by-default-memory-infra\"]," | |
38 "\"memory_dump_config\":{" | |
39 "\"triggers\":[" | |
40 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," | |
41 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" | |
42 "]" | |
43 "}," | |
44 "\"record_mode\":\"record-continuously\"," | |
45 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | |
46 "}"; | |
47 | |
48 } // namespace | 26 } // namespace |
49 | 27 |
50 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { | 28 TEST(TraceConfigTest, TraceConfigFromValidLegacyFormat) { |
51 // From trace options strings | 29 // From trace options strings |
52 TraceConfig config("", "record-until-full"); | 30 TraceConfig config("", "record-until-full"); |
53 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); | 31 EXPECT_EQ(RECORD_UNTIL_FULL, config.GetTraceRecordMode()); |
54 EXPECT_FALSE(config.IsSamplingEnabled()); | 32 EXPECT_FALSE(config.IsSamplingEnabled()); |
55 EXPECT_FALSE(config.IsSystraceEnabled()); | 33 EXPECT_FALSE(config.IsSystraceEnabled()); |
56 EXPECT_FALSE(config.IsArgumentFilterEnabled()); | 34 EXPECT_FALSE(config.IsArgumentFilterEnabled()); |
57 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); | 35 EXPECT_STREQ("record-until-full", config.ToTraceOptionsString().c_str()); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
274 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryTest")); | 252 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryTest")); |
275 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug")); | 253 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug")); |
276 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); | 254 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); |
277 | 255 |
278 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,CategoryDebug")); | 256 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
279 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryDebug,Category1")); | 257 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
280 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryTest,not-excluded-category")); | 258 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryTest,not-excluded-category")); |
281 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug,CategoryTest")); | 259 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug,CategoryTest")); |
282 } | 260 } |
283 | 261 |
284 TEST(TraceConfigTest, TraceConfigFromDict) { | |
285 // Passing in empty dictionary will not result in default trace config. | |
286 DictionaryValue dict; | |
287 TraceConfig tc(dict); | |
288 EXPECT_STRNE(kDefaultTraceConfigString, tc.ToString().c_str()); | |
289 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | |
290 EXPECT_FALSE(tc.IsSamplingEnabled()); | |
291 EXPECT_FALSE(tc.IsSystraceEnabled()); | |
292 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); | |
293 EXPECT_STREQ("", tc.ToCategoryFilterString().c_str()); | |
294 | |
295 scoped_ptr<Value> default_value(JSONReader::Read(kDefaultTraceConfigString)); | |
296 DCHECK(default_value); | |
297 const DictionaryValue* default_dict = nullptr; | |
298 bool is_dict = default_value->GetAsDictionary(&default_dict); | |
299 DCHECK(is_dict); | |
300 TraceConfig default_tc(*default_dict); | |
301 EXPECT_STREQ(kDefaultTraceConfigString, default_tc.ToString().c_str()); | |
302 EXPECT_EQ(RECORD_UNTIL_FULL, default_tc.GetTraceRecordMode()); | |
303 EXPECT_FALSE(default_tc.IsSamplingEnabled()); | |
304 EXPECT_FALSE(default_tc.IsSystraceEnabled()); | |
305 EXPECT_FALSE(default_tc.IsArgumentFilterEnabled()); | |
306 EXPECT_STREQ("-*Debug,-*Test", default_tc.ToCategoryFilterString().c_str()); | |
307 | |
308 scoped_ptr<Value> custom_value(JSONReader::Read(kCustomTraceConfigString)); | |
309 DCHECK(custom_value); | |
310 const DictionaryValue* custom_dict = nullptr; | |
311 DCHECK(custom_value->GetAsDictionary(&custom_dict)); | |
312 TraceConfig custom_tc(*custom_dict); | |
313 EXPECT_STREQ(kCustomTraceConfigString, custom_tc.ToString().c_str()); | |
314 EXPECT_EQ(RECORD_CONTINUOUSLY, custom_tc.GetTraceRecordMode()); | |
315 EXPECT_TRUE(custom_tc.IsSamplingEnabled()); | |
316 EXPECT_TRUE(custom_tc.IsSystraceEnabled()); | |
317 EXPECT_TRUE(custom_tc.IsArgumentFilterEnabled()); | |
318 EXPECT_STREQ("included,inc_pattern*," | |
319 "disabled-by-default-cc,disabled-by-default-memory-infra," | |
320 "-excluded,-exc_pattern*," | |
321 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | |
322 custom_tc.ToCategoryFilterString().c_str()); | |
323 } | |
324 | |
325 TEST(TraceConfigTest, TraceConfigFromValidString) { | 262 TEST(TraceConfigTest, TraceConfigFromValidString) { |
326 // Using some non-empty config string. | 263 // Using some non-empty config string. |
327 const char config_string[] = | 264 const char config_string[] = |
328 "{" | 265 "{" |
329 "\"enable_argument_filter\":true," | 266 "\"enable_argument_filter\":true," |
330 "\"enable_sampling\":true," | 267 "\"enable_sampling\":true," |
331 "\"enable_systrace\":true," | 268 "\"enable_systrace\":true," |
332 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 269 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
333 "\"included_categories\":[\"included\"," | 270 "\"included_categories\":[\"included\"," |
334 "\"inc_pattern*\"," | 271 "\"inc_pattern*\"," |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
588 | 525 |
589 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { | 526 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { |
590 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); | 527 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); |
591 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 528 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
592 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); | 529 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); |
593 EXPECT_EQ(2u, tc.memory_dump_config_.size()); | 530 EXPECT_EQ(2u, tc.memory_dump_config_.size()); |
594 } | 531 } |
595 | 532 |
596 } // namespace trace_event | 533 } // namespace trace_event |
597 } // namespace base | 534 } // namespace base |
OLD | NEW |