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

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: Created 4 years, 7 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 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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698