| Index: base/debug/trace_event_unittest.cc
|
| diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc
|
| index c68221642e6c5b4391482e66d32727c35431ecab..82c8dc00e3bd60aed469bb67f189c528c2160ae0 100644
|
| --- a/base/debug/trace_event_unittest.cc
|
| +++ b/base/debug/trace_event_unittest.cc
|
| @@ -73,7 +73,7 @@ class TraceEventTestFixture : public testing::Test {
|
|
|
| void BeginTrace() {
|
| event_watch_notification_ = 0;
|
| - TraceLog::GetInstance()->SetEnabled(std::string("*"),
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| TraceLog::RECORD_UNTIL_FULL);
|
| }
|
|
|
| @@ -773,7 +773,8 @@ void HighResSleepForTraceTest(base::TimeDelta elapsed) {
|
| // Simple Test for emitting data and validating it was received.
|
| TEST_F(TraceEventTestFixture, DataCaptured) {
|
| ManualTestSetUp();
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
|
|
| TraceWithAllMacroVariants(NULL);
|
|
|
| @@ -797,18 +798,20 @@ TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
|
|
|
| EXPECT_CALL(observer, OnTraceLogWillEnable())
|
| .Times(1);
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
| testing::Mock::VerifyAndClear(&observer);
|
|
|
| // Cleanup.
|
| TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
|
| - TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetDisabled();
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
|
| ManualTestSetUp();
|
|
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
|
|
| testing::StrictMock<MockEnabledStateChangedObserver> observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
| @@ -817,20 +820,22 @@ TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
|
| .Times(0);
|
| EXPECT_CALL(observer, OnTraceLogWillDisable())
|
| .Times(0);
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
| testing::Mock::VerifyAndClear(&observer);
|
|
|
| // Cleanup.
|
| TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
|
| - TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| - TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetDisabled();
|
| + TraceLog::GetInstance()->SetDisabled();
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) {
|
| ManualTestSetUp();
|
|
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + CategoryFilter cf_inc_all("*");
|
| + TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
|
|
|
| testing::StrictMock<MockEnabledStateChangedObserver> observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
| @@ -839,25 +844,26 @@ TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) {
|
| .Times(0);
|
| EXPECT_CALL(observer, OnTraceLogWillDisable())
|
| .Times(0);
|
| - TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetDisabled();
|
| testing::Mock::VerifyAndClear(&observer);
|
|
|
| // Cleanup.
|
| TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
|
| - TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetDisabled();
|
| }
|
|
|
| TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
|
| ManualTestSetUp();
|
|
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
|
|
| MockEnabledStateChangedObserver observer;
|
| TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
|
|
|
| EXPECT_CALL(observer, OnTraceLogWillDisable())
|
| .Times(1);
|
| - TraceLog::GetInstance()->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetDisabled();
|
| testing::Mock::VerifyAndClear(&observer);
|
|
|
| // Cleanup.
|
| @@ -875,15 +881,26 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| BeginTrace();
|
| TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + // Category groups containing more than one category.
|
| + TRACE_EVENT_INSTANT0("c5,c6", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("c7,c8", "name", TRACE_EVENT_SCOPE_THREAD);
|
| +
|
| EndTraceAndFlush();
|
| - std::vector<std::string> cats;
|
| - TraceLog::GetInstance()->GetKnownCategories(&cats);
|
| - EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end());
|
| - EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end());
|
| - EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end());
|
| - EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end());
|
| - // Make sure metadata isn't returned.
|
| - EXPECT_TRUE(std::find(cats.begin(), cats.end(), "__metadata") == cats.end());
|
| + std::vector<std::string> cat_groups;
|
| + TraceLog::GetInstance()->GetKnownCategoryGroups(&cat_groups);
|
| + EXPECT_TRUE(std::find(cat_groups.begin(),
|
| + cat_groups.end(), "c1") != cat_groups.end());
|
| + EXPECT_TRUE(std::find(cat_groups.begin(),
|
| + cat_groups.end(), "c2") != cat_groups.end());
|
| + EXPECT_TRUE(std::find(cat_groups.begin(),
|
| + cat_groups.end(), "c3") != cat_groups.end());
|
| + EXPECT_TRUE(std::find(cat_groups.begin(),
|
| + cat_groups.end(), "c4") != cat_groups.end());
|
| + EXPECT_TRUE(std::find(cat_groups.begin(),
|
| + cat_groups.end(), "c5,c6") != cat_groups.end());
|
| + EXPECT_TRUE(std::find(cat_groups.begin(),
|
| + cat_groups.end(), "c7,c8") != cat_groups.end());
|
| +
|
| const std::vector<std::string> empty_categories;
|
| std::vector<std::string> included_categories;
|
| std::vector<std::string> excluded_categories;
|
| @@ -893,8 +910,7 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| // Include nonexistent category -> no events
|
| Clear();
|
| included_categories.clear();
|
| - included_categories.push_back("not_found823564786");
|
| - TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories,
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"),
|
| TraceLog::RECORD_UNTIL_FULL);
|
| TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| @@ -904,8 +920,7 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| // Include existent category -> only events of that category
|
| Clear();
|
| included_categories.clear();
|
| - included_categories.push_back("inc");
|
| - TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories,
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"),
|
| TraceLog::RECORD_UNTIL_FULL);
|
| TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| @@ -916,64 +931,73 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| // Include existent wildcard -> all categories matching wildcard
|
| Clear();
|
| included_categories.clear();
|
| - included_categories.push_back("inc_wildcard_*");
|
| - included_categories.push_back("inc_wildchar_?_end");
|
| - TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories,
|
| - TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
| TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0(
|
| + "non_included_category,inc_wildcard_category", "included",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc"));
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_"));
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end"));
|
| EXPECT_FALSE(FindMatchingValue("name", "not_inc"));
|
| + EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category"));
|
| + EXPECT_TRUE(FindMatchingValue("cat",
|
| + "non_included_category,inc_wildcard_category"));
|
|
|
| included_categories.clear();
|
|
|
| // Exclude nonexistent category -> all events
|
| Clear();
|
| - excluded_categories.clear();
|
| - excluded_categories.push_back("not_found823564786");
|
| - TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories,
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"),
|
| TraceLog::RECORD_UNTIL_FULL);
|
| TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
|
| EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
|
| + EXPECT_TRUE(FindMatchingValue("cat", "category1,category2"));
|
|
|
| // Exclude existent category -> only events of other categories
|
| Clear();
|
| - excluded_categories.clear();
|
| - excluded_categories.push_back("inc");
|
| - TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories,
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"),
|
| TraceLog::RECORD_UNTIL_FULL);
|
| TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc2"));
|
| EXPECT_FALSE(FindMatchingValue("cat", "inc"));
|
| + EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc"));
|
| + EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2"));
|
|
|
| // Exclude existent wildcard -> all categories not matching wildcard
|
| Clear();
|
| - excluded_categories.clear();
|
| - excluded_categories.push_back("inc_wildcard_*");
|
| - excluded_categories.push_back("inc_wildchar_?_end");
|
| - TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories,
|
| - TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", TRACE_EVENT_SCOPE_THREAD);
|
| - TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", TRACE_EVENT_SCOPE_THREAD);
|
| + TraceLog::GetInstance()->SetEnabled(
|
| + CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
| + TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included",
|
| - TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| @@ -1508,17 +1532,18 @@ TEST_F(TraceEventTestFixture, TraceEnableDisable) {
|
| ManualTestSetUp();
|
|
|
| TraceLog* trace_log = TraceLog::GetInstance();
|
| - trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL);
|
| + CategoryFilter cf_inc_all("*");
|
| + trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| trace_log->SetDisabled();
|
| EXPECT_FALSE(trace_log->IsEnabled());
|
|
|
| - trace_log->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| const std::vector<std::string> empty;
|
| - trace_log->SetEnabled(empty, empty, TraceLog::RECORD_UNTIL_FULL);
|
| + trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL);
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| - trace_log->SetEnabled(false, TraceLog::RECORD_UNTIL_FULL);
|
| + trace_log->SetDisabled();
|
| EXPECT_TRUE(trace_log->IsEnabled());
|
| trace_log->SetDisabled();
|
| EXPECT_FALSE(trace_log->IsEnabled());
|
| @@ -1528,29 +1553,30 @@ TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) {
|
| ManualTestSetUp();
|
|
|
| TraceLog* trace_log = TraceLog::GetInstance();
|
| - trace_log->SetEnabled(std::string("foo,bar"), TraceLog::RECORD_UNTIL_FULL);
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo"));
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("bar"));
|
| - EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz"));
|
| - trace_log->SetEnabled(std::string("foo2"), TraceLog::RECORD_UNTIL_FULL);
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo2"));
|
| - EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz"));
|
| - trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL);
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo"));
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz"));
|
| + trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL);
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
|
| + EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| + trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL);
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2"));
|
| + EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| + trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL);
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
| - EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo"));
|
| - EXPECT_FALSE(*trace_log->GetCategoryEnabled("baz"));
|
| -
|
| - trace_log->SetEnabled(std::string("-foo,-bar"), TraceLog::RECORD_UNTIL_FULL);
|
| - EXPECT_FALSE(*trace_log->GetCategoryEnabled("foo"));
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz"));
|
| - trace_log->SetEnabled(std::string("moo"), TraceLog::RECORD_UNTIL_FULL);
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz"));
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo"));
|
| - EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo"));
|
| + EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| + EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| +
|
| + trace_log->SetEnabled(CategoryFilter("-foo,-bar"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
| + EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| + trace_log->SetEnabled(CategoryFilter("moo"), TraceLog::RECORD_UNTIL_FULL);
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo"));
|
| + EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
|
| trace_log->SetDisabled();
|
| trace_log->SetDisabled();
|
| }
|
| @@ -1572,7 +1598,7 @@ TEST_F(TraceEventTestFixture, TraceSampling) {
|
|
|
| event_watch_notification_ = 0;
|
| TraceLog::GetInstance()->SetEnabled(
|
| - std::string("*"),
|
| + CategoryFilter("*"),
|
| TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
|
| TraceLog::ENABLE_SAMPLING));
|
|
|
| @@ -1606,7 +1632,8 @@ class MyData : public base::debug::ConvertableToTraceFormat {
|
|
|
| TEST_F(TraceEventTestFixture, ConvertableTypes) {
|
| ManualTestSetUp();
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
|
|
| scoped_ptr<MyData> data(new MyData());
|
| TRACE_EVENT1("foo", "bar", "data",
|
| @@ -1667,9 +1694,10 @@ class TraceEventCallbackTest : public TraceEventTestFixture {
|
| TraceEventCallbackTest* TraceEventCallbackTest::s_instance;
|
|
|
| TEST_F(TraceEventCallbackTest, TraceEventCallback) {
|
| - TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_GLOBAL);
|
| - TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_GLOBAL);
|
| + TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_THREAD);
|
| + TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
|
| + TraceLog::RECORD_UNTIL_FULL);
|
| + TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_THREAD);
|
| TraceLog::GetInstance()->SetEventCallback(Callback);
|
| TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL);
|
| TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL);
|
| @@ -1683,5 +1711,86 @@ TEST_F(TraceEventCallbackTest, TraceEventCallback) {
|
|
|
| // TODO(dsinclair): Continuous Tracing unit test.
|
|
|
| +// Test the category filter.
|
| +TEST_F(TraceEventTestFixture, CategoryFilter) {
|
| + ManualTestSetUp();
|
| +
|
| + // Using the default filter.
|
| + CategoryFilter default_cf = CategoryFilter(
|
| + CategoryFilter::kDefaultCategoryFilterString);
|
| + std::string category_filter_str = default_cf.ToString();
|
| + EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str());
|
| + EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category"));
|
| + EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| + EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| + EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2"));
|
| +
|
| + // Make sure that upon an empty string, we fall back to the default filter.
|
| + default_cf = CategoryFilter("");
|
| + category_filter_str = default_cf.ToString();
|
| + EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str());
|
| + EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category"));
|
| + EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| + EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| + EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryTest,Category2"));
|
| +
|
| + // Using an arbitrary non-empty filter.
|
| + CategoryFilter cf("included,-excluded,inc_pattern*,-exc_pattern*");
|
| + category_filter_str = cf.ToString();
|
| + EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*",
|
| + category_filter_str.c_str());
|
| + EXPECT_TRUE(cf.IsCategoryGroupEnabled("included"));
|
| + EXPECT_TRUE(cf.IsCategoryGroupEnabled("inc_pattern_category"));
|
| + EXPECT_FALSE(cf.IsCategoryGroupEnabled("exc_pattern_category"));
|
| + EXPECT_FALSE(cf.IsCategoryGroupEnabled("excluded"));
|
| + EXPECT_FALSE(cf.IsCategoryGroupEnabled("not-excluded-nor-included"));
|
| + EXPECT_FALSE(cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
|
| + EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
|
| + EXPECT_FALSE(cf.IsCategoryGroupEnabled("CategoryTest,Category2"));
|
| +
|
| + cf.Merge(default_cf);
|
| + category_filter_str = cf.ToString();
|
| + EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test",
|
| + category_filter_str.c_str());
|
| + cf.Clear();
|
| + EXPECT_FALSE(cf.HasIncludedPatterns());
|
| +
|
| + CategoryFilter reconstructed_cf(category_filter_str);
|
| + category_filter_str = reconstructed_cf.ToString();
|
| + EXPECT_STREQ("included,inc_pattern*,-excluded,-exc_pattern*,-*Debug,-*Test",
|
| + category_filter_str.c_str());
|
| +
|
| + // One included category.
|
| + CategoryFilter one_inc_cf("only_inc_cat");
|
| + category_filter_str = one_inc_cf.ToString();
|
| + EXPECT_STREQ("only_inc_cat", category_filter_str.c_str());
|
| +
|
| + // One excluded category.
|
| + CategoryFilter one_exc_cf("-only_exc_cat");
|
| + category_filter_str = one_exc_cf.ToString();
|
| + EXPECT_STREQ("-only_exc_cat", category_filter_str.c_str());
|
| +
|
| + // Test that IsEmptyOrContainsLeadingOrTrailingWhitespace actually catches
|
| + // categories that are explicitly forbiden.
|
| + // This method is called in a DCHECK to assert that we don't have these types
|
| + // of strings as categories.
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + " bad_category "));
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + " bad_category"));
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + "bad_category "));
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + " bad_category"));
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + "bad_category "));
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + " bad_category "));
|
| + EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + ""));
|
| + EXPECT_FALSE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
|
| + "good_category"));
|
| +}
|
| +
|
| } // namespace debug
|
| } // namespace base
|
|
|