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

Side by Side Diff: base/trace_event/trace_config_unittest.cc

Issue 1923533004: Tracing pre-filtering (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review fixes Created 4 years, 4 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
« no previous file with comments | « base/trace_event/trace_config.cc ('k') | base/trace_event/trace_event.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "\"record_mode\":\"record-until-full\"" 25 "\"record_mode\":\"record-until-full\""
25 "}"; 26 "}";
26 27
27 const char kCustomTraceConfigString[] = 28 const char kCustomTraceConfigString[] =
28 "{" 29 "{"
29 "\"enable_argument_filter\":true," 30 "\"enable_argument_filter\":true,"
30 "\"enable_sampling\":true," 31 "\"enable_sampling\":true,"
31 "\"enable_systrace\":true," 32 "\"enable_systrace\":true,"
33 "\"event_filters\":["
34 "{"
35 "\"excluded_categories\":[\"unfiltered_cat\"],"
36 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]},"
37 "\"filter_predicate\":\"event_whitelist_predicate\","
38 "\"included_categories\":[\"*\"]"
39 "}"
40 "],"
32 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," 41 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"],"
33 "\"included_categories\":[\"included\"," 42 "\"included_categories\":[\"included\","
34 "\"inc_pattern*\"," 43 "\"inc_pattern*\","
35 "\"disabled-by-default-cc\"," 44 "\"disabled-by-default-cc\","
36 "\"disabled-by-default-memory-infra\"]," 45 "\"disabled-by-default-memory-infra\"],"
37 "\"memory_dump_config\":{" 46 "\"memory_dump_config\":{"
38 "\"allowed_dump_modes\":[\"background\",\"light\",\"detailed\"]," 47 "\"allowed_dump_modes\":[\"background\",\"light\",\"detailed\"],"
39 "\"heap_profiler_options\":{" 48 "\"heap_profiler_options\":{"
40 "\"breakdown_threshold_bytes\":10240" 49 "\"breakdown_threshold_bytes\":10240"
41 "}," 50 "},"
42 "\"triggers\":[" 51 "\"triggers\":["
43 "{\"mode\":\"light\",\"periodic_interval_ms\":50}," 52 "{\"mode\":\"light\",\"periodic_interval_ms\":50},"
44 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}" 53 "{\"mode\":\"detailed\",\"periodic_interval_ms\":1000}"
45 "]" 54 "]"
46 "}," 55 "},"
47 "\"record_mode\":\"record-continuously\"," 56 "\"record_mode\":\"record-continuously\","
48 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" 57 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]"
49 "}"; 58 "}";
50 59
51 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) { 60 void CheckDefaultTraceConfigBehavior(const TraceConfig& tc) {
52 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode()); 61 EXPECT_EQ(RECORD_UNTIL_FULL, tc.GetTraceRecordMode());
53 EXPECT_FALSE(tc.IsSamplingEnabled()); 62 EXPECT_FALSE(tc.IsSamplingEnabled());
54 EXPECT_FALSE(tc.IsSystraceEnabled()); 63 EXPECT_FALSE(tc.IsSystraceEnabled());
55 EXPECT_FALSE(tc.IsArgumentFilterEnabled()); 64 EXPECT_FALSE(tc.IsArgumentFilterEnabled());
56 65
57 // Default trace config enables every category filter except the 66 // Default trace config enables every category filter except the
58 // disabled-by-default-* ones. 67 // disabled-by-default-* ones.
59 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1")); 68 EXPECT_TRUE(tc.IsCategoryGroupEnabled("Category1"));
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 332
324 TEST(TraceConfigTest, DisabledByDefaultCategoryFilterString) { 333 TEST(TraceConfigTest, DisabledByDefaultCategoryFilterString) {
325 TraceConfig tc("foo,disabled-by-default-foo", ""); 334 TraceConfig tc("foo,disabled-by-default-foo", "");
326 EXPECT_STREQ("foo,disabled-by-default-foo", 335 EXPECT_STREQ("foo,disabled-by-default-foo",
327 tc.ToCategoryFilterString().c_str()); 336 tc.ToCategoryFilterString().c_str());
328 EXPECT_TRUE(tc.IsCategoryGroupEnabled("foo")); 337 EXPECT_TRUE(tc.IsCategoryGroupEnabled("foo"));
329 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-foo")); 338 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-foo"));
330 EXPECT_FALSE(tc.IsCategoryGroupEnabled("bar")); 339 EXPECT_FALSE(tc.IsCategoryGroupEnabled("bar"));
331 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); 340 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar"));
332 341
342 EXPECT_TRUE(tc.event_filters().empty());
333 // Enabling only the disabled-by-default-* category means the default ones 343 // Enabling only the disabled-by-default-* category means the default ones
334 // are also enabled. 344 // are also enabled.
335 tc = TraceConfig("disabled-by-default-foo", ""); 345 tc = TraceConfig("disabled-by-default-foo", "");
336 EXPECT_STREQ("disabled-by-default-foo", tc.ToCategoryFilterString().c_str()); 346 EXPECT_STREQ("disabled-by-default-foo", tc.ToCategoryFilterString().c_str());
337 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-foo")); 347 EXPECT_TRUE(tc.IsCategoryGroupEnabled("disabled-by-default-foo"));
338 EXPECT_TRUE(tc.IsCategoryGroupEnabled("foo")); 348 EXPECT_TRUE(tc.IsCategoryGroupEnabled("foo"));
339 EXPECT_TRUE(tc.IsCategoryGroupEnabled("bar")); 349 EXPECT_TRUE(tc.IsCategoryGroupEnabled("bar"));
340 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar")); 350 EXPECT_FALSE(tc.IsCategoryGroupEnabled("disabled-by-default-bar"));
341 } 351 }
342 352
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 EXPECT_STREQ("included,inc_pattern*," 390 EXPECT_STREQ("included,inc_pattern*,"
381 "disabled-by-default-cc,disabled-by-default-memory-infra," 391 "disabled-by-default-cc,disabled-by-default-memory-infra,"
382 "-excluded,-exc_pattern*," 392 "-excluded,-exc_pattern*,"
383 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)", 393 "DELAY(test.Delay1;16),DELAY(test.Delay2;32)",
384 custom_tc.ToCategoryFilterString().c_str()); 394 custom_tc.ToCategoryFilterString().c_str());
385 } 395 }
386 396
387 TEST(TraceConfigTest, TraceConfigFromValidString) { 397 TEST(TraceConfigTest, TraceConfigFromValidString) {
388 // Using some non-empty config string. 398 // Using some non-empty config string.
389 const char config_string[] = 399 const char config_string[] =
390 "{" 400 "{"
391 "\"enable_argument_filter\":true," 401 "\"enable_argument_filter\":true,"
392 "\"enable_sampling\":true," 402 "\"enable_sampling\":true,"
393 "\"enable_systrace\":true," 403 "\"enable_systrace\":true,"
404 "\"event_filters\":["
405 "{"
406 "\"excluded_categories\":[\"unfiltered_cat\"],"
407 "\"filter_args\":{\"event_name_whitelist\":[\"a snake\",\"a dog\"]},"
408 "\"filter_predicate\":\"event_whitelist_predicate\","
409 "\"included_categories\":[\"*\"]"
410 "}"
411 "],"
394 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"]," 412 "\"excluded_categories\":[\"excluded\",\"exc_pattern*\"],"
395 "\"included_categories\":[\"included\"," 413 "\"included_categories\":[\"included\","
396 "\"inc_pattern*\"," 414 "\"inc_pattern*\","
397 "\"disabled-by-default-cc\"]," 415 "\"disabled-by-default-cc\"],"
398 "\"record_mode\":\"record-continuously\"," 416 "\"record_mode\":\"record-continuously\","
399 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]" 417 "\"synthetic_delays\":[\"test.Delay1;16\",\"test.Delay2;32\"]"
400 "}"; 418 "}";
401 TraceConfig tc(config_string); 419 TraceConfig tc(config_string);
402 420
403 EXPECT_STREQ(config_string, tc.ToString().c_str()); 421 EXPECT_STREQ(config_string, tc.ToString().c_str());
404 EXPECT_EQ(RECORD_CONTINUOUSLY, tc.GetTraceRecordMode()); 422 EXPECT_EQ(RECORD_CONTINUOUSLY, tc.GetTraceRecordMode());
405 EXPECT_TRUE(tc.IsSamplingEnabled()); 423 EXPECT_TRUE(tc.IsSamplingEnabled());
406 EXPECT_TRUE(tc.IsSystraceEnabled()); 424 EXPECT_TRUE(tc.IsSystraceEnabled());
407 EXPECT_TRUE(tc.IsArgumentFilterEnabled()); 425 EXPECT_TRUE(tc.IsArgumentFilterEnabled());
408 EXPECT_STREQ("included,inc_pattern*,disabled-by-default-cc,-excluded," 426 EXPECT_STREQ("included,inc_pattern*,disabled-by-default-cc,-excluded,"
409 "-exc_pattern*,DELAY(test.Delay1;16),DELAY(test.Delay2;32)", 427 "-exc_pattern*,DELAY(test.Delay1;16),DELAY(test.Delay2;32)",
410 tc.ToCategoryFilterString().c_str()); 428 tc.ToCategoryFilterString().c_str());
(...skipping 16 matching lines...) Expand all
427 445
428 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,excluded")); 446 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,excluded"));
429 EXPECT_FALSE(tc.IsCategoryGroupEnabled("excluded,exc_pattern_category")); 447 EXPECT_FALSE(tc.IsCategoryGroupEnabled("excluded,exc_pattern_category"));
430 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,DELAY(test.Delay1;16)")); 448 EXPECT_TRUE(tc.IsCategoryGroupEnabled("included,DELAY(test.Delay1;16)"));
431 EXPECT_FALSE(tc.IsCategoryGroupEnabled("DELAY(test.Delay1;16)")); 449 EXPECT_FALSE(tc.IsCategoryGroupEnabled("DELAY(test.Delay1;16)"));
432 450
433 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size()); 451 EXPECT_EQ(2u, tc.GetSyntheticDelayValues().size());
434 EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str()); 452 EXPECT_STREQ("test.Delay1;16", tc.GetSyntheticDelayValues()[0].c_str());
435 EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str()); 453 EXPECT_STREQ("test.Delay2;32", tc.GetSyntheticDelayValues()[1].c_str());
436 454
455 EXPECT_EQ(tc.event_filters().size(), 1u);
456 const TraceConfig::EventFilterConfig& event_filter = tc.event_filters()[0];
457 EXPECT_STREQ("event_whitelist_predicate",
458 event_filter.predicate_name().c_str());
459 EXPECT_EQ(1u, event_filter.included_categories().size());
460 EXPECT_STREQ("*", event_filter.included_categories()[0].c_str());
461 EXPECT_EQ(1u, event_filter.excluded_categories().size());
462 EXPECT_STREQ("unfiltered_cat", event_filter.excluded_categories()[0].c_str());
463 EXPECT_TRUE(event_filter.filter_args());
464
465 std::string json_out;
466 base::JSONWriter::Write(*event_filter.filter_args(), &json_out);
467 EXPECT_STREQ(json_out.c_str(),
468 "{\"event_name_whitelist\":[\"a snake\",\"a dog\"]}");
469
437 const char config_string_2[] = "{\"included_categories\":[\"*\"]}"; 470 const char config_string_2[] = "{\"included_categories\":[\"*\"]}";
438 TraceConfig tc2(config_string_2); 471 TraceConfig tc2(config_string_2);
439 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern")); 472 EXPECT_TRUE(tc2.IsCategoryEnabled("non-disabled-by-default-pattern"));
440 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern")); 473 EXPECT_FALSE(tc2.IsCategoryEnabled("disabled-by-default-pattern"));
441 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern")); 474 EXPECT_TRUE(tc2.IsCategoryGroupEnabled("non-disabled-by-default-pattern"));
442 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern")); 475 EXPECT_FALSE(tc2.IsCategoryGroupEnabled("disabled-by-default-pattern"));
443 476
444 // Clear 477 // Clear
445 tc.Clear(); 478 tc.Clear();
446 EXPECT_STREQ(tc.ToString().c_str(), 479 EXPECT_STREQ(tc.ToString().c_str(),
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
676 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config")); 709 EXPECT_NE(std::string::npos, tc.ToString().find("memory_dump_config"));
677 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size()); 710 EXPECT_EQ(2u, tc.memory_dump_config_.triggers.size());
678 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler 711 EXPECT_EQ(TraceConfig::MemoryDumpConfig::HeapProfiler
679 ::kDefaultBreakdownThresholdBytes, 712 ::kDefaultBreakdownThresholdBytes,
680 tc.memory_dump_config_.heap_profiler_options 713 tc.memory_dump_config_.heap_profiler_options
681 .breakdown_threshold_bytes); 714 .breakdown_threshold_bytes);
682 } 715 }
683 716
684 } // namespace trace_event 717 } // namespace trace_event
685 } // namespace base 718 } // namespace base
OLDNEW
« no previous file with comments | « base/trace_event/trace_config.cc ('k') | base/trace_event/trace_event.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698