OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/debug/trace_event_unittest.h" | 5 #include "base/debug/trace_event_unittest.h" |
6 | 6 |
7 #include <cstdlib> | 7 #include <cstdlib> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); | 319 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); |
320 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", | 320 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", |
321 0x5566, "extrastring3"); | 321 0x5566, "extrastring3"); |
322 | 322 |
323 TRACE_EVENT0("all", "TRACE_EVENT0 call"); | 323 TRACE_EVENT0("all", "TRACE_EVENT0 call"); |
324 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); | 324 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); |
325 TRACE_EVENT2("all", "TRACE_EVENT2 call", | 325 TRACE_EVENT2("all", "TRACE_EVENT2 call", |
326 "name1", "\"value1\"", | 326 "name1", "\"value1\"", |
327 "name2", "value\\2"); | 327 "name2", "value\\2"); |
328 | 328 |
329 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call"); | 329 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call", |
330 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1"); | 330 TRACE_EVENT_SCOPE_GLOBAL); |
| 331 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", |
| 332 TRACE_EVENT_SCOPE_PROCESS, "name1", "value1"); |
331 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", | 333 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", |
| 334 TRACE_EVENT_SCOPE_THREAD, |
332 "name1", "value1", | 335 "name1", "value1", |
333 "name2", "value2"); | 336 "name2", "value2"); |
334 | 337 |
335 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); | 338 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); |
336 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); | 339 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); |
337 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", | 340 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", |
338 "name1", "value1", | 341 "name1", "value1", |
339 "name2", "value2"); | 342 "name2", "value2"); |
340 | 343 |
341 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); | 344 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
440 EXPECT_FIND_("TRACE_EVENT1 call"); | 443 EXPECT_FIND_("TRACE_EVENT1 call"); |
441 EXPECT_SUB_FIND_("name1"); | 444 EXPECT_SUB_FIND_("name1"); |
442 EXPECT_SUB_FIND_("value1"); | 445 EXPECT_SUB_FIND_("value1"); |
443 EXPECT_FIND_("TRACE_EVENT2 call"); | 446 EXPECT_FIND_("TRACE_EVENT2 call"); |
444 EXPECT_SUB_FIND_("name1"); | 447 EXPECT_SUB_FIND_("name1"); |
445 EXPECT_SUB_FIND_("\"value1\""); | 448 EXPECT_SUB_FIND_("\"value1\""); |
446 EXPECT_SUB_FIND_("name2"); | 449 EXPECT_SUB_FIND_("name2"); |
447 EXPECT_SUB_FIND_("value\\2"); | 450 EXPECT_SUB_FIND_("value\\2"); |
448 | 451 |
449 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); | 452 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); |
| 453 { |
| 454 std::string scope; |
| 455 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 456 EXPECT_EQ("g", scope); |
| 457 } |
450 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); | 458 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); |
| 459 { |
| 460 std::string scope; |
| 461 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 462 EXPECT_EQ("p", scope); |
| 463 } |
451 EXPECT_SUB_FIND_("name1"); | 464 EXPECT_SUB_FIND_("name1"); |
452 EXPECT_SUB_FIND_("value1"); | 465 EXPECT_SUB_FIND_("value1"); |
453 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); | 466 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); |
| 467 { |
| 468 std::string scope; |
| 469 EXPECT_TRUE((item && item->GetString("s", &scope))); |
| 470 EXPECT_EQ("t", scope); |
| 471 } |
454 EXPECT_SUB_FIND_("name1"); | 472 EXPECT_SUB_FIND_("name1"); |
455 EXPECT_SUB_FIND_("value1"); | 473 EXPECT_SUB_FIND_("value1"); |
456 EXPECT_SUB_FIND_("name2"); | 474 EXPECT_SUB_FIND_("name2"); |
457 EXPECT_SUB_FIND_("value2"); | 475 EXPECT_SUB_FIND_("value2"); |
458 | 476 |
459 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); | 477 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); |
460 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); | 478 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); |
461 EXPECT_SUB_FIND_("name1"); | 479 EXPECT_SUB_FIND_("name1"); |
462 EXPECT_SUB_FIND_("value1"); | 480 EXPECT_SUB_FIND_("value1"); |
463 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); | 481 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 EXPECT_EQ("D", phase); | 706 EXPECT_EQ("D", phase); |
689 EXPECT_TRUE((item && item->GetString("id", &id))); | 707 EXPECT_TRUE((item && item->GetString("id", &id))); |
690 EXPECT_EQ("2128506", id); | 708 EXPECT_EQ("2128506", id); |
691 } | 709 } |
692 } | 710 } |
693 | 711 |
694 void TraceManyInstantEvents(int thread_id, int num_events, | 712 void TraceManyInstantEvents(int thread_id, int num_events, |
695 WaitableEvent* task_complete_event) { | 713 WaitableEvent* task_complete_event) { |
696 for (int i = 0; i < num_events; i++) { | 714 for (int i = 0; i < num_events; i++) { |
697 TRACE_EVENT_INSTANT2("all", "multi thread event", | 715 TRACE_EVENT_INSTANT2("all", "multi thread event", |
| 716 TRACE_EVENT_SCOPE_THREAD, |
698 "thread", thread_id, | 717 "thread", thread_id, |
699 "event", i); | 718 "event", i); |
700 } | 719 } |
701 | 720 |
702 if (task_complete_event) | 721 if (task_complete_event) |
703 task_complete_event->Signal(); | 722 task_complete_event->Signal(); |
704 } | 723 } |
705 | 724 |
706 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, | 725 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, |
707 int num_threads, | 726 int num_threads, |
(...skipping 22 matching lines...) Expand all Loading... |
730 EXPECT_FALSE(results[-1][-1]); | 749 EXPECT_FALSE(results[-1][-1]); |
731 for (int thread = 0; thread < num_threads; thread++) { | 750 for (int thread = 0; thread < num_threads; thread++) { |
732 for (int event = 0; event < num_events; event++) { | 751 for (int event = 0; event < num_events; event++) { |
733 EXPECT_TRUE(results[thread][event]); | 752 EXPECT_TRUE(results[thread][event]); |
734 } | 753 } |
735 } | 754 } |
736 } | 755 } |
737 | 756 |
738 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { | 757 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { |
739 TRACE_EVENT0("category name1", name_str); | 758 TRACE_EVENT0("category name1", name_str); |
740 TRACE_EVENT_INSTANT0("category name2", name_str); | 759 TRACE_EVENT_INSTANT0("category name2", name_str, TRACE_EVENT_SCOPE_THREAD); |
741 TRACE_EVENT_BEGIN0("category name3", name_str); | 760 TRACE_EVENT_BEGIN0("category name3", name_str); |
742 TRACE_EVENT_END0("category name4", name_str); | 761 TRACE_EVENT_END0("category name4", name_str); |
743 } | 762 } |
744 | 763 |
745 } // namespace | 764 } // namespace |
746 | 765 |
747 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 766 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
748 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 767 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
749 do { | 768 do { |
750 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 769 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
844 // Cleanup. | 863 // Cleanup. |
845 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 864 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
846 } | 865 } |
847 | 866 |
848 // Test that categories work. | 867 // Test that categories work. |
849 TEST_F(TraceEventTestFixture, Categories) { | 868 TEST_F(TraceEventTestFixture, Categories) { |
850 ManualTestSetUp(); | 869 ManualTestSetUp(); |
851 | 870 |
852 // Test that categories that are used can be retrieved whether trace was | 871 // Test that categories that are used can be retrieved whether trace was |
853 // enabled or disabled when the trace event was encountered. | 872 // enabled or disabled when the trace event was encountered. |
854 TRACE_EVENT_INSTANT0("c1", "name"); | 873 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD); |
855 TRACE_EVENT_INSTANT0("c2", "name"); | 874 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD); |
856 BeginTrace(); | 875 BeginTrace(); |
857 TRACE_EVENT_INSTANT0("c3", "name"); | 876 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD); |
858 TRACE_EVENT_INSTANT0("c4", "name"); | 877 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD); |
859 EndTraceAndFlush(); | 878 EndTraceAndFlush(); |
860 std::vector<std::string> cats; | 879 std::vector<std::string> cats; |
861 TraceLog::GetInstance()->GetKnownCategories(&cats); | 880 TraceLog::GetInstance()->GetKnownCategories(&cats); |
862 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); | 881 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); |
863 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); | 882 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); |
864 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); | 883 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); |
865 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); | 884 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); |
866 | 885 |
867 const std::vector<std::string> empty_categories; | 886 const std::vector<std::string> empty_categories; |
868 std::vector<std::string> included_categories; | 887 std::vector<std::string> included_categories; |
869 std::vector<std::string> excluded_categories; | 888 std::vector<std::string> excluded_categories; |
870 | 889 |
871 // Test that category filtering works. | 890 // Test that category filtering works. |
872 | 891 |
873 // Include nonexistent category -> no events | 892 // Include nonexistent category -> no events |
874 Clear(); | 893 Clear(); |
875 included_categories.clear(); | 894 included_categories.clear(); |
876 included_categories.push_back("not_found823564786"); | 895 included_categories.push_back("not_found823564786"); |
877 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 896 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, |
878 TraceLog::RECORD_UNTIL_FULL); | 897 TraceLog::RECORD_UNTIL_FULL); |
879 TRACE_EVENT_INSTANT0("cat1", "name"); | 898 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
880 TRACE_EVENT_INSTANT0("cat2", "name"); | 899 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
881 EndTraceAndFlush(); | 900 EndTraceAndFlush(); |
882 EXPECT_TRUE(trace_parsed_.empty()); | 901 EXPECT_TRUE(trace_parsed_.empty()); |
883 | 902 |
884 // Include existent category -> only events of that category | 903 // Include existent category -> only events of that category |
885 Clear(); | 904 Clear(); |
886 included_categories.clear(); | 905 included_categories.clear(); |
887 included_categories.push_back("inc"); | 906 included_categories.push_back("inc"); |
888 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 907 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, |
889 TraceLog::RECORD_UNTIL_FULL); | 908 TraceLog::RECORD_UNTIL_FULL); |
890 TRACE_EVENT_INSTANT0("inc", "name"); | 909 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
891 TRACE_EVENT_INSTANT0("inc2", "name"); | 910 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
892 EndTraceAndFlush(); | 911 EndTraceAndFlush(); |
893 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 912 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
894 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 913 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
895 | 914 |
896 // Include existent wildcard -> all categories matching wildcard | 915 // Include existent wildcard -> all categories matching wildcard |
897 Clear(); | 916 Clear(); |
898 included_categories.clear(); | 917 included_categories.clear(); |
899 included_categories.push_back("inc_wildcard_*"); | 918 included_categories.push_back("inc_wildcard_*"); |
900 included_categories.push_back("inc_wildchar_?_end"); | 919 included_categories.push_back("inc_wildchar_?_end"); |
901 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, | 920 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories, |
902 TraceLog::RECORD_UNTIL_FULL); | 921 TraceLog::RECORD_UNTIL_FULL); |
903 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); | 922 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", |
904 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); | 923 TRACE_EVENT_SCOPE_THREAD); |
905 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); | 924 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); |
906 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); | 925 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", |
907 TRACE_EVENT_INSTANT0("cat1", "not_inc"); | 926 TRACE_EVENT_SCOPE_THREAD); |
908 TRACE_EVENT_INSTANT0("cat2", "not_inc"); | 927 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", |
| 928 TRACE_EVENT_SCOPE_THREAD); |
| 929 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
| 930 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
909 EndTraceAndFlush(); | 931 EndTraceAndFlush(); |
910 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 932 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
911 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 933 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
912 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 934 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
913 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 935 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
914 | 936 |
915 included_categories.clear(); | 937 included_categories.clear(); |
916 | 938 |
917 // Exclude nonexistent category -> all events | 939 // Exclude nonexistent category -> all events |
918 Clear(); | 940 Clear(); |
919 excluded_categories.clear(); | 941 excluded_categories.clear(); |
920 excluded_categories.push_back("not_found823564786"); | 942 excluded_categories.push_back("not_found823564786"); |
921 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 943 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, |
922 TraceLog::RECORD_UNTIL_FULL); | 944 TraceLog::RECORD_UNTIL_FULL); |
923 TRACE_EVENT_INSTANT0("cat1", "name"); | 945 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
924 TRACE_EVENT_INSTANT0("cat2", "name"); | 946 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
925 EndTraceAndFlush(); | 947 EndTraceAndFlush(); |
926 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 948 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
927 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 949 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
928 | 950 |
929 // Exclude existent category -> only events of other categories | 951 // Exclude existent category -> only events of other categories |
930 Clear(); | 952 Clear(); |
931 excluded_categories.clear(); | 953 excluded_categories.clear(); |
932 excluded_categories.push_back("inc"); | 954 excluded_categories.push_back("inc"); |
933 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 955 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, |
934 TraceLog::RECORD_UNTIL_FULL); | 956 TraceLog::RECORD_UNTIL_FULL); |
935 TRACE_EVENT_INSTANT0("inc", "name"); | 957 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
936 TRACE_EVENT_INSTANT0("inc2", "name"); | 958 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
937 EndTraceAndFlush(); | 959 EndTraceAndFlush(); |
938 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 960 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
939 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 961 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
940 | 962 |
941 // Exclude existent wildcard -> all categories not matching wildcard | 963 // Exclude existent wildcard -> all categories not matching wildcard |
942 Clear(); | 964 Clear(); |
943 excluded_categories.clear(); | 965 excluded_categories.clear(); |
944 excluded_categories.push_back("inc_wildcard_*"); | 966 excluded_categories.push_back("inc_wildcard_*"); |
945 excluded_categories.push_back("inc_wildchar_?_end"); | 967 excluded_categories.push_back("inc_wildchar_?_end"); |
946 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, | 968 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories, |
947 TraceLog::RECORD_UNTIL_FULL); | 969 TraceLog::RECORD_UNTIL_FULL); |
948 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); | 970 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
949 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); | 971 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
950 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); | 972 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", |
951 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); | 973 TRACE_EVENT_SCOPE_THREAD); |
952 TRACE_EVENT_INSTANT0("cat1", "included"); | 974 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", |
953 TRACE_EVENT_INSTANT0("cat2", "included"); | 975 TRACE_EVENT_SCOPE_THREAD); |
| 976 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); |
| 977 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); |
954 EndTraceAndFlush(); | 978 EndTraceAndFlush(); |
955 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); | 979 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); |
956 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 980 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
957 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 981 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
958 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 982 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
959 } | 983 } |
960 | 984 |
961 | 985 |
962 // Test EVENT_WATCH_NOTIFICATION | 986 // Test EVENT_WATCH_NOTIFICATION |
963 TEST_F(TraceEventTestFixture, EventWatchNotification) { | 987 TEST_F(TraceEventTestFixture, EventWatchNotification) { |
964 ManualTestSetUp(); | 988 ManualTestSetUp(); |
965 | 989 |
966 // Basic one occurrence. | 990 // Basic one occurrence. |
967 BeginTrace(); | 991 BeginTrace(); |
968 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 992 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
969 TRACE_EVENT_INSTANT0("cat", "event"); | 993 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
970 EndTraceAndFlush(); | 994 EndTraceAndFlush(); |
971 EXPECT_EQ(event_watch_notification_, 1); | 995 EXPECT_EQ(event_watch_notification_, 1); |
972 | 996 |
973 // Basic one occurrence before Set. | 997 // Basic one occurrence before Set. |
974 BeginTrace(); | 998 BeginTrace(); |
975 TRACE_EVENT_INSTANT0("cat", "event"); | 999 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
976 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1000 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
977 EndTraceAndFlush(); | 1001 EndTraceAndFlush(); |
978 EXPECT_EQ(event_watch_notification_, 1); | 1002 EXPECT_EQ(event_watch_notification_, 1); |
979 | 1003 |
980 // Auto-reset after end trace. | 1004 // Auto-reset after end trace. |
981 BeginTrace(); | 1005 BeginTrace(); |
982 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1006 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
983 EndTraceAndFlush(); | 1007 EndTraceAndFlush(); |
984 BeginTrace(); | 1008 BeginTrace(); |
985 TRACE_EVENT_INSTANT0("cat", "event"); | 1009 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
986 EndTraceAndFlush(); | 1010 EndTraceAndFlush(); |
987 EXPECT_EQ(event_watch_notification_, 0); | 1011 EXPECT_EQ(event_watch_notification_, 0); |
988 | 1012 |
989 // Multiple occurrence. | 1013 // Multiple occurrence. |
990 BeginTrace(); | 1014 BeginTrace(); |
991 int num_occurrences = 5; | 1015 int num_occurrences = 5; |
992 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1016 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
993 for (int i = 0; i < num_occurrences; ++i) | 1017 for (int i = 0; i < num_occurrences; ++i) |
994 TRACE_EVENT_INSTANT0("cat", "event"); | 1018 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
995 EndTraceAndFlush(); | 1019 EndTraceAndFlush(); |
996 EXPECT_EQ(event_watch_notification_, num_occurrences); | 1020 EXPECT_EQ(event_watch_notification_, num_occurrences); |
997 | 1021 |
998 // Wrong category. | 1022 // Wrong category. |
999 BeginTrace(); | 1023 BeginTrace(); |
1000 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1024 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
1001 TRACE_EVENT_INSTANT0("wrong_cat", "event"); | 1025 TRACE_EVENT_INSTANT0("wrong_cat", "event", TRACE_EVENT_SCOPE_THREAD); |
1002 EndTraceAndFlush(); | 1026 EndTraceAndFlush(); |
1003 EXPECT_EQ(event_watch_notification_, 0); | 1027 EXPECT_EQ(event_watch_notification_, 0); |
1004 | 1028 |
1005 // Wrong name. | 1029 // Wrong name. |
1006 BeginTrace(); | 1030 BeginTrace(); |
1007 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1031 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
1008 TRACE_EVENT_INSTANT0("cat", "wrong_event"); | 1032 TRACE_EVENT_INSTANT0("cat", "wrong_event", TRACE_EVENT_SCOPE_THREAD); |
1009 EndTraceAndFlush(); | 1033 EndTraceAndFlush(); |
1010 EXPECT_EQ(event_watch_notification_, 0); | 1034 EXPECT_EQ(event_watch_notification_, 0); |
1011 | 1035 |
1012 // Canceled. | 1036 // Canceled. |
1013 BeginTrace(); | 1037 BeginTrace(); |
1014 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); | 1038 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); |
1015 TraceLog::GetInstance()->CancelWatchEvent(); | 1039 TraceLog::GetInstance()->CancelWatchEvent(); |
1016 TRACE_EVENT_INSTANT0("cat", "event"); | 1040 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); |
1017 EndTraceAndFlush(); | 1041 EndTraceAndFlush(); |
1018 EXPECT_EQ(event_watch_notification_, 0); | 1042 EXPECT_EQ(event_watch_notification_, 0); |
1019 } | 1043 } |
1020 | 1044 |
1021 // Test ASYNC_BEGIN/END events | 1045 // Test ASYNC_BEGIN/END events |
1022 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { | 1046 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { |
1023 ManualTestSetUp(); | 1047 ManualTestSetUp(); |
1024 BeginTrace(); | 1048 BeginTrace(); |
1025 | 1049 |
1026 unsigned long long id = 0xfeedbeeffeedbeefull; | 1050 unsigned long long id = 0xfeedbeeffeedbeefull; |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 } | 1285 } |
1262 } | 1286 } |
1263 } | 1287 } |
1264 | 1288 |
1265 TEST_F(TraceEventTestFixture, ThreadNameChanges) { | 1289 TEST_F(TraceEventTestFixture, ThreadNameChanges) { |
1266 ManualTestSetUp(); | 1290 ManualTestSetUp(); |
1267 | 1291 |
1268 BeginTrace(); | 1292 BeginTrace(); |
1269 | 1293 |
1270 PlatformThread::SetName(""); | 1294 PlatformThread::SetName(""); |
1271 TRACE_EVENT_INSTANT0("drink", "water"); | 1295 TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD); |
1272 | 1296 |
1273 PlatformThread::SetName("cafe"); | 1297 PlatformThread::SetName("cafe"); |
1274 TRACE_EVENT_INSTANT0("drink", "coffee"); | 1298 TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD); |
1275 | 1299 |
1276 PlatformThread::SetName("shop"); | 1300 PlatformThread::SetName("shop"); |
1277 // No event here, so won't appear in combined name. | 1301 // No event here, so won't appear in combined name. |
1278 | 1302 |
1279 PlatformThread::SetName("pub"); | 1303 PlatformThread::SetName("pub"); |
1280 TRACE_EVENT_INSTANT0("drink", "beer"); | 1304 TRACE_EVENT_INSTANT0("drink", "beer", TRACE_EVENT_SCOPE_THREAD); |
1281 TRACE_EVENT_INSTANT0("drink", "wine"); | 1305 TRACE_EVENT_INSTANT0("drink", "wine", TRACE_EVENT_SCOPE_THREAD); |
1282 | 1306 |
1283 PlatformThread::SetName(" bar"); | 1307 PlatformThread::SetName(" bar"); |
1284 TRACE_EVENT_INSTANT0("drink", "whisky"); | 1308 TRACE_EVENT_INSTANT0("drink", "whisky", TRACE_EVENT_SCOPE_THREAD); |
1285 | 1309 |
1286 EndTraceAndFlush(); | 1310 EndTraceAndFlush(); |
1287 | 1311 |
1288 std::vector<const DictionaryValue*> items = | 1312 std::vector<const DictionaryValue*> items = |
1289 FindTraceEntries(trace_parsed_, "thread_name"); | 1313 FindTraceEntries(trace_parsed_, "thread_name"); |
1290 EXPECT_EQ(1u, items.size()); | 1314 EXPECT_EQ(1u, items.size()); |
1291 ASSERT_GT(items.size(), 0u); | 1315 ASSERT_GT(items.size(), 0u); |
1292 const DictionaryValue* item = items[0]; | 1316 const DictionaryValue* item = items[0]; |
1293 ASSERT_TRUE(item); | 1317 ASSERT_TRUE(item); |
1294 int tid; | 1318 int tid; |
(...skipping 18 matching lines...) Expand all Loading... |
1313 // recorded after the system is started again. | 1337 // recorded after the system is started again. |
1314 for (int i = 0; i < 4; i++) { | 1338 for (int i = 0; i < 4; i++) { |
1315 // Scope to contain the then destroy the TraceLog singleton. | 1339 // Scope to contain the then destroy the TraceLog singleton. |
1316 { | 1340 { |
1317 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; | 1341 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; |
1318 | 1342 |
1319 // Setup TraceLog singleton inside this test's exit manager scope | 1343 // Setup TraceLog singleton inside this test's exit manager scope |
1320 // so that it will be destroyed when this scope closes. | 1344 // so that it will be destroyed when this scope closes. |
1321 ManualTestSetUp(); | 1345 ManualTestSetUp(); |
1322 | 1346 |
1323 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled"); | 1347 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled", |
| 1348 TRACE_EVENT_SCOPE_THREAD); |
1324 | 1349 |
1325 BeginTrace(); | 1350 BeginTrace(); |
1326 | 1351 |
1327 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled"); | 1352 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled", |
| 1353 TRACE_EVENT_SCOPE_THREAD); |
1328 // Trace calls that will cache pointers to categories; they're valid here | 1354 // Trace calls that will cache pointers to categories; they're valid here |
1329 TraceCallsWithCachedCategoryPointersPointers( | 1355 TraceCallsWithCachedCategoryPointersPointers( |
1330 "is recorded 2; system has been enabled"); | 1356 "is recorded 2; system has been enabled"); |
1331 | 1357 |
1332 EndTraceAndFlush(); | 1358 EndTraceAndFlush(); |
1333 } // scope to destroy singleton | 1359 } // scope to destroy singleton |
1334 ASSERT_FALSE(TraceLog::GetInstance()); | 1360 ASSERT_FALSE(TraceLog::GetInstance()); |
1335 | 1361 |
1336 // Now that singleton is destroyed, check what trace events were recorded | 1362 // Now that singleton is destroyed, check what trace events were recorded |
1337 const DictionaryValue* item = NULL; | 1363 const DictionaryValue* item = NULL; |
1338 ListValue& trace_parsed = trace_parsed_; | 1364 ListValue& trace_parsed = trace_parsed_; |
1339 EXPECT_FIND_("is recorded 1"); | 1365 EXPECT_FIND_("is recorded 1"); |
1340 EXPECT_FIND_("is recorded 2"); | 1366 EXPECT_FIND_("is recorded 2"); |
1341 EXPECT_NOT_FIND_("not recorded"); | 1367 EXPECT_NOT_FIND_("not recorded"); |
1342 | 1368 |
1343 // Make additional trace event calls on the shutdown system. They should | 1369 // Make additional trace event calls on the shutdown system. They should |
1344 // all pass cleanly, but the data not be recorded. We'll verify that next | 1370 // all pass cleanly, but the data not be recorded. We'll verify that next |
1345 // time around the loop (the only way to flush the trace buffers). | 1371 // time around the loop (the only way to flush the trace buffers). |
1346 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); | 1372 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); |
1347 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); | 1373 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); |
1348 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); | 1374 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); |
1349 TRACE_EVENT0("all", "not recorded; system shutdown"); | 1375 TRACE_EVENT0("all", "not recorded; system shutdown"); |
1350 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown"); | 1376 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown", |
| 1377 TRACE_EVENT_SCOPE_THREAD); |
1351 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); | 1378 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); |
1352 TRACE_EVENT_END0("all", "not recorded; system shutdown"); | 1379 TRACE_EVENT_END0("all", "not recorded; system shutdown"); |
1353 | 1380 |
1354 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); | 1381 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); |
1355 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown"); | 1382 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown", |
| 1383 TRACE_EVENT_SCOPE_THREAD); |
1356 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); | 1384 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); |
1357 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); | 1385 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); |
1358 | 1386 |
1359 // Cached categories should be safe to check, and still disable traces | 1387 // Cached categories should be safe to check, and still disable traces |
1360 TraceCallsWithCachedCategoryPointersPointers( | 1388 TraceCallsWithCachedCategoryPointersPointers( |
1361 "not recorded; system shutdown"); | 1389 "not recorded; system shutdown"); |
1362 } | 1390 } |
1363 } | 1391 } |
1364 | 1392 |
1365 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { | 1393 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { |
1366 // Test that the TRACE_EVENT macros do not deep-copy their string. If they | 1394 // Test that the TRACE_EVENT macros do not deep-copy their string. If they |
1367 // do so it may indicate a performance regression, but more-over it would | 1395 // do so it may indicate a performance regression, but more-over it would |
1368 // make the DEEP_COPY overloads redundant. | 1396 // make the DEEP_COPY overloads redundant. |
1369 ManualTestSetUp(); | 1397 ManualTestSetUp(); |
1370 | 1398 |
1371 std::string name_string("event name"); | 1399 std::string name_string("event name"); |
1372 | 1400 |
1373 BeginTrace(); | 1401 BeginTrace(); |
1374 TRACE_EVENT_INSTANT0("category", name_string.c_str()); | 1402 TRACE_EVENT_INSTANT0("category", name_string.c_str(), |
| 1403 TRACE_EVENT_SCOPE_THREAD); |
1375 | 1404 |
1376 // Modify the string in place (a wholesale reassignment may leave the old | 1405 // Modify the string in place (a wholesale reassignment may leave the old |
1377 // string intact on the heap). | 1406 // string intact on the heap). |
1378 name_string[0] = '@'; | 1407 name_string[0] = '@'; |
1379 | 1408 |
1380 EndTraceAndFlush(); | 1409 EndTraceAndFlush(); |
1381 | 1410 |
1382 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); | 1411 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); |
1383 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); | 1412 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); |
1384 } | 1413 } |
1385 | 1414 |
1386 TEST_F(TraceEventTestFixture, DeepCopy) { | 1415 TEST_F(TraceEventTestFixture, DeepCopy) { |
1387 ManualTestSetUp(); | 1416 ManualTestSetUp(); |
1388 | 1417 |
1389 static const char kOriginalName1[] = "name1"; | 1418 static const char kOriginalName1[] = "name1"; |
1390 static const char kOriginalName2[] = "name2"; | 1419 static const char kOriginalName2[] = "name2"; |
1391 static const char kOriginalName3[] = "name3"; | 1420 static const char kOriginalName3[] = "name3"; |
1392 std::string name1(kOriginalName1); | 1421 std::string name1(kOriginalName1); |
1393 std::string name2(kOriginalName2); | 1422 std::string name2(kOriginalName2); |
1394 std::string name3(kOriginalName3); | 1423 std::string name3(kOriginalName3); |
1395 std::string arg1("arg1"); | 1424 std::string arg1("arg1"); |
1396 std::string arg2("arg2"); | 1425 std::string arg2("arg2"); |
1397 std::string val1("val1"); | 1426 std::string val1("val1"); |
1398 std::string val2("val2"); | 1427 std::string val2("val2"); |
1399 | 1428 |
1400 BeginTrace(); | 1429 BeginTrace(); |
1401 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str()); | 1430 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str(), |
| 1431 TRACE_EVENT_SCOPE_THREAD); |
1402 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), | 1432 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), |
1403 arg1.c_str(), 5); | 1433 arg1.c_str(), 5); |
1404 TRACE_EVENT_COPY_END2("category", name3.c_str(), | 1434 TRACE_EVENT_COPY_END2("category", name3.c_str(), |
1405 arg1.c_str(), val1, | 1435 arg1.c_str(), val1, |
1406 arg2.c_str(), val2); | 1436 arg2.c_str(), val2); |
1407 | 1437 |
1408 // As per NormallyNoDeepCopy, modify the strings in place. | 1438 // As per NormallyNoDeepCopy, modify the strings in place. |
1409 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; | 1439 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; |
1410 | 1440 |
1411 EndTraceAndFlush(); | 1441 EndTraceAndFlush(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1455 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); | 1485 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); |
1456 } | 1486 } |
1457 | 1487 |
1458 // Test that trace_event parameters are not evaluated if the tracing | 1488 // Test that trace_event parameters are not evaluated if the tracing |
1459 // system is disabled. | 1489 // system is disabled. |
1460 TEST_F(TraceEventTestFixture, TracingIsLazy) { | 1490 TEST_F(TraceEventTestFixture, TracingIsLazy) { |
1461 ManualTestSetUp(); | 1491 ManualTestSetUp(); |
1462 BeginTrace(); | 1492 BeginTrace(); |
1463 | 1493 |
1464 int a = 0; | 1494 int a = 0; |
1465 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1495 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
1466 EXPECT_EQ(1, a); | 1496 EXPECT_EQ(1, a); |
1467 | 1497 |
1468 TraceLog::GetInstance()->SetDisabled(); | 1498 TraceLog::GetInstance()->SetDisabled(); |
1469 | 1499 |
1470 TRACE_EVENT_INSTANT1("category", "test", "a", a++); | 1500 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); |
1471 EXPECT_EQ(1, a); | 1501 EXPECT_EQ(1, a); |
1472 | 1502 |
1473 EndTraceAndFlush(); | 1503 EndTraceAndFlush(); |
1474 } | 1504 } |
1475 | 1505 |
1476 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1506 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
1477 ManualTestSetUp(); | 1507 ManualTestSetUp(); |
1478 | 1508 |
1479 TraceLog* trace_log = TraceLog::GetInstance(); | 1509 TraceLog* trace_log = TraceLog::GetInstance(); |
1480 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); | 1510 trace_log->SetEnabled(std::string(), TraceLog::RECORD_UNTIL_FULL); |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1588 const unsigned char arg_types[], | 1618 const unsigned char arg_types[], |
1589 const unsigned long long arg_values[], | 1619 const unsigned long long arg_values[], |
1590 unsigned char flags) { | 1620 unsigned char flags) { |
1591 s_instance->collected_events_.push_back(name); | 1621 s_instance->collected_events_.push_back(name); |
1592 } | 1622 } |
1593 }; | 1623 }; |
1594 | 1624 |
1595 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; | 1625 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; |
1596 | 1626 |
1597 TEST_F(TraceEventCallbackTest, TraceEventCallback) { | 1627 TEST_F(TraceEventCallbackTest, TraceEventCallback) { |
1598 TRACE_EVENT_INSTANT0("all", "before enable"); | 1628 TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_GLOBAL); |
1599 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); | 1629 TraceLog::GetInstance()->SetEnabled(true, TraceLog::RECORD_UNTIL_FULL); |
1600 TRACE_EVENT_INSTANT0("all", "before callback set"); | 1630 TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_GLOBAL); |
1601 TraceLog::GetInstance()->SetEventCallback(Callback); | 1631 TraceLog::GetInstance()->SetEventCallback(Callback); |
1602 TRACE_EVENT_INSTANT0("all", "event1"); | 1632 TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL); |
1603 TRACE_EVENT_INSTANT0("all", "event2"); | 1633 TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL); |
1604 TraceLog::GetInstance()->SetEventCallback(NULL); | 1634 TraceLog::GetInstance()->SetEventCallback(NULL); |
1605 TRACE_EVENT_INSTANT0("all", "after callback removed"); | 1635 TRACE_EVENT_INSTANT0("all", "after callback removed", |
| 1636 TRACE_EVENT_SCOPE_GLOBAL); |
1606 EXPECT_EQ(2u, collected_events_.size()); | 1637 EXPECT_EQ(2u, collected_events_.size()); |
1607 EXPECT_EQ("event1", collected_events_[0]); | 1638 EXPECT_EQ("event1", collected_events_[0]); |
1608 EXPECT_EQ("event2", collected_events_[1]); | 1639 EXPECT_EQ("event2", collected_events_[1]); |
1609 } | 1640 } |
1610 | 1641 |
1611 // TODO(dsinclair): Continuous Tracing unit test. | 1642 // TODO(dsinclair): Continuous Tracing unit test. |
1612 | 1643 |
1613 } // namespace debug | 1644 } // namespace debug |
1614 } // namespace base | 1645 } // namespace base |
OLD | NEW |