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" | 7 #include "base/json/json_reader.h" |
8 #include "base/json/json_writer.h" | |
8 #include "base/macros.h" | 9 #include "base/macros.h" |
9 #include "base/trace_event/memory_dump_manager.h" | 10 #include "base/trace_event/memory_dump_manager.h" |
10 #include "base/trace_event/trace_config.h" | 11 #include "base/trace_event/trace_config.h" |
11 #include "base/trace_event/trace_config_memory_test_util.h" | 12 #include "base/trace_event/trace_config_memory_test_util.h" |
12 #include "testing/gtest/include/gtest/gtest.h" | 13 #include "testing/gtest/include/gtest/gtest.h" |
13 | 14 |
14 namespace base { | 15 namespace base { |
15 namespace trace_event { | 16 namespace trace_event { |
16 | 17 |
17 namespace { | 18 namespace { |
18 | 19 |
19 const char kDefaultTraceConfigString[] = | 20 const char kDefaultTraceConfigString[] = |
20 "{" | 21 "{" |
21 "\"enable_argument_filter\":false," | 22 "\"enable_argument_filter\":false," |
22 "\"enable_sampling\":false," | 23 "\"enable_sampling\":false," |
23 "\"enable_systrace\":false," | 24 "\"enable_systrace\":false," |
24 "\"excluded_categories\":[\"*Debug\",\"*Test\"]," | 25 "\"excluded_categories\":[\"*Debug\",\"*Test\"]," |
25 "\"record_mode\":\"record-until-full\"" | 26 "\"record_mode\":\"record-until-full\"" |
26 "}"; | 27 "}"; |
27 | 28 |
28 const char kCustomTraceConfigString[] = | 29 const char kCustomTraceConfigString[] = |
29 "{" | 30 "{" |
31 "\"category_event_filters\":[" | |
32 "{" | |
33 "\"args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | |
34 "\"excluded_categories\":[\"unfiltered_cat\"]," | |
35 "\"included_categories\":[\"*\"]," | |
36 "\"predicate\":\"event_whitelist_predicate\"" | |
Primiano Tucci (use gerrit)
2016/05/11 16:11:57
maybe if these were called
predicate -> filter_pr
oystein (OOO til 10th of July)
2016/05/20 20:03:43
Yeah, I like that better; done. The ordering I can
| |
37 "}" | |
38 "]," | |
30 "\"enable_argument_filter\":true," | 39 "\"enable_argument_filter\":true," |
31 "\"enable_sampling\":true," | 40 "\"enable_sampling\":true," |
32 "\"enable_systrace\":true," | 41 "\"enable_systrace\":true," |
33 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 42 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
34 "\"included_categories\":[\"included\"," | 43 "\"included_categories\":[\"included\"," |
35 "\"inc_pattern*\"," | 44 "\"inc_pattern*\"," |
36 "\"disabled-by-default-cc\"," | 45 "\"disabled-by-default-cc\"," |
37 "\"disabled-by-default-memory-infra\"]," | 46 "\"disabled-by-default-memory-infra\"]," |
38 "\"memory_dump_config\":{" | 47 "\"memory_dump_config\":{" |
39 "\"triggers\":[" | 48 "\"triggers\":[" |
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
272 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); | 281 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); |
273 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); | 282 EXPECT_TRUE(tc.IsCategoryGroupEnabled("not-excluded-category")); |
274 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryTest")); | 283 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryTest")); |
275 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug")); | 284 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug")); |
276 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); | 285 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-cc")); |
277 | 286 |
278 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,CategoryDebug")); | 287 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1,CategoryDebug")); |
279 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryDebug,Category1")); | 288 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryDebug,Category1")); |
280 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryTest,not-excluded-category")); | 289 EXPECT_TRUE(tc.IsCategoryGroupEnabled("CategoryTest,not-excluded-category")); |
281 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug,CategoryTest")); | 290 EXPECT_FALSE(tc.IsCategoryGroupEnabled("CategoryDebug,CategoryTest")); |
291 | |
292 EXPECT_TRUE(tc.category_event_filters().empty()); | |
282 } | 293 } |
283 | 294 |
284 TEST(TraceConfigTest, TraceConfigFromDict) { | 295 TEST(TraceConfigTest, TraceConfigFromDict) { |
285 // Passing in empty dictionary will not result in default trace config. | 296 // Passing in empty dictionary will not result in default trace config. |
286 DictionaryValue dict; | 297 DictionaryValue dict; |
287 TraceConfig tc(dict); | 298 TraceConfig tc(dict); |
288 EXPECT_STRNE(kDefaultTraceConfigString, tc.ToString().c_str()); | 299 EXPECT_STRNE(kDefaultTraceConfigString, tc.ToString().c_str()); |
289 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); | 300 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); |
290 EXPECT_FALSE(tc.IsSamplingEnabled()); | 301 EXPECT_FALSE(tc.IsSamplingEnabled()); |
291 EXPECT_FALSE(tc.IsSystraceEnabled()); | 302 EXPECT_FALSE(tc.IsSystraceEnabled()); |
(...skipping 30 matching lines...) Expand all Loading... | |
322 "disabled-by-default-cc,disabled-by-default-memory-infra," | 333 "disabled-by-default-cc,disabled-by-default-memory-infra," |
323 "-excluded,-exc_pattern*," | 334 "-excluded,-exc_pattern*," |
324 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", | 335 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", |
325 custom_tc.ToCategoryFilterString().c_str()); | 336 custom_tc.ToCategoryFilterString().c_str()); |
326 } | 337 } |
327 | 338 |
328 TEST(TraceConfigTest, TraceConfigFromValidString) { | 339 TEST(TraceConfigTest, TraceConfigFromValidString) { |
329 // Using some non-empty config string. | 340 // Using some non-empty config string. |
330 const char config_string[] = | 341 const char config_string[] = |
331 "{" | 342 "{" |
343 "\"category_event_filters\":[" | |
344 "{" | |
345 "\"args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}," | |
346 "\"excluded_categories\":[\"unfiltered_cat\"]," | |
347 "\"included_categories\":[\"*\"]," | |
348 "\"predicate\":\"event_whitelist_predicate\"" | |
349 "}" | |
350 "]," | |
332 "\"enable_argument_filter\":true," | 351 "\"enable_argument_filter\":true," |
333 "\"enable_sampling\":true," | 352 "\"enable_sampling\":true," |
334 "\"enable_systrace\":true," | 353 "\"enable_systrace\":true," |
335 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," | 354 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," |
336 "\"included_categories\":[\"included\"," | 355 "\"included_categories\":[\"included\"," |
337 "\"inc_pattern*\"," | 356 "\"inc_pattern*\"," |
338 "\"disabled-by-default-cc\"]," | 357 "\"disabled-by-default-cc\"]," |
339 "\"record_mode\":\"record-continuously\"," | 358 "\"record_mode\":\"record-continuously\"," |
340 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" | 359 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" |
341 "}"; | 360 "}"; |
(...skipping 26 matching lines...) Expand all Loading... | |
368 | 387 |
369 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,excluded")); | 388 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,excluded")); |
370 EXPECT_FALSE(tc.IsCategoryGroupEnabled("excluded,exc_pattern_category")); | 389 EXPECT_FALSE(tc.IsCategoryGroupEnabled("excluded,exc_pattern_category")); |
371 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,DELAY(test.Delay1;16)")); | 390 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,DELAY(test.Delay1;16)")); |
372 EXPECT_FALSE(tc.IsCategoryGroupEnabled("DELAY(test.Delay1;16)")); | 391 EXPECT_FALSE(tc.IsCategoryGroupEnabled("DELAY(test.Delay1;16)")); |
373 | 392 |
374 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); | 393 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); |
375 EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str()); | 394 EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str()); |
376 EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str()); | 395 EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str()); |
377 | 396 |
397 EXPECT_EQ(tc.category_event_filters().size(), 1u); | |
398 const TraceConfig::CategoryEventFilterConfig& category_filter = | |
399 tc.category_event_filters()[0]; | |
400 EXPECT_STREQ(category_filter.predicate_name().c_str(), | |
401 "event_whitelist_predicate"); | |
402 EXPECT_EQ(category_filter.included_categories().size(), 1u); | |
403 EXPECT_STREQ(category_filter.included_categories()[0].c_str(), "*"); | |
404 EXPECT_EQ(category_filter.excluded_categories().size(), 1u); | |
405 EXPECT_STREQ(category_filter.excluded_categories()[0].c_str(), | |
406 "unfiltered_cat"); | |
407 EXPECT_TRUE(category_filter.args()); | |
408 | |
409 std::string json_out; | |
410 base::JSONWriter::Write(*category_filter.args(), &json_out); | |
411 EXPECT_STREQ(json_out.c_str(), | |
412 "{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}"); | |
413 | |
378 const char config_string_2[] = "{\"included_categories\":[\"*\"]}"; | 414 const char config_string_2[] = "{\"included_categories\":[\"*\"]}"; |
379 TraceConfig tc2(config_string_2); | 415 TraceConfig tc2(config_string_2); |
380 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); | 416 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); |
381 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); | 417 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); |
382 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); | 418 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); |
383 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); | 419 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); |
384 | 420 |
385 // Clear | 421 // Clear |
386 tc.Clear(); | 422 tc.Clear(); |
387 EXPECT_STREQ(tc.ToString().c_str(), | 423 EXPECT_STREQ(tc.ToString().c_str(), |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
591 | 627 |
592 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { | 628 TEST(TraceConfigTest, LegacyStringToMemoryDumpConfig) { |
593 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); | 629 TraceConfig tc(MemoryDumpManager::kTraceCategory, ""); |
594 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); | 630 EXPECT_TRUE(tc.IsCategoryGroupEnabled(MemoryDumpManager::kTraceCategory)); |
595 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); | 631 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); |
596 EXPECT_EQ(2u, tc.memory_dump_config_.size()); | 632 EXPECT_EQ(2u, tc.memory_dump_config_.size()); |
597 } | 633 } |
598 | 634 |
599 } // namespace trace_event | 635 } // namespace trace_event |
600 } // namespace base | 636 } // namespace base |
OLD | NEW |