| Index: base/debug/trace_event_unittest.cc
|
| diff --git a/base/debug/trace_event_unittest.cc b/base/debug/trace_event_unittest.cc
|
| index 5fb90407c65df90867fbeff5b563616b47be1a03..4e76203b266c446352b66ad2d1c0f1d3ef11987a 100644
|
| --- a/base/debug/trace_event_unittest.cc
|
| +++ b/base/debug/trace_event_unittest.cc
|
| @@ -326,9 +326,12 @@ void TraceWithAllMacroVariants(WaitableEvent* task_complete_event) {
|
| "name1", "\"value1\"",
|
| "name2", "value\\2");
|
|
|
| - TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call");
|
| - TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1");
|
| + TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call",
|
| + TRACE_EVENT_SCOPE_GLOBAL);
|
| + TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call",
|
| + TRACE_EVENT_SCOPE_PROCESS, "name1", "value1");
|
| TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call",
|
| + TRACE_EVENT_SCOPE_THREAD,
|
| "name1", "value1",
|
| "name2", "value2");
|
|
|
| @@ -447,10 +450,25 @@ void ValidateAllTraceMacrosCreatedData(const ListValue& trace_parsed) {
|
| EXPECT_SUB_FIND_("value\\2");
|
|
|
| EXPECT_FIND_("TRACE_EVENT_INSTANT0 call");
|
| + {
|
| + std::string scope;
|
| + EXPECT_TRUE((item && item->GetString("s", &scope)));
|
| + EXPECT_EQ("g", scope);
|
| + }
|
| EXPECT_FIND_("TRACE_EVENT_INSTANT1 call");
|
| + {
|
| + std::string scope;
|
| + EXPECT_TRUE((item && item->GetString("s", &scope)));
|
| + EXPECT_EQ("p", scope);
|
| + }
|
| EXPECT_SUB_FIND_("name1");
|
| EXPECT_SUB_FIND_("value1");
|
| EXPECT_FIND_("TRACE_EVENT_INSTANT2 call");
|
| + {
|
| + std::string scope;
|
| + EXPECT_TRUE((item && item->GetString("s", &scope)));
|
| + EXPECT_EQ("t", scope);
|
| + }
|
| EXPECT_SUB_FIND_("name1");
|
| EXPECT_SUB_FIND_("value1");
|
| EXPECT_SUB_FIND_("name2");
|
| @@ -695,6 +713,7 @@ void TraceManyInstantEvents(int thread_id, int num_events,
|
| WaitableEvent* task_complete_event) {
|
| for (int i = 0; i < num_events; i++) {
|
| TRACE_EVENT_INSTANT2("all", "multi thread event",
|
| + TRACE_EVENT_SCOPE_THREAD,
|
| "thread", thread_id,
|
| "event", i);
|
| }
|
| @@ -737,7 +756,7 @@ void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed,
|
|
|
| void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) {
|
| TRACE_EVENT0("category name1", name_str);
|
| - TRACE_EVENT_INSTANT0("category name2", name_str);
|
| + TRACE_EVENT_INSTANT0("category name2", name_str, TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_BEGIN0("category name3", name_str);
|
| TRACE_EVENT_END0("category name4", name_str);
|
| }
|
| @@ -851,11 +870,11 @@ TEST_F(TraceEventTestFixture, Categories) {
|
|
|
| // Test that categories that are used can be retrieved whether trace was
|
| // enabled or disabled when the trace event was encountered.
|
| - TRACE_EVENT_INSTANT0("c1", "name");
|
| - TRACE_EVENT_INSTANT0("c2", "name");
|
| + TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| BeginTrace();
|
| - TRACE_EVENT_INSTANT0("c3", "name");
|
| - TRACE_EVENT_INSTANT0("c4", "name");
|
| + TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| std::vector<std::string> cats;
|
| TraceLog::GetInstance()->GetKnownCategories(&cats);
|
| @@ -876,8 +895,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| included_categories.push_back("not_found823564786");
|
| TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories,
|
| TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("cat1", "name");
|
| - TRACE_EVENT_INSTANT0("cat2", "name");
|
| + TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(trace_parsed_.empty());
|
|
|
| @@ -887,8 +906,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| included_categories.push_back("inc");
|
| TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories,
|
| TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("inc", "name");
|
| - TRACE_EVENT_INSTANT0("inc2", "name");
|
| + TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc"));
|
| EXPECT_FALSE(FindNonMatchingValue("cat", "inc"));
|
| @@ -900,12 +919,15 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| included_categories.push_back("inc_wildchar_?_end");
|
| TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories,
|
| TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included");
|
| - TRACE_EVENT_INSTANT0("inc_wildcard_", "included");
|
| - TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included");
|
| - TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc");
|
| - TRACE_EVENT_INSTANT0("cat1", "not_inc");
|
| - TRACE_EVENT_INSTANT0("cat2", "not_inc");
|
| + TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included",
|
| + 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_INSTANT0("inc_wildchar_bla_end", "not_inc",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc"));
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_"));
|
| @@ -920,8 +942,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| excluded_categories.push_back("not_found823564786");
|
| TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories,
|
| TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("cat1", "name");
|
| - TRACE_EVENT_INSTANT0("cat2", "name");
|
| + TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
|
| EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
|
| @@ -932,8 +954,8 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| excluded_categories.push_back("inc");
|
| TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories,
|
| TraceLog::RECORD_UNTIL_FULL);
|
| - TRACE_EVENT_INSTANT0("inc", "name");
|
| - TRACE_EVENT_INSTANT0("inc2", "name");
|
| + TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc2"));
|
| EXPECT_FALSE(FindMatchingValue("cat", "inc"));
|
| @@ -945,12 +967,14 @@ TEST_F(TraceEventTestFixture, Categories) {
|
| 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_INSTANT0("inc_wildcard_", "not_inc");
|
| - TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc");
|
| - TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included");
|
| - TRACE_EVENT_INSTANT0("cat1", "included");
|
| - TRACE_EVENT_INSTANT0("cat2", "included");
|
| + 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_INSTANT0("inc_wildchar_bla_end", "included",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end"));
|
| EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
|
| @@ -966,13 +990,13 @@ TEST_F(TraceEventTestFixture, EventWatchNotification) {
|
| // Basic one occurrence.
|
| BeginTrace();
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| - TRACE_EVENT_INSTANT0("cat", "event");
|
| + TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, 1);
|
|
|
| // Basic one occurrence before Set.
|
| BeginTrace();
|
| - TRACE_EVENT_INSTANT0("cat", "event");
|
| + TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, 1);
|
| @@ -982,7 +1006,7 @@ TEST_F(TraceEventTestFixture, EventWatchNotification) {
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| EndTraceAndFlush();
|
| BeginTrace();
|
| - TRACE_EVENT_INSTANT0("cat", "event");
|
| + TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, 0);
|
|
|
| @@ -991,21 +1015,21 @@ TEST_F(TraceEventTestFixture, EventWatchNotification) {
|
| int num_occurrences = 5;
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| for (int i = 0; i < num_occurrences; ++i)
|
| - TRACE_EVENT_INSTANT0("cat", "event");
|
| + TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, num_occurrences);
|
|
|
| // Wrong category.
|
| BeginTrace();
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| - TRACE_EVENT_INSTANT0("wrong_cat", "event");
|
| + TRACE_EVENT_INSTANT0("wrong_cat", "event", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, 0);
|
|
|
| // Wrong name.
|
| BeginTrace();
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| - TRACE_EVENT_INSTANT0("cat", "wrong_event");
|
| + TRACE_EVENT_INSTANT0("cat", "wrong_event", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, 0);
|
|
|
| @@ -1013,7 +1037,7 @@ TEST_F(TraceEventTestFixture, EventWatchNotification) {
|
| BeginTrace();
|
| TraceLog::GetInstance()->SetWatchEvent("cat", "event");
|
| TraceLog::GetInstance()->CancelWatchEvent();
|
| - TRACE_EVENT_INSTANT0("cat", "event");
|
| + TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
|
| EndTraceAndFlush();
|
| EXPECT_EQ(event_watch_notification_, 0);
|
| }
|
| @@ -1268,20 +1292,20 @@ TEST_F(TraceEventTestFixture, ThreadNameChanges) {
|
| BeginTrace();
|
|
|
| PlatformThread::SetName("");
|
| - TRACE_EVENT_INSTANT0("drink", "water");
|
| + TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD);
|
|
|
| PlatformThread::SetName("cafe");
|
| - TRACE_EVENT_INSTANT0("drink", "coffee");
|
| + TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD);
|
|
|
| PlatformThread::SetName("shop");
|
| // No event here, so won't appear in combined name.
|
|
|
| PlatformThread::SetName("pub");
|
| - TRACE_EVENT_INSTANT0("drink", "beer");
|
| - TRACE_EVENT_INSTANT0("drink", "wine");
|
| + TRACE_EVENT_INSTANT0("drink", "beer", TRACE_EVENT_SCOPE_THREAD);
|
| + TRACE_EVENT_INSTANT0("drink", "wine", TRACE_EVENT_SCOPE_THREAD);
|
|
|
| PlatformThread::SetName(" bar");
|
| - TRACE_EVENT_INSTANT0("drink", "whisky");
|
| + TRACE_EVENT_INSTANT0("drink", "whisky", TRACE_EVENT_SCOPE_THREAD);
|
|
|
| EndTraceAndFlush();
|
|
|
| @@ -1320,11 +1344,13 @@ TEST_F(TraceEventTestFixture, AtExit) {
|
| // so that it will be destroyed when this scope closes.
|
| ManualTestSetUp();
|
|
|
| - TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled");
|
| + TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
|
|
| BeginTrace();
|
|
|
| - TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled");
|
| + TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| // Trace calls that will cache pointers to categories; they're valid here
|
| TraceCallsWithCachedCategoryPointersPointers(
|
| "is recorded 2; system has been enabled");
|
| @@ -1347,12 +1373,14 @@ TEST_F(TraceEventTestFixture, AtExit) {
|
| TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL);
|
| TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL);
|
| TRACE_EVENT0("all", "not recorded; system shutdown");
|
| - TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown");
|
| + TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown");
|
| TRACE_EVENT_END0("all", "not recorded; system shutdown");
|
|
|
| TRACE_EVENT0("new category 0!", "not recorded; system shutdown");
|
| - TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown");
|
| + TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown",
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown");
|
| TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown");
|
|
|
| @@ -1371,7 +1399,8 @@ TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) {
|
| std::string name_string("event name");
|
|
|
| BeginTrace();
|
| - TRACE_EVENT_INSTANT0("category", name_string.c_str());
|
| + TRACE_EVENT_INSTANT0("category", name_string.c_str(),
|
| + TRACE_EVENT_SCOPE_THREAD);
|
|
|
| // Modify the string in place (a wholesale reassignment may leave the old
|
| // string intact on the heap).
|
| @@ -1398,7 +1427,8 @@ TEST_F(TraceEventTestFixture, DeepCopy) {
|
| std::string val2("val2");
|
|
|
| BeginTrace();
|
| - TRACE_EVENT_COPY_INSTANT0("category", name1.c_str());
|
| + TRACE_EVENT_COPY_INSTANT0("category", name1.c_str(),
|
| + TRACE_EVENT_SCOPE_THREAD);
|
| TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(),
|
| arg1.c_str(), 5);
|
| TRACE_EVENT_COPY_END2("category", name3.c_str(),
|
| @@ -1462,12 +1492,12 @@ TEST_F(TraceEventTestFixture, TracingIsLazy) {
|
| BeginTrace();
|
|
|
| int a = 0;
|
| - TRACE_EVENT_INSTANT1("category", "test", "a", a++);
|
| + TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
|
| EXPECT_EQ(1, a);
|
|
|
| TraceLog::GetInstance()->SetDisabled();
|
|
|
| - TRACE_EVENT_INSTANT1("category", "test", "a", a++);
|
| + TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
|
| EXPECT_EQ(1, a);
|
|
|
| EndTraceAndFlush();
|
| @@ -1595,14 +1625,15 @@ class TraceEventCallbackTest : public TraceEventTestFixture {
|
| TraceEventCallbackTest* TraceEventCallbackTest::s_instance;
|
|
|
| TEST_F(TraceEventCallbackTest, TraceEventCallback) {
|
| - TRACE_EVENT_INSTANT0("all", "before enable");
|
| + 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_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_GLOBAL);
|
| TraceLog::GetInstance()->SetEventCallback(Callback);
|
| - TRACE_EVENT_INSTANT0("all", "event1");
|
| - TRACE_EVENT_INSTANT0("all", "event2");
|
| + TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL);
|
| + TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL);
|
| TraceLog::GetInstance()->SetEventCallback(NULL);
|
| - TRACE_EVENT_INSTANT0("all", "after callback removed");
|
| + TRACE_EVENT_INSTANT0("all", "after callback removed",
|
| + TRACE_EVENT_SCOPE_GLOBAL);
|
| EXPECT_EQ(2u, collected_events_.size());
|
| EXPECT_EQ("event1", collected_events_[0]);
|
| EXPECT_EQ("event2", collected_events_[1]);
|
|
|