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

Side by Side Diff: base/debug/trace_event_unittest.cc

Issue 12252058: Add a |scope| argument to TRACE_EVENT_INSTANT* and require its presence. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use flags to record scope Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
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 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2"); 318 TRACE_EVENT_END_ETW("TRACE_EVENT_END_ETW call", 0x3344, "extrastring2");
319 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call", 319 TRACE_EVENT_INSTANT_ETW("TRACE_EVENT_INSTANT_ETW call",
320 0x5566, "extrastring3"); 320 0x5566, "extrastring3");
321 321
322 TRACE_EVENT0("all", "TRACE_EVENT0 call"); 322 TRACE_EVENT0("all", "TRACE_EVENT0 call");
323 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1"); 323 TRACE_EVENT1("all", "TRACE_EVENT1 call", "name1", "value1");
324 TRACE_EVENT2("all", "TRACE_EVENT2 call", 324 TRACE_EVENT2("all", "TRACE_EVENT2 call",
325 "name1", "\"value1\"", 325 "name1", "\"value1\"",
326 "name2", "value\\2"); 326 "name2", "value\\2");
327 327
328 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call"); 328 TRACE_EVENT_INSTANT0("all", "TRACE_EVENT_INSTANT0 call",
329 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call", "name1", "value1"); 329 TRACE_EVENT_SCOPE_GLOBAL);
330 TRACE_EVENT_INSTANT1("all", "TRACE_EVENT_INSTANT1 call",
331 TRACE_EVENT_SCOPE_PROCESS, "name1", "value1");
330 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call", 332 TRACE_EVENT_INSTANT2("all", "TRACE_EVENT_INSTANT2 call",
333 TRACE_EVENT_SCOPE_THREAD,
331 "name1", "value1", 334 "name1", "value1",
332 "name2", "value2"); 335 "name2", "value2");
333 336
334 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call"); 337 TRACE_EVENT_BEGIN0("all", "TRACE_EVENT_BEGIN0 call");
335 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1"); 338 TRACE_EVENT_BEGIN1("all", "TRACE_EVENT_BEGIN1 call", "name1", "value1");
336 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call", 339 TRACE_EVENT_BEGIN2("all", "TRACE_EVENT_BEGIN2 call",
337 "name1", "value1", 340 "name1", "value1",
338 "name2", "value2"); 341 "name2", "value2");
339 342
340 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call"); 343 TRACE_EVENT_END0("all", "TRACE_EVENT_END0 call");
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 EXPECT_FIND_("TRACE_EVENT1 call"); 437 EXPECT_FIND_("TRACE_EVENT1 call");
435 EXPECT_SUB_FIND_("name1"); 438 EXPECT_SUB_FIND_("name1");
436 EXPECT_SUB_FIND_("value1"); 439 EXPECT_SUB_FIND_("value1");
437 EXPECT_FIND_("TRACE_EVENT2 call"); 440 EXPECT_FIND_("TRACE_EVENT2 call");
438 EXPECT_SUB_FIND_("name1"); 441 EXPECT_SUB_FIND_("name1");
439 EXPECT_SUB_FIND_("\"value1\""); 442 EXPECT_SUB_FIND_("\"value1\"");
440 EXPECT_SUB_FIND_("name2"); 443 EXPECT_SUB_FIND_("name2");
441 EXPECT_SUB_FIND_("value\\2"); 444 EXPECT_SUB_FIND_("value\\2");
442 445
443 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call"); 446 EXPECT_FIND_("TRACE_EVENT_INSTANT0 call");
447 {
448 std::string scope;
449 EXPECT_TRUE((item && item->GetString("s", &scope)));
450 EXPECT_EQ("g", scope);
451 }
444 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call"); 452 EXPECT_FIND_("TRACE_EVENT_INSTANT1 call");
453 {
454 std::string scope;
455 EXPECT_TRUE((item && item->GetString("s", &scope)));
456 EXPECT_EQ("p", scope);
457 }
445 EXPECT_SUB_FIND_("name1"); 458 EXPECT_SUB_FIND_("name1");
446 EXPECT_SUB_FIND_("value1"); 459 EXPECT_SUB_FIND_("value1");
447 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call"); 460 EXPECT_FIND_("TRACE_EVENT_INSTANT2 call");
461 {
462 std::string scope;
463 EXPECT_TRUE((item && item->GetString("s", &scope)));
464 EXPECT_EQ("t", scope);
465 }
448 EXPECT_SUB_FIND_("name1"); 466 EXPECT_SUB_FIND_("name1");
449 EXPECT_SUB_FIND_("value1"); 467 EXPECT_SUB_FIND_("value1");
450 EXPECT_SUB_FIND_("name2"); 468 EXPECT_SUB_FIND_("name2");
451 EXPECT_SUB_FIND_("value2"); 469 EXPECT_SUB_FIND_("value2");
452 470
453 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call"); 471 EXPECT_FIND_("TRACE_EVENT_BEGIN0 call");
454 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call"); 472 EXPECT_FIND_("TRACE_EVENT_BEGIN1 call");
455 EXPECT_SUB_FIND_("name1"); 473 EXPECT_SUB_FIND_("name1");
456 EXPECT_SUB_FIND_("value1"); 474 EXPECT_SUB_FIND_("value1");
457 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call"); 475 EXPECT_FIND_("TRACE_EVENT_BEGIN2 call");
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
648 std::string id; 666 std::string id;
649 EXPECT_TRUE((item && item->GetString("id", &id))); 667 EXPECT_TRUE((item && item->GetString("id", &id)));
650 EXPECT_EQ(kAsyncId + 1, atoi(id.c_str())); 668 EXPECT_EQ(kAsyncId + 1, atoi(id.c_str()));
651 } 669 }
652 } 670 }
653 671
654 void TraceManyInstantEvents(int thread_id, int num_events, 672 void TraceManyInstantEvents(int thread_id, int num_events,
655 WaitableEvent* task_complete_event) { 673 WaitableEvent* task_complete_event) {
656 for (int i = 0; i < num_events; i++) { 674 for (int i = 0; i < num_events; i++) {
657 TRACE_EVENT_INSTANT2("all", "multi thread event", 675 TRACE_EVENT_INSTANT2("all", "multi thread event",
676 TRACE_EVENT_SCOPE_THREAD,
658 "thread", thread_id, 677 "thread", thread_id,
659 "event", i); 678 "event", i);
660 } 679 }
661 680
662 if (task_complete_event) 681 if (task_complete_event)
663 task_complete_event->Signal(); 682 task_complete_event->Signal();
664 } 683 }
665 684
666 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed, 685 void ValidateInstantEventPresentOnEveryThread(const ListValue& trace_parsed,
667 int num_threads, 686 int num_threads,
(...skipping 22 matching lines...) Expand all
690 EXPECT_FALSE(results[-1][-1]); 709 EXPECT_FALSE(results[-1][-1]);
691 for (int thread = 0; thread < num_threads; thread++) { 710 for (int thread = 0; thread < num_threads; thread++) {
692 for (int event = 0; event < num_events; event++) { 711 for (int event = 0; event < num_events; event++) {
693 EXPECT_TRUE(results[thread][event]); 712 EXPECT_TRUE(results[thread][event]);
694 } 713 }
695 } 714 }
696 } 715 }
697 716
698 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) { 717 void TraceCallsWithCachedCategoryPointersPointers(const char* name_str) {
699 TRACE_EVENT0("category name1", name_str); 718 TRACE_EVENT0("category name1", name_str);
700 TRACE_EVENT_INSTANT0("category name2", name_str); 719 TRACE_EVENT_INSTANT0("category name2", name_str, TRACE_EVENT_SCOPE_THREAD);
701 TRACE_EVENT_BEGIN0("category name3", name_str); 720 TRACE_EVENT_BEGIN0("category name3", name_str);
702 TRACE_EVENT_END0("category name4", name_str); 721 TRACE_EVENT_END0("category name4", name_str);
703 } 722 }
704 723
705 } // namespace 724 } // namespace
706 725
707 void HighResSleepForTraceTest(base::TimeDelta elapsed) { 726 void HighResSleepForTraceTest(base::TimeDelta elapsed) {
708 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; 727 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed;
709 do { 728 do {
710 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); 729 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1));
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 // Cleanup. 823 // Cleanup.
805 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 824 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
806 } 825 }
807 826
808 // Test that categories work. 827 // Test that categories work.
809 TEST_F(TraceEventTestFixture, Categories) { 828 TEST_F(TraceEventTestFixture, Categories) {
810 ManualTestSetUp(); 829 ManualTestSetUp();
811 830
812 // Test that categories that are used can be retrieved whether trace was 831 // Test that categories that are used can be retrieved whether trace was
813 // enabled or disabled when the trace event was encountered. 832 // enabled or disabled when the trace event was encountered.
814 TRACE_EVENT_INSTANT0("c1", "name"); 833 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD);
815 TRACE_EVENT_INSTANT0("c2", "name"); 834 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD);
816 BeginTrace(); 835 BeginTrace();
817 TRACE_EVENT_INSTANT0("c3", "name"); 836 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD);
818 TRACE_EVENT_INSTANT0("c4", "name"); 837 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD);
819 EndTraceAndFlush(); 838 EndTraceAndFlush();
820 std::vector<std::string> cats; 839 std::vector<std::string> cats;
821 TraceLog::GetInstance()->GetKnownCategories(&cats); 840 TraceLog::GetInstance()->GetKnownCategories(&cats);
822 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end()); 841 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c1") != cats.end());
823 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end()); 842 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c2") != cats.end());
824 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end()); 843 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c3") != cats.end());
825 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end()); 844 EXPECT_TRUE(std::find(cats.begin(), cats.end(), "c4") != cats.end());
826 845
827 const std::vector<std::string> empty_categories; 846 const std::vector<std::string> empty_categories;
828 std::vector<std::string> included_categories; 847 std::vector<std::string> included_categories;
829 std::vector<std::string> excluded_categories; 848 std::vector<std::string> excluded_categories;
830 849
831 // Test that category filtering works. 850 // Test that category filtering works.
832 851
833 // Include nonexistent category -> no events 852 // Include nonexistent category -> no events
834 Clear(); 853 Clear();
835 included_categories.clear(); 854 included_categories.clear();
836 included_categories.push_back("not_found823564786"); 855 included_categories.push_back("not_found823564786");
837 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); 856 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories);
838 TRACE_EVENT_INSTANT0("cat1", "name"); 857 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
839 TRACE_EVENT_INSTANT0("cat2", "name"); 858 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
840 EndTraceAndFlush(); 859 EndTraceAndFlush();
841 EXPECT_TRUE(trace_parsed_.empty()); 860 EXPECT_TRUE(trace_parsed_.empty());
842 861
843 // Include existent category -> only events of that category 862 // Include existent category -> only events of that category
844 Clear(); 863 Clear();
845 included_categories.clear(); 864 included_categories.clear();
846 included_categories.push_back("inc"); 865 included_categories.push_back("inc");
847 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); 866 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories);
848 TRACE_EVENT_INSTANT0("inc", "name"); 867 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
849 TRACE_EVENT_INSTANT0("inc2", "name"); 868 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
850 EndTraceAndFlush(); 869 EndTraceAndFlush();
851 EXPECT_TRUE(FindMatchingValue("cat", "inc")); 870 EXPECT_TRUE(FindMatchingValue("cat", "inc"));
852 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); 871 EXPECT_FALSE(FindNonMatchingValue("cat", "inc"));
853 872
854 // Include existent wildcard -> all categories matching wildcard 873 // Include existent wildcard -> all categories matching wildcard
855 Clear(); 874 Clear();
856 included_categories.clear(); 875 included_categories.clear();
857 included_categories.push_back("inc_wildcard_*"); 876 included_categories.push_back("inc_wildcard_*");
858 included_categories.push_back("inc_wildchar_?_end"); 877 included_categories.push_back("inc_wildchar_?_end");
859 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories); 878 TraceLog::GetInstance()->SetEnabled(included_categories, empty_categories);
860 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included"); 879 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included",
861 TRACE_EVENT_INSTANT0("inc_wildcard_", "included"); 880 TRACE_EVENT_SCOPE_THREAD);
862 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included"); 881 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD);
863 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc"); 882 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included",
864 TRACE_EVENT_INSTANT0("cat1", "not_inc"); 883 TRACE_EVENT_SCOPE_THREAD);
865 TRACE_EVENT_INSTANT0("cat2", "not_inc"); 884 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc",
885 TRACE_EVENT_SCOPE_THREAD);
886 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD);
887 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD);
866 EndTraceAndFlush(); 888 EndTraceAndFlush();
867 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); 889 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc"));
868 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); 890 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_"));
869 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); 891 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end"));
870 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); 892 EXPECT_FALSE(FindMatchingValue("name", "not_inc"));
871 893
872 included_categories.clear(); 894 included_categories.clear();
873 895
874 // Exclude nonexistent category -> all events 896 // Exclude nonexistent category -> all events
875 Clear(); 897 Clear();
876 excluded_categories.clear(); 898 excluded_categories.clear();
877 excluded_categories.push_back("not_found823564786"); 899 excluded_categories.push_back("not_found823564786");
878 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); 900 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories);
879 TRACE_EVENT_INSTANT0("cat1", "name"); 901 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
880 TRACE_EVENT_INSTANT0("cat2", "name"); 902 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
881 EndTraceAndFlush(); 903 EndTraceAndFlush();
882 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); 904 EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
883 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); 905 EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
884 906
885 // Exclude existent category -> only events of other categories 907 // Exclude existent category -> only events of other categories
886 Clear(); 908 Clear();
887 excluded_categories.clear(); 909 excluded_categories.clear();
888 excluded_categories.push_back("inc"); 910 excluded_categories.push_back("inc");
889 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); 911 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories);
890 TRACE_EVENT_INSTANT0("inc", "name"); 912 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
891 TRACE_EVENT_INSTANT0("inc2", "name"); 913 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
892 EndTraceAndFlush(); 914 EndTraceAndFlush();
893 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); 915 EXPECT_TRUE(FindMatchingValue("cat", "inc2"));
894 EXPECT_FALSE(FindMatchingValue("cat", "inc")); 916 EXPECT_FALSE(FindMatchingValue("cat", "inc"));
895 917
896 // Exclude existent wildcard -> all categories not matching wildcard 918 // Exclude existent wildcard -> all categories not matching wildcard
897 Clear(); 919 Clear();
898 excluded_categories.clear(); 920 excluded_categories.clear();
899 excluded_categories.push_back("inc_wildcard_*"); 921 excluded_categories.push_back("inc_wildcard_*");
900 excluded_categories.push_back("inc_wildchar_?_end"); 922 excluded_categories.push_back("inc_wildchar_?_end");
901 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories); 923 TraceLog::GetInstance()->SetEnabled(empty_categories, excluded_categories);
902 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc"); 924 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", TRACE_EVENT_SCOPE_THREAD);
903 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc"); 925 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", TRACE_EVENT_SCOPE_THREAD);
904 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc"); 926 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc",
905 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included"); 927 TRACE_EVENT_SCOPE_THREAD);
906 TRACE_EVENT_INSTANT0("cat1", "included"); 928 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included",
907 TRACE_EVENT_INSTANT0("cat2", "included"); 929 TRACE_EVENT_SCOPE_THREAD);
930 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD);
931 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD);
908 EndTraceAndFlush(); 932 EndTraceAndFlush();
909 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); 933 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end"));
910 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); 934 EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
911 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); 935 EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
912 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); 936 EXPECT_FALSE(FindMatchingValue("name", "not_inc"));
913 } 937 }
914 938
915 939
916 // Test EVENT_WATCH_NOTIFICATION 940 // Test EVENT_WATCH_NOTIFICATION
917 TEST_F(TraceEventTestFixture, EventWatchNotification) { 941 TEST_F(TraceEventTestFixture, EventWatchNotification) {
918 ManualTestSetUp(); 942 ManualTestSetUp();
919 943
920 // Basic one occurrence. 944 // Basic one occurrence.
921 BeginTrace(); 945 BeginTrace();
922 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 946 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
923 TRACE_EVENT_INSTANT0("cat", "event"); 947 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
924 EndTraceAndFlush(); 948 EndTraceAndFlush();
925 EXPECT_EQ(event_watch_notification_, 1); 949 EXPECT_EQ(event_watch_notification_, 1);
926 950
927 // Basic one occurrence before Set. 951 // Basic one occurrence before Set.
928 BeginTrace(); 952 BeginTrace();
929 TRACE_EVENT_INSTANT0("cat", "event"); 953 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
930 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 954 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
931 EndTraceAndFlush(); 955 EndTraceAndFlush();
932 EXPECT_EQ(event_watch_notification_, 1); 956 EXPECT_EQ(event_watch_notification_, 1);
933 957
934 // Auto-reset after end trace. 958 // Auto-reset after end trace.
935 BeginTrace(); 959 BeginTrace();
936 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 960 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
937 EndTraceAndFlush(); 961 EndTraceAndFlush();
938 BeginTrace(); 962 BeginTrace();
939 TRACE_EVENT_INSTANT0("cat", "event"); 963 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
940 EndTraceAndFlush(); 964 EndTraceAndFlush();
941 EXPECT_EQ(event_watch_notification_, 0); 965 EXPECT_EQ(event_watch_notification_, 0);
942 966
943 // Multiple occurrence. 967 // Multiple occurrence.
944 BeginTrace(); 968 BeginTrace();
945 int num_occurrences = 5; 969 int num_occurrences = 5;
946 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 970 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
947 for (int i = 0; i < num_occurrences; ++i) 971 for (int i = 0; i < num_occurrences; ++i)
948 TRACE_EVENT_INSTANT0("cat", "event"); 972 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
949 EndTraceAndFlush(); 973 EndTraceAndFlush();
950 EXPECT_EQ(event_watch_notification_, num_occurrences); 974 EXPECT_EQ(event_watch_notification_, num_occurrences);
951 975
952 // Wrong category. 976 // Wrong category.
953 BeginTrace(); 977 BeginTrace();
954 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 978 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
955 TRACE_EVENT_INSTANT0("wrong_cat", "event"); 979 TRACE_EVENT_INSTANT0("wrong_cat", "event", TRACE_EVENT_SCOPE_THREAD);
956 EndTraceAndFlush(); 980 EndTraceAndFlush();
957 EXPECT_EQ(event_watch_notification_, 0); 981 EXPECT_EQ(event_watch_notification_, 0);
958 982
959 // Wrong name. 983 // Wrong name.
960 BeginTrace(); 984 BeginTrace();
961 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 985 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
962 TRACE_EVENT_INSTANT0("cat", "wrong_event"); 986 TRACE_EVENT_INSTANT0("cat", "wrong_event", TRACE_EVENT_SCOPE_THREAD);
963 EndTraceAndFlush(); 987 EndTraceAndFlush();
964 EXPECT_EQ(event_watch_notification_, 0); 988 EXPECT_EQ(event_watch_notification_, 0);
965 989
966 // Canceled. 990 // Canceled.
967 BeginTrace(); 991 BeginTrace();
968 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 992 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
969 TraceLog::GetInstance()->CancelWatchEvent(); 993 TraceLog::GetInstance()->CancelWatchEvent();
970 TRACE_EVENT_INSTANT0("cat", "event"); 994 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
971 EndTraceAndFlush(); 995 EndTraceAndFlush();
972 EXPECT_EQ(event_watch_notification_, 0); 996 EXPECT_EQ(event_watch_notification_, 0);
973 } 997 }
974 998
975 // Test ASYNC_BEGIN/END events 999 // Test ASYNC_BEGIN/END events
976 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { 1000 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) {
977 ManualTestSetUp(); 1001 ManualTestSetUp();
978 BeginTrace(); 1002 BeginTrace();
979 1003
980 unsigned long long id = 0xfeedbeeffeedbeefull; 1004 unsigned long long id = 0xfeedbeeffeedbeefull;
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 } 1239 }
1216 } 1240 }
1217 } 1241 }
1218 1242
1219 TEST_F(TraceEventTestFixture, ThreadNameChanges) { 1243 TEST_F(TraceEventTestFixture, ThreadNameChanges) {
1220 ManualTestSetUp(); 1244 ManualTestSetUp();
1221 1245
1222 BeginTrace(); 1246 BeginTrace();
1223 1247
1224 PlatformThread::SetName(""); 1248 PlatformThread::SetName("");
1225 TRACE_EVENT_INSTANT0("drink", "water"); 1249 TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD);
1226 1250
1227 PlatformThread::SetName("cafe"); 1251 PlatformThread::SetName("cafe");
1228 TRACE_EVENT_INSTANT0("drink", "coffee"); 1252 TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD);
1229 1253
1230 PlatformThread::SetName("shop"); 1254 PlatformThread::SetName("shop");
1231 // No event here, so won't appear in combined name. 1255 // No event here, so won't appear in combined name.
1232 1256
1233 PlatformThread::SetName("pub"); 1257 PlatformThread::SetName("pub");
1234 TRACE_EVENT_INSTANT0("drink", "beer"); 1258 TRACE_EVENT_INSTANT0("drink", "beer", TRACE_EVENT_SCOPE_THREAD);
1235 TRACE_EVENT_INSTANT0("drink", "wine"); 1259 TRACE_EVENT_INSTANT0("drink", "wine", TRACE_EVENT_SCOPE_THREAD);
1236 1260
1237 PlatformThread::SetName(" bar"); 1261 PlatformThread::SetName(" bar");
1238 TRACE_EVENT_INSTANT0("drink", "whisky"); 1262 TRACE_EVENT_INSTANT0("drink", "whisky", TRACE_EVENT_SCOPE_THREAD);
1239 1263
1240 EndTraceAndFlush(); 1264 EndTraceAndFlush();
1241 1265
1242 std::vector<const DictionaryValue*> items = 1266 std::vector<const DictionaryValue*> items =
1243 FindTraceEntries(trace_parsed_, "thread_name"); 1267 FindTraceEntries(trace_parsed_, "thread_name");
1244 EXPECT_EQ(1u, items.size()); 1268 EXPECT_EQ(1u, items.size());
1245 ASSERT_GT(items.size(), 0u); 1269 ASSERT_GT(items.size(), 0u);
1246 const DictionaryValue* item = items[0]; 1270 const DictionaryValue* item = items[0];
1247 ASSERT_TRUE(item); 1271 ASSERT_TRUE(item);
1248 int tid; 1272 int tid;
(...skipping 18 matching lines...) Expand all
1267 // recorded after the system is started again. 1291 // recorded after the system is started again.
1268 for (int i = 0; i < 4; i++) { 1292 for (int i = 0; i < 4; i++) {
1269 // Scope to contain the then destroy the TraceLog singleton. 1293 // Scope to contain the then destroy the TraceLog singleton.
1270 { 1294 {
1271 base::ShadowingAtExitManager exit_manager_will_destroy_singletons; 1295 base::ShadowingAtExitManager exit_manager_will_destroy_singletons;
1272 1296
1273 // Setup TraceLog singleton inside this test's exit manager scope 1297 // Setup TraceLog singleton inside this test's exit manager scope
1274 // so that it will be destroyed when this scope closes. 1298 // so that it will be destroyed when this scope closes.
1275 ManualTestSetUp(); 1299 ManualTestSetUp();
1276 1300
1277 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled"); 1301 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled",
1302 TRACE_EVENT_SCOPE_THREAD);
1278 1303
1279 BeginTrace(); 1304 BeginTrace();
1280 1305
1281 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled"); 1306 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled",
1307 TRACE_EVENT_SCOPE_THREAD);
1282 // Trace calls that will cache pointers to categories; they're valid here 1308 // Trace calls that will cache pointers to categories; they're valid here
1283 TraceCallsWithCachedCategoryPointersPointers( 1309 TraceCallsWithCachedCategoryPointersPointers(
1284 "is recorded 2; system has been enabled"); 1310 "is recorded 2; system has been enabled");
1285 1311
1286 EndTraceAndFlush(); 1312 EndTraceAndFlush();
1287 } // scope to destroy singleton 1313 } // scope to destroy singleton
1288 ASSERT_FALSE(TraceLog::GetInstance()); 1314 ASSERT_FALSE(TraceLog::GetInstance());
1289 1315
1290 // Now that singleton is destroyed, check what trace events were recorded 1316 // Now that singleton is destroyed, check what trace events were recorded
1291 const DictionaryValue* item = NULL; 1317 const DictionaryValue* item = NULL;
1292 ListValue& trace_parsed = trace_parsed_; 1318 ListValue& trace_parsed = trace_parsed_;
1293 EXPECT_FIND_("is recorded 1"); 1319 EXPECT_FIND_("is recorded 1");
1294 EXPECT_FIND_("is recorded 2"); 1320 EXPECT_FIND_("is recorded 2");
1295 EXPECT_NOT_FIND_("not recorded"); 1321 EXPECT_NOT_FIND_("not recorded");
1296 1322
1297 // Make additional trace event calls on the shutdown system. They should 1323 // Make additional trace event calls on the shutdown system. They should
1298 // all pass cleanly, but the data not be recorded. We'll verify that next 1324 // all pass cleanly, but the data not be recorded. We'll verify that next
1299 // time around the loop (the only way to flush the trace buffers). 1325 // time around the loop (the only way to flush the trace buffers).
1300 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL); 1326 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL);
1301 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL); 1327 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL);
1302 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL); 1328 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL);
1303 TRACE_EVENT0("all", "not recorded; system shutdown"); 1329 TRACE_EVENT0("all", "not recorded; system shutdown");
1304 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown"); 1330 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown",
1331 TRACE_EVENT_SCOPE_THREAD);
1305 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown"); 1332 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown");
1306 TRACE_EVENT_END0("all", "not recorded; system shutdown"); 1333 TRACE_EVENT_END0("all", "not recorded; system shutdown");
1307 1334
1308 TRACE_EVENT0("new category 0!", "not recorded; system shutdown"); 1335 TRACE_EVENT0("new category 0!", "not recorded; system shutdown");
1309 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown"); 1336 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown",
1337 TRACE_EVENT_SCOPE_THREAD);
1310 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown"); 1338 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown");
1311 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown"); 1339 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown");
1312 1340
1313 // Cached categories should be safe to check, and still disable traces 1341 // Cached categories should be safe to check, and still disable traces
1314 TraceCallsWithCachedCategoryPointersPointers( 1342 TraceCallsWithCachedCategoryPointersPointers(
1315 "not recorded; system shutdown"); 1343 "not recorded; system shutdown");
1316 } 1344 }
1317 } 1345 }
1318 1346
1319 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { 1347 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) {
1320 // Test that the TRACE_EVENT macros do not deep-copy their string. If they 1348 // Test that the TRACE_EVENT macros do not deep-copy their string. If they
1321 // do so it may indicate a performance regression, but more-over it would 1349 // do so it may indicate a performance regression, but more-over it would
1322 // make the DEEP_COPY overloads redundant. 1350 // make the DEEP_COPY overloads redundant.
1323 ManualTestSetUp(); 1351 ManualTestSetUp();
1324 1352
1325 std::string name_string("event name"); 1353 std::string name_string("event name");
1326 1354
1327 BeginTrace(); 1355 BeginTrace();
1328 TRACE_EVENT_INSTANT0("category", name_string.c_str()); 1356 TRACE_EVENT_INSTANT0("category", name_string.c_str(),
1357 TRACE_EVENT_SCOPE_THREAD);
1329 1358
1330 // Modify the string in place (a wholesale reassignment may leave the old 1359 // Modify the string in place (a wholesale reassignment may leave the old
1331 // string intact on the heap). 1360 // string intact on the heap).
1332 name_string[0] = '@'; 1361 name_string[0] = '@';
1333 1362
1334 EndTraceAndFlush(); 1363 EndTraceAndFlush();
1335 1364
1336 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); 1365 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name"));
1337 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); 1366 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str()));
1338 } 1367 }
1339 1368
1340 TEST_F(TraceEventTestFixture, DeepCopy) { 1369 TEST_F(TraceEventTestFixture, DeepCopy) {
1341 ManualTestSetUp(); 1370 ManualTestSetUp();
1342 1371
1343 static const char kOriginalName1[] = "name1"; 1372 static const char kOriginalName1[] = "name1";
1344 static const char kOriginalName2[] = "name2"; 1373 static const char kOriginalName2[] = "name2";
1345 static const char kOriginalName3[] = "name3"; 1374 static const char kOriginalName3[] = "name3";
1346 std::string name1(kOriginalName1); 1375 std::string name1(kOriginalName1);
1347 std::string name2(kOriginalName2); 1376 std::string name2(kOriginalName2);
1348 std::string name3(kOriginalName3); 1377 std::string name3(kOriginalName3);
1349 std::string arg1("arg1"); 1378 std::string arg1("arg1");
1350 std::string arg2("arg2"); 1379 std::string arg2("arg2");
1351 std::string val1("val1"); 1380 std::string val1("val1");
1352 std::string val2("val2"); 1381 std::string val2("val2");
1353 1382
1354 BeginTrace(); 1383 BeginTrace();
1355 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str()); 1384 TRACE_EVENT_COPY_INSTANT0("category", name1.c_str(),
1385 TRACE_EVENT_SCOPE_THREAD);
1356 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(), 1386 TRACE_EVENT_COPY_BEGIN1("category", name2.c_str(),
1357 arg1.c_str(), 5); 1387 arg1.c_str(), 5);
1358 TRACE_EVENT_COPY_END2("category", name3.c_str(), 1388 TRACE_EVENT_COPY_END2("category", name3.c_str(),
1359 arg1.c_str(), val1, 1389 arg1.c_str(), val1,
1360 arg2.c_str(), val2); 1390 arg2.c_str(), val2);
1361 1391
1362 // As per NormallyNoDeepCopy, modify the strings in place. 1392 // As per NormallyNoDeepCopy, modify the strings in place.
1363 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@'; 1393 name1[0] = name2[0] = name3[0] = arg1[0] = arg2[0] = val1[0] = val2[0] = '@';
1364 1394
1365 EndTraceAndFlush(); 1395 EndTraceAndFlush();
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1409 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); 1439 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]");
1410 } 1440 }
1411 1441
1412 // Test that trace_event parameters are not evaluated if the tracing 1442 // Test that trace_event parameters are not evaluated if the tracing
1413 // system is disabled. 1443 // system is disabled.
1414 TEST_F(TraceEventTestFixture, TracingIsLazy) { 1444 TEST_F(TraceEventTestFixture, TracingIsLazy) {
1415 ManualTestSetUp(); 1445 ManualTestSetUp();
1416 BeginTrace(); 1446 BeginTrace();
1417 1447
1418 int a = 0; 1448 int a = 0;
1419 TRACE_EVENT_INSTANT1("category", "test", "a", a++); 1449 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
1420 EXPECT_EQ(1, a); 1450 EXPECT_EQ(1, a);
1421 1451
1422 TraceLog::GetInstance()->SetDisabled(); 1452 TraceLog::GetInstance()->SetDisabled();
1423 1453
1424 TRACE_EVENT_INSTANT1("category", "test", "a", a++); 1454 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
1425 EXPECT_EQ(1, a); 1455 EXPECT_EQ(1, a);
1426 1456
1427 EndTraceAndFlush(); 1457 EndTraceAndFlush();
1428 } 1458 }
1429 1459
1430 TEST_F(TraceEventTestFixture, TraceEnableDisable) { 1460 TEST_F(TraceEventTestFixture, TraceEnableDisable) {
1431 ManualTestSetUp(); 1461 ManualTestSetUp();
1432 1462
1433 TraceLog* trace_log = TraceLog::GetInstance(); 1463 TraceLog* trace_log = TraceLog::GetInstance();
1434 trace_log->SetEnabled(std::string()); 1464 trace_log->SetEnabled(std::string());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1473 trace_log->SetEnabled(std::string("moo")); 1503 trace_log->SetEnabled(std::string("moo"));
1474 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz")); 1504 EXPECT_TRUE(*trace_log->GetCategoryEnabled("baz"));
1475 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo")); 1505 EXPECT_TRUE(*trace_log->GetCategoryEnabled("moo"));
1476 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo")); 1506 EXPECT_TRUE(*trace_log->GetCategoryEnabled("foo"));
1477 trace_log->SetDisabled(); 1507 trace_log->SetDisabled();
1478 trace_log->SetDisabled(); 1508 trace_log->SetDisabled();
1479 } 1509 }
1480 1510
1481 } // namespace debug 1511 } // namespace debug
1482 } // namespace base 1512 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698