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

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

Issue 109933006: Implement sampling profiler (chromium side change) (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 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
« no previous file with comments | « base/debug/trace_event_impl.cc ('k') | base/test/trace_event_analyzer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 json_output_.json_output.clear(); 71 json_output_.json_output.clear();
72 } 72 }
73 73
74 void BeginTrace() { 74 void BeginTrace() {
75 BeginSpecificTrace("*"); 75 BeginSpecificTrace("*");
76 } 76 }
77 77
78 void BeginSpecificTrace(const std::string& filter) { 78 void BeginSpecificTrace(const std::string& filter) {
79 event_watch_notification_ = 0; 79 event_watch_notification_ = 0;
80 TraceLog::GetInstance()->SetEnabled(CategoryFilter(filter), 80 TraceLog::GetInstance()->SetEnabled(CategoryFilter(filter),
81 base::debug::TraceLog::RECORDING_MODE,
81 TraceLog::RECORD_UNTIL_FULL); 82 TraceLog::RECORD_UNTIL_FULL);
82 } 83 }
83 84
84 void EndTraceAndFlush() { 85 void EndTraceAndFlush() {
85 WaitableEvent flush_complete_event(false, false); 86 WaitableEvent flush_complete_event(false, false);
86 EndTraceAndFlushAsync(&flush_complete_event); 87 EndTraceAndFlushAsync(&flush_complete_event);
87 flush_complete_event.Wait(); 88 flush_complete_event.Wait();
88 } 89 }
89 90
90 // Used when testing thread-local buffers which requires the thread initiating 91 // Used when testing thread-local buffers which requires the thread initiating
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 void HighResSleepForTraceTest(base::TimeDelta elapsed) { 847 void HighResSleepForTraceTest(base::TimeDelta elapsed) {
847 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; 848 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed;
848 do { 849 do {
849 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); 850 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1));
850 } while (base::TimeTicks::HighResNow() < end_time); 851 } while (base::TimeTicks::HighResNow() < end_time);
851 } 852 }
852 853
853 // Simple Test for emitting data and validating it was received. 854 // Simple Test for emitting data and validating it was received.
854 TEST_F(TraceEventTestFixture, DataCaptured) { 855 TEST_F(TraceEventTestFixture, DataCaptured) {
855 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 856 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
857 base::debug::TraceLog::RECORDING_MODE,
856 TraceLog::RECORD_UNTIL_FULL); 858 TraceLog::RECORD_UNTIL_FULL);
857 859
858 TraceWithAllMacroVariants(NULL); 860 TraceWithAllMacroVariants(NULL);
859 861
860 EndTraceAndFlush(); 862 EndTraceAndFlush();
861 863
862 ValidateAllTraceMacrosCreatedData(trace_parsed_); 864 ValidateAllTraceMacrosCreatedData(trace_parsed_);
863 } 865 }
864 866
865 class MockEnabledStateChangedObserver : 867 class MockEnabledStateChangedObserver :
866 public base::debug::TraceLog::EnabledStateObserver { 868 public base::debug::TraceLog::EnabledStateObserver {
867 public: 869 public:
868 MOCK_METHOD0(OnTraceLogEnabled, void()); 870 MOCK_METHOD0(OnTraceLogEnabled, void());
869 MOCK_METHOD0(OnTraceLogDisabled, void()); 871 MOCK_METHOD0(OnTraceLogDisabled, void());
870 }; 872 };
871 873
872 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { 874 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
873 MockEnabledStateChangedObserver observer; 875 MockEnabledStateChangedObserver observer;
874 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 876 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
875 877
876 EXPECT_CALL(observer, OnTraceLogEnabled()) 878 EXPECT_CALL(observer, OnTraceLogEnabled())
877 .Times(1); 879 .Times(1);
878 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 880 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
881 base::debug::TraceLog::RECORDING_MODE,
879 TraceLog::RECORD_UNTIL_FULL); 882 TraceLog::RECORD_UNTIL_FULL);
880 testing::Mock::VerifyAndClear(&observer); 883 testing::Mock::VerifyAndClear(&observer);
881 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 884 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
882 885
883 // Cleanup. 886 // Cleanup.
884 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 887 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
885 TraceLog::GetInstance()->SetDisabled(); 888 TraceLog::GetInstance()->SetDisabled();
886 } 889 }
887 890
888 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { 891 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
889 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 892 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
893 base::debug::TraceLog::RECORDING_MODE,
890 TraceLog::RECORD_UNTIL_FULL); 894 TraceLog::RECORD_UNTIL_FULL);
891 895
892 testing::StrictMock<MockEnabledStateChangedObserver> observer; 896 testing::StrictMock<MockEnabledStateChangedObserver> observer;
893 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 897 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
894 898
895 EXPECT_CALL(observer, OnTraceLogEnabled()) 899 EXPECT_CALL(observer, OnTraceLogEnabled())
896 .Times(0); 900 .Times(0);
897 EXPECT_CALL(observer, OnTraceLogDisabled()) 901 EXPECT_CALL(observer, OnTraceLogDisabled())
898 .Times(0); 902 .Times(0);
899 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 903 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
904 base::debug::TraceLog::RECORDING_MODE,
900 TraceLog::RECORD_UNTIL_FULL); 905 TraceLog::RECORD_UNTIL_FULL);
901 testing::Mock::VerifyAndClear(&observer); 906 testing::Mock::VerifyAndClear(&observer);
902 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 907 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
903 908
904 // Cleanup. 909 // Cleanup.
905 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 910 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
906 TraceLog::GetInstance()->SetDisabled(); 911 TraceLog::GetInstance()->SetDisabled();
907 TraceLog::GetInstance()->SetDisabled(); 912 TraceLog::GetInstance()->SetDisabled();
908 } 913 }
909 914
910 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { 915 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) {
911 CategoryFilter cf_inc_all("*"); 916 CategoryFilter cf_inc_all("*");
912 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 917 TraceLog::GetInstance()->SetEnabled(cf_inc_all,
913 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 918 base::debug::TraceLog::RECORDING_MODE,
919 TraceLog::RECORD_UNTIL_FULL);
920 TraceLog::GetInstance()->SetEnabled(cf_inc_all,
921 base::debug::TraceLog::RECORDING_MODE,
922 TraceLog::RECORD_UNTIL_FULL);
914 923
915 testing::StrictMock<MockEnabledStateChangedObserver> observer; 924 testing::StrictMock<MockEnabledStateChangedObserver> observer;
916 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 925 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
917 926
918 EXPECT_CALL(observer, OnTraceLogEnabled()) 927 EXPECT_CALL(observer, OnTraceLogEnabled())
919 .Times(0); 928 .Times(0);
920 EXPECT_CALL(observer, OnTraceLogDisabled()) 929 EXPECT_CALL(observer, OnTraceLogDisabled())
921 .Times(1); 930 .Times(1);
922 TraceLog::GetInstance()->SetDisabled(); 931 TraceLog::GetInstance()->SetDisabled();
923 testing::Mock::VerifyAndClear(&observer); 932 testing::Mock::VerifyAndClear(&observer);
924 933
925 // Cleanup. 934 // Cleanup.
926 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 935 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
927 TraceLog::GetInstance()->SetDisabled(); 936 TraceLog::GetInstance()->SetDisabled();
928 } 937 }
929 938
930 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { 939 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
931 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 940 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
941 base::debug::TraceLog::RECORDING_MODE,
932 TraceLog::RECORD_UNTIL_FULL); 942 TraceLog::RECORD_UNTIL_FULL);
933 943
934 MockEnabledStateChangedObserver observer; 944 MockEnabledStateChangedObserver observer;
935 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 945 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
936 946
937 EXPECT_CALL(observer, OnTraceLogDisabled()) 947 EXPECT_CALL(observer, OnTraceLogDisabled())
938 .Times(1); 948 .Times(1);
939 TraceLog::GetInstance()->SetDisabled(); 949 TraceLog::GetInstance()->SetDisabled();
940 testing::Mock::VerifyAndClear(&observer); 950 testing::Mock::VerifyAndClear(&observer);
941 951
(...skipping 16 matching lines...) Expand all
958 virtual void OnTraceLogDisabled() OVERRIDE { 968 virtual void OnTraceLogDisabled() OVERRIDE {
959 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 969 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
960 } 970 }
961 }; 971 };
962 972
963 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { 973 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) {
964 AfterStateChangeEnabledStateObserver observer; 974 AfterStateChangeEnabledStateObserver observer;
965 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 975 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
966 976
967 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 977 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
978 base::debug::TraceLog::RECORDING_MODE,
968 TraceLog::RECORD_UNTIL_FULL); 979 TraceLog::RECORD_UNTIL_FULL);
969 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 980 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
970 981
971 TraceLog::GetInstance()->SetDisabled(); 982 TraceLog::GetInstance()->SetDisabled();
972 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 983 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
973 984
974 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 985 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
975 } 986 }
976 987
977 // Tests that a state observer can remove itself during a callback. 988 // Tests that a state observer can remove itself during a callback.
(...skipping 12 matching lines...) Expand all
990 }; 1001 };
991 1002
992 TEST_F(TraceEventTestFixture, SelfRemovingObserver) { 1003 TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
993 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); 1004 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
994 1005
995 SelfRemovingEnabledStateObserver observer; 1006 SelfRemovingEnabledStateObserver observer;
996 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 1007 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
997 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); 1008 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest());
998 1009
999 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1010 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1011 base::debug::TraceLog::RECORDING_MODE,
1000 TraceLog::RECORD_UNTIL_FULL); 1012 TraceLog::RECORD_UNTIL_FULL);
1001 TraceLog::GetInstance()->SetDisabled(); 1013 TraceLog::GetInstance()->SetDisabled();
1002 // The observer removed itself on disable. 1014 // The observer removed itself on disable.
1003 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); 1015 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
1004 } 1016 }
1005 1017
1006 bool IsNewTrace() { 1018 bool IsNewTrace() {
1007 bool is_new_trace; 1019 bool is_new_trace;
1008 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); 1020 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
1009 return is_new_trace; 1021 return is_new_trace;
1010 } 1022 }
1011 1023
1012 TEST_F(TraceEventTestFixture, NewTraceRecording) { 1024 TEST_F(TraceEventTestFixture, NewTraceRecording) {
1013 ASSERT_FALSE(IsNewTrace()); 1025 ASSERT_FALSE(IsNewTrace());
1014 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1026 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1027 base::debug::TraceLog::RECORDING_MODE,
1015 TraceLog::RECORD_UNTIL_FULL); 1028 TraceLog::RECORD_UNTIL_FULL);
1016 // First call to IsNewTrace() should succeed. But, the second shouldn't. 1029 // First call to IsNewTrace() should succeed. But, the second shouldn't.
1017 ASSERT_TRUE(IsNewTrace()); 1030 ASSERT_TRUE(IsNewTrace());
1018 ASSERT_FALSE(IsNewTrace()); 1031 ASSERT_FALSE(IsNewTrace());
1019 EndTraceAndFlush(); 1032 EndTraceAndFlush();
1020 1033
1021 // IsNewTrace() should definitely be false now. 1034 // IsNewTrace() should definitely be false now.
1022 ASSERT_FALSE(IsNewTrace()); 1035 ASSERT_FALSE(IsNewTrace());
1023 1036
1024 // Start another trace. IsNewTrace() should become true again, briefly, as 1037 // Start another trace. IsNewTrace() should become true again, briefly, as
1025 // before. 1038 // before.
1026 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1039 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1040 base::debug::TraceLog::RECORDING_MODE,
1027 TraceLog::RECORD_UNTIL_FULL); 1041 TraceLog::RECORD_UNTIL_FULL);
1028 ASSERT_TRUE(IsNewTrace()); 1042 ASSERT_TRUE(IsNewTrace());
1029 ASSERT_FALSE(IsNewTrace()); 1043 ASSERT_FALSE(IsNewTrace());
1030 1044
1031 // Cleanup. 1045 // Cleanup.
1032 EndTraceAndFlush(); 1046 EndTraceAndFlush();
1033 } 1047 }
1034 1048
1035 1049
1036 // Test that categories work. 1050 // Test that categories work.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1073 const std::vector<std::string> empty_categories; 1087 const std::vector<std::string> empty_categories;
1074 std::vector<std::string> included_categories; 1088 std::vector<std::string> included_categories;
1075 std::vector<std::string> excluded_categories; 1089 std::vector<std::string> excluded_categories;
1076 1090
1077 // Test that category filtering works. 1091 // Test that category filtering works.
1078 1092
1079 // Include nonexistent category -> no events 1093 // Include nonexistent category -> no events
1080 Clear(); 1094 Clear();
1081 included_categories.clear(); 1095 included_categories.clear();
1082 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"), 1096 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"),
1097 base::debug::TraceLog::RECORDING_MODE,
1083 TraceLog::RECORD_UNTIL_FULL); 1098 TraceLog::RECORD_UNTIL_FULL);
1084 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); 1099 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
1085 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); 1100 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
1086 EndTraceAndFlush(); 1101 EndTraceAndFlush();
1087 EXPECT_TRUE(trace_parsed_.empty()); 1102 EXPECT_TRUE(trace_parsed_.empty());
1088 1103
1089 // Include existent category -> only events of that category 1104 // Include existent category -> only events of that category
1090 Clear(); 1105 Clear();
1091 included_categories.clear(); 1106 included_categories.clear();
1092 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"), 1107 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"),
1108 base::debug::TraceLog::RECORDING_MODE,
1093 TraceLog::RECORD_UNTIL_FULL); 1109 TraceLog::RECORD_UNTIL_FULL);
1094 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); 1110 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
1095 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); 1111 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
1096 EndTraceAndFlush(); 1112 EndTraceAndFlush();
1097 EXPECT_TRUE(FindMatchingValue("cat", "inc")); 1113 EXPECT_TRUE(FindMatchingValue("cat", "inc"));
1098 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); 1114 EXPECT_FALSE(FindNonMatchingValue("cat", "inc"));
1099 1115
1100 // Include existent wildcard -> all categories matching wildcard 1116 // Include existent wildcard -> all categories matching wildcard
1101 Clear(); 1117 Clear();
1102 included_categories.clear(); 1118 included_categories.clear();
1103 TraceLog::GetInstance()->SetEnabled( 1119 TraceLog::GetInstance()->SetEnabled(
1104 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"), 1120 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"),
1121 base::debug::TraceLog::RECORDING_MODE,
1105 TraceLog::RECORD_UNTIL_FULL); 1122 TraceLog::RECORD_UNTIL_FULL);
1106 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", 1123 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included",
1107 TRACE_EVENT_SCOPE_THREAD); 1124 TRACE_EVENT_SCOPE_THREAD);
1108 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); 1125 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD);
1109 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", 1126 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included",
1110 TRACE_EVENT_SCOPE_THREAD); 1127 TRACE_EVENT_SCOPE_THREAD);
1111 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", 1128 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc",
1112 TRACE_EVENT_SCOPE_THREAD); 1129 TRACE_EVENT_SCOPE_THREAD);
1113 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); 1130 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD);
1114 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); 1131 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD);
1115 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included", 1132 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included",
1116 TRACE_EVENT_SCOPE_THREAD); 1133 TRACE_EVENT_SCOPE_THREAD);
1117 TRACE_EVENT_INSTANT0( 1134 TRACE_EVENT_INSTANT0(
1118 "non_included_category,inc_wildcard_category", "included", 1135 "non_included_category,inc_wildcard_category", "included",
1119 TRACE_EVENT_SCOPE_THREAD); 1136 TRACE_EVENT_SCOPE_THREAD);
1120 EndTraceAndFlush(); 1137 EndTraceAndFlush();
1121 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); 1138 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc"));
1122 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); 1139 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_"));
1123 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); 1140 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end"));
1124 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); 1141 EXPECT_FALSE(FindMatchingValue("name", "not_inc"));
1125 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); 1142 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category"));
1126 EXPECT_TRUE(FindMatchingValue("cat", 1143 EXPECT_TRUE(FindMatchingValue("cat",
1127 "non_included_category,inc_wildcard_category")); 1144 "non_included_category,inc_wildcard_category"));
1128 1145
1129 included_categories.clear(); 1146 included_categories.clear();
1130 1147
1131 // Exclude nonexistent category -> all events 1148 // Exclude nonexistent category -> all events
1132 Clear(); 1149 Clear();
1133 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"), 1150 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"),
1151 base::debug::TraceLog::RECORDING_MODE,
1134 TraceLog::RECORD_UNTIL_FULL); 1152 TraceLog::RECORD_UNTIL_FULL);
1135 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); 1153 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
1136 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); 1154 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
1137 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD); 1155 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD);
1138 EndTraceAndFlush(); 1156 EndTraceAndFlush();
1139 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); 1157 EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
1140 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); 1158 EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
1141 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); 1159 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2"));
1142 1160
1143 // Exclude existent category -> only events of other categories 1161 // Exclude existent category -> only events of other categories
1144 Clear(); 1162 Clear();
1145 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"), 1163 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"),
1164 base::debug::TraceLog::RECORDING_MODE,
1146 TraceLog::RECORD_UNTIL_FULL); 1165 TraceLog::RECORD_UNTIL_FULL);
1147 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); 1166 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
1148 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); 1167 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
1149 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD); 1168 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD);
1150 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD); 1169 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD);
1151 EndTraceAndFlush(); 1170 EndTraceAndFlush();
1152 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); 1171 EXPECT_TRUE(FindMatchingValue("cat", "inc2"));
1153 EXPECT_FALSE(FindMatchingValue("cat", "inc")); 1172 EXPECT_FALSE(FindMatchingValue("cat", "inc"));
1154 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); 1173 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc"));
1155 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); 1174 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2"));
1156 1175
1157 // Exclude existent wildcard -> all categories not matching wildcard 1176 // Exclude existent wildcard -> all categories not matching wildcard
1158 Clear(); 1177 Clear();
1159 TraceLog::GetInstance()->SetEnabled( 1178 TraceLog::GetInstance()->SetEnabled(
1160 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"), 1179 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"),
1180 base::debug::TraceLog::RECORDING_MODE,
1161 TraceLog::RECORD_UNTIL_FULL); 1181 TraceLog::RECORD_UNTIL_FULL);
1162 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", 1182 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc",
1163 TRACE_EVENT_SCOPE_THREAD); 1183 TRACE_EVENT_SCOPE_THREAD);
1164 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", 1184 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc",
1165 TRACE_EVENT_SCOPE_THREAD); 1185 TRACE_EVENT_SCOPE_THREAD);
1166 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", 1186 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc",
1167 TRACE_EVENT_SCOPE_THREAD); 1187 TRACE_EVENT_SCOPE_THREAD);
1168 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", 1188 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included",
1169 TRACE_EVENT_SCOPE_THREAD); 1189 TRACE_EVENT_SCOPE_THREAD);
1170 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); 1190 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD);
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
1658 1678
1659 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); 1679 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
1660 EXPECT_EQ(1, a); 1680 EXPECT_EQ(1, a);
1661 1681
1662 EndTraceAndFlush(); 1682 EndTraceAndFlush();
1663 } 1683 }
1664 1684
1665 TEST_F(TraceEventTestFixture, TraceEnableDisable) { 1685 TEST_F(TraceEventTestFixture, TraceEnableDisable) {
1666 TraceLog* trace_log = TraceLog::GetInstance(); 1686 TraceLog* trace_log = TraceLog::GetInstance();
1667 CategoryFilter cf_inc_all("*"); 1687 CategoryFilter cf_inc_all("*");
1668 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 1688 trace_log->SetEnabled(cf_inc_all,
1689 base::debug::TraceLog::RECORDING_MODE,
1690 TraceLog::RECORD_UNTIL_FULL);
1669 EXPECT_TRUE(trace_log->IsEnabled()); 1691 EXPECT_TRUE(trace_log->IsEnabled());
1670 trace_log->SetDisabled(); 1692 trace_log->SetDisabled();
1671 EXPECT_FALSE(trace_log->IsEnabled()); 1693 EXPECT_FALSE(trace_log->IsEnabled());
1672 1694
1673 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 1695 trace_log->SetEnabled(cf_inc_all,
1696 base::debug::TraceLog::RECORDING_MODE,
1697 TraceLog::RECORD_UNTIL_FULL);
1674 EXPECT_TRUE(trace_log->IsEnabled()); 1698 EXPECT_TRUE(trace_log->IsEnabled());
1675 const std::vector<std::string> empty; 1699 const std::vector<std::string> empty;
1676 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); 1700 trace_log->SetEnabled(CategoryFilter(""),
1701 base::debug::TraceLog::RECORDING_MODE,
1702 TraceLog::RECORD_UNTIL_FULL);
1677 EXPECT_TRUE(trace_log->IsEnabled()); 1703 EXPECT_TRUE(trace_log->IsEnabled());
1678 trace_log->SetDisabled(); 1704 trace_log->SetDisabled();
1679 EXPECT_FALSE(trace_log->IsEnabled()); 1705 EXPECT_FALSE(trace_log->IsEnabled());
1680 trace_log->SetDisabled(); 1706 trace_log->SetDisabled();
1681 EXPECT_FALSE(trace_log->IsEnabled()); 1707 EXPECT_FALSE(trace_log->IsEnabled());
1682 } 1708 }
1683 1709
1684 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { 1710 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) {
1685 TraceLog* trace_log = TraceLog::GetInstance(); 1711 TraceLog* trace_log = TraceLog::GetInstance();
1686 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL); 1712 trace_log->SetEnabled(CategoryFilter("foo,bar"),
1713 base::debug::TraceLog::RECORDING_MODE,
1714 TraceLog::RECORD_UNTIL_FULL);
1687 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); 1715 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
1688 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); 1716 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
1689 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1717 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1690 trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL); 1718 trace_log->SetEnabled(CategoryFilter("foo2"),
1719 base::debug::TraceLog::RECORDING_MODE,
1720 TraceLog::RECORD_UNTIL_FULL);
1691 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); 1721 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2"));
1692 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1722 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1693 // The "" becomes the default catergory set when applied. 1723 // The "" becomes the default catergory set when applied.
1694 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); 1724 trace_log->SetEnabled(CategoryFilter(""),
1725 base::debug::TraceLog::RECORDING_MODE,
1726 TraceLog::RECORD_UNTIL_FULL);
1695 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); 1727 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
1696 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); 1728 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
1697 EXPECT_STREQ("-*Debug,-*Test", 1729 EXPECT_STREQ("-*Debug,-*Test",
1698 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1730 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1699 trace_log->SetDisabled(); 1731 trace_log->SetDisabled();
1700 trace_log->SetDisabled(); 1732 trace_log->SetDisabled();
1701 trace_log->SetDisabled(); 1733 trace_log->SetDisabled();
1702 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); 1734 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
1703 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1735 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1704 1736
1705 trace_log->SetEnabled(CategoryFilter("-foo,-bar"), 1737 trace_log->SetEnabled(CategoryFilter("-foo,-bar"),
1738 base::debug::TraceLog::RECORDING_MODE,
1706 TraceLog::RECORD_UNTIL_FULL); 1739 TraceLog::RECORD_UNTIL_FULL);
1707 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); 1740 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
1708 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); 1741 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
1709 trace_log->SetEnabled(CategoryFilter("moo"), TraceLog::RECORD_UNTIL_FULL); 1742 trace_log->SetEnabled(CategoryFilter("moo"),
1743 base::debug::TraceLog::RECORDING_MODE,
1744 TraceLog::RECORD_UNTIL_FULL);
1710 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); 1745 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
1711 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); 1746 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo"));
1712 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); 1747 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
1713 EXPECT_STREQ("-foo,-bar", 1748 EXPECT_STREQ("-foo,-bar",
1714 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1749 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1715 trace_log->SetDisabled(); 1750 trace_log->SetDisabled();
1716 trace_log->SetDisabled(); 1751 trace_log->SetDisabled();
1717 1752
1718 // Make sure disabled categories aren't cleared if we set in the second. 1753 // Make sure disabled categories aren't cleared if we set in the second.
1719 trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"), 1754 trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"),
1755 base::debug::TraceLog::RECORDING_MODE,
1720 TraceLog::RECORD_UNTIL_FULL); 1756 TraceLog::RECORD_UNTIL_FULL);
1721 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar")); 1757 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar"));
1722 trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"), 1758 trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"),
1759 base::debug::TraceLog::RECORDING_MODE,
1723 TraceLog::RECORD_UNTIL_FULL); 1760 TraceLog::RECORD_UNTIL_FULL);
1724 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc")); 1761 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc"));
1725 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu")); 1762 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu"));
1726 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); 1763 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
1727 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu", 1764 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu",
1728 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1765 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1729 trace_log->SetDisabled(); 1766 trace_log->SetDisabled();
1730 trace_log->SetDisabled(); 1767 trace_log->SetDisabled();
1731 } 1768 }
1732 1769
1733 TEST_F(TraceEventTestFixture, TraceSampling) { 1770 TEST_F(TraceEventTestFixture, TraceSampling) {
1734 TraceLog::GetInstance()->SetEnabled( 1771 TraceLog::GetInstance()->SetEnabled(
1735 CategoryFilter("*"), 1772 CategoryFilter("*"),
1773 base::debug::TraceLog::RECORDING_MODE,
1736 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | 1774 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
1737 TraceLog::ENABLE_SAMPLING)); 1775 TraceLog::ENABLE_SAMPLING));
1738 1776
1739 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); 1777 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff");
1740 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1778 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1741 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); 1779 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things");
1742 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1780 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1743 1781
1744 EndTraceAndFlush(); 1782 EndTraceAndFlush();
1745 1783
1746 // Make sure we hit at least once. 1784 // Make sure we hit at least once.
1747 EXPECT_TRUE(FindNamePhase("Stuff", "P")); 1785 EXPECT_TRUE(FindNamePhase("Stuff", "P"));
1748 EXPECT_TRUE(FindNamePhase("Things", "P")); 1786 EXPECT_TRUE(FindNamePhase("Things", "P"));
1749 } 1787 }
1750 1788
1751 TEST_F(TraceEventTestFixture, TraceSamplingScope) { 1789 TEST_F(TraceEventTestFixture, TraceSamplingScope) {
1752 TraceLog::GetInstance()->SetEnabled( 1790 TraceLog::GetInstance()->SetEnabled(
1753 CategoryFilter("*"), 1791 CategoryFilter("*"),
1792 base::debug::TraceLog::RECORDING_MODE,
1754 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | 1793 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
1755 TraceLog::ENABLE_SAMPLING)); 1794 TraceLog::ENABLE_SAMPLING));
1756 1795
1757 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); 1796 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name");
1758 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1797 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1759 { 1798 {
1760 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); 1799 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA");
1761 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); 1800 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name");
1762 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1801 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1763 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); 1802 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB");
(...skipping 14 matching lines...) Expand all
1778 } 1817 }
1779 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1818 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1780 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); 1819 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD");
1781 1820
1782 EndTraceAndFlush(); 1821 EndTraceAndFlush();
1783 } 1822 }
1784 1823
1785 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { 1824 TEST_F(TraceEventTestFixture, TraceContinuousSampling) {
1786 TraceLog::GetInstance()->SetEnabled( 1825 TraceLog::GetInstance()->SetEnabled(
1787 CategoryFilter("*"), 1826 CategoryFilter("*"),
1788 TraceLog::Options(TraceLog::MONITOR_SAMPLING)); 1827 base::debug::TraceLog::MONITORING_MODE,
1828 TraceLog::Options(TraceLog::ENABLE_SAMPLING));
1789 1829
1790 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); 1830 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA");
1791 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1831 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1792 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); 1832 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB");
1793 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1833 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1794 1834
1795 FlushMonitoring(); 1835 FlushMonitoring();
1796 1836
1797 // Make sure we can get the profiled data. 1837 // Make sure we can get the profiled data.
1798 EXPECT_TRUE(FindNamePhase("AAA", "P")); 1838 EXPECT_TRUE(FindNamePhase("AAA", "P"));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1836 out->append("{\"foo\":1}"); 1876 out->append("{\"foo\":1}");
1837 } 1877 }
1838 1878
1839 private: 1879 private:
1840 virtual ~MyData() {} 1880 virtual ~MyData() {}
1841 DISALLOW_COPY_AND_ASSIGN(MyData); 1881 DISALLOW_COPY_AND_ASSIGN(MyData);
1842 }; 1882 };
1843 1883
1844 TEST_F(TraceEventTestFixture, ConvertableTypes) { 1884 TEST_F(TraceEventTestFixture, ConvertableTypes) {
1845 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1885 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1886 base::debug::TraceLog::RECORDING_MODE,
1846 TraceLog::RECORD_UNTIL_FULL); 1887 TraceLog::RECORD_UNTIL_FULL);
1847 1888
1848 scoped_refptr<ConvertableToTraceFormat> data(new MyData()); 1889 scoped_refptr<ConvertableToTraceFormat> data(new MyData());
1849 scoped_refptr<ConvertableToTraceFormat> data1(new MyData()); 1890 scoped_refptr<ConvertableToTraceFormat> data1(new MyData());
1850 scoped_refptr<ConvertableToTraceFormat> data2(new MyData()); 1891 scoped_refptr<ConvertableToTraceFormat> data2(new MyData());
1851 TRACE_EVENT1("foo", "bar", "data", data); 1892 TRACE_EVENT1("foo", "bar", "data", data);
1852 TRACE_EVENT2("foo", "baz", 1893 TRACE_EVENT2("foo", "baz",
1853 "data1", data1, 1894 "data1", data1,
1854 "data2", data2); 1895 "data2", data2);
1855 1896
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
2039 EXPECT_EQ("duration", collected_events_names_[4]); 2080 EXPECT_EQ("duration", collected_events_names_[4]);
2040 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); 2081 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]);
2041 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { 2082 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) {
2042 EXPECT_LE(collected_events_timestamps_[i - 1], 2083 EXPECT_LE(collected_events_timestamps_[i - 1],
2043 collected_events_timestamps_[i]); 2084 collected_events_timestamps_[i]);
2044 } 2085 }
2045 } 2086 }
2046 2087
2047 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { 2088 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) {
2048 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2089 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2090 base::debug::TraceLog::RECORDING_MODE,
2049 TraceLog::RECORD_UNTIL_FULL); 2091 TraceLog::RECORD_UNTIL_FULL);
2050 do { 2092 do {
2051 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); 2093 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL);
2052 } while (!TraceLog::GetInstance()->BufferIsFull()); 2094 } while (!TraceLog::GetInstance()->BufferIsFull());
2053 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), 2095 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"),
2054 Callback); 2096 Callback);
2055 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); 2097 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL);
2056 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2098 TraceLog::GetInstance()->SetEventCallbackDisabled();
2057 ASSERT_EQ(1u, collected_events_names_.size()); 2099 ASSERT_EQ(1u, collected_events_names_.size());
2058 EXPECT_EQ("a snake", collected_events_names_[0]); 2100 EXPECT_EQ("a snake", collected_events_names_[0]);
2059 } 2101 }
2060 2102
2061 // 1: Enable callback, enable recording, disable callback, disable recording. 2103 // 1: Enable callback, enable recording, disable callback, disable recording.
2062 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { 2104 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) {
2063 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2105 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2064 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2106 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2065 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2107 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2066 Callback); 2108 Callback);
2067 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2109 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2068 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2110 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2069 TraceLog::GetInstance()->SetEnabled( 2111 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"),
2070 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); 2112 base::debug::TraceLog::RECORDING_MODE,
2113 TraceLog::RECORD_UNTIL_FULL);
2071 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2114 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2072 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2115 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2073 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2116 TraceLog::GetInstance()->SetEventCallbackDisabled();
2074 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2117 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2075 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2118 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2076 EndTraceAndFlush(); 2119 EndTraceAndFlush();
2077 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2120 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2078 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2121 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2079 2122
2080 VerifyCallbackAndRecordedEvents(2, 2); 2123 VerifyCallbackAndRecordedEvents(2, 2);
2081 } 2124 }
2082 2125
2083 // 2: Enable callback, enable recording, disable recording, disable callback. 2126 // 2: Enable callback, enable recording, disable recording, disable callback.
2084 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { 2127 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) {
2085 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2128 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2086 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2129 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2087 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2130 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2088 Callback); 2131 Callback);
2089 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2132 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2090 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2133 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2091 TraceLog::GetInstance()->SetEnabled( 2134 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"),
2092 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); 2135 base::debug::TraceLog::RECORDING_MODE,
2136 TraceLog::RECORD_UNTIL_FULL);
2093 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2137 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2094 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2138 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2095 EndTraceAndFlush(); 2139 EndTraceAndFlush();
2096 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2140 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2097 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2141 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2098 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2142 TraceLog::GetInstance()->SetEventCallbackDisabled();
2099 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2143 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2100 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2144 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2101 2145
2102 VerifyCallbackAndRecordedEvents(3, 1); 2146 VerifyCallbackAndRecordedEvents(3, 1);
2103 } 2147 }
2104 2148
2105 // 3: Enable recording, enable callback, disable callback, disable recording. 2149 // 3: Enable recording, enable callback, disable callback, disable recording.
2106 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { 2150 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) {
2107 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2151 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2108 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2152 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2109 TraceLog::GetInstance()->SetEnabled( 2153 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"),
2110 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); 2154 base::debug::TraceLog::RECORDING_MODE,
2155 TraceLog::RECORD_UNTIL_FULL);
2111 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2156 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2112 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2157 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2113 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2158 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2114 Callback); 2159 Callback);
2115 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2160 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2116 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2161 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2117 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2162 TraceLog::GetInstance()->SetEventCallbackDisabled();
2118 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2163 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2119 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2164 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2120 EndTraceAndFlush(); 2165 EndTraceAndFlush();
2121 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2166 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2122 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2167 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2123 2168
2124 VerifyCallbackAndRecordedEvents(1, 3); 2169 VerifyCallbackAndRecordedEvents(1, 3);
2125 } 2170 }
2126 2171
2127 // 4: Enable recording, enable callback, disable recording, disable callback. 2172 // 4: Enable recording, enable callback, disable recording, disable callback.
2128 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { 2173 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) {
2129 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2174 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2130 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2175 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2131 TraceLog::GetInstance()->SetEnabled( 2176 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"),
2132 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); 2177 base::debug::TraceLog::RECORDING_MODE,
2178 TraceLog::RECORD_UNTIL_FULL);
2133 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2179 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2134 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2180 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2135 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2181 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2136 Callback); 2182 Callback);
2137 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2183 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2138 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2184 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2139 EndTraceAndFlush(); 2185 EndTraceAndFlush();
2140 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2186 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2141 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2187 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2142 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2188 TraceLog::GetInstance()->SetEventCallbackDisabled();
2143 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2189 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2144 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2190 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2145 2191
2146 VerifyCallbackAndRecordedEvents(2, 2); 2192 VerifyCallbackAndRecordedEvents(2, 2);
2147 } 2193 }
2148 2194
2149 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { 2195 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) {
2150 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), 2196 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"),
2151 Callback); 2197 Callback);
2152 { 2198 {
2153 TRACE_EVENT0("callback", "duration1"); 2199 TRACE_EVENT0("callback", "duration1");
2154 TraceLog::GetInstance()->SetEnabled( 2200 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2155 CategoryFilter("*"), TraceLog::RECORD_UNTIL_FULL); 2201 base::debug::TraceLog::RECORDING_MODE,
2202 TraceLog::RECORD_UNTIL_FULL);
2156 TRACE_EVENT0("callback", "duration2"); 2203 TRACE_EVENT0("callback", "duration2");
2157 EndTraceAndFlush(); 2204 EndTraceAndFlush();
2158 TRACE_EVENT0("callback", "duration3"); 2205 TRACE_EVENT0("callback", "duration3");
2159 } 2206 }
2160 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2207 TraceLog::GetInstance()->SetEventCallbackDisabled();
2161 2208
2162 ASSERT_EQ(6u, collected_events_names_.size()); 2209 ASSERT_EQ(6u, collected_events_names_.size());
2163 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); 2210 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1");
2164 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); 2211 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2");
2165 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); 2212 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3");
2166 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); 2213 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3");
2167 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); 2214 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2");
2168 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); 2215 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1");
2169 } 2216 }
2170 2217
2171 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { 2218 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) {
2172 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2219 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2220 base::debug::TraceLog::RECORDING_MODE,
2173 TraceLog::RECORD_CONTINUOUSLY); 2221 TraceLog::RECORD_CONTINUOUSLY);
2174 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); 2222 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
2175 size_t capacity = buffer->Capacity(); 2223 size_t capacity = buffer->Capacity();
2176 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; 2224 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
2177 uint32 last_seq = 0; 2225 uint32 last_seq = 0;
2178 size_t chunk_index; 2226 size_t chunk_index;
2179 EXPECT_EQ(0u, buffer->Size()); 2227 EXPECT_EQ(0u, buffer->Size());
2180 2228
2181 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); 2229 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]);
2182 for (size_t i = 0; i < num_chunks; ++i) { 2230 for (size_t i = 0; i < num_chunks; ++i) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2222 } 2270 }
2223 2271
2224 for (size_t i = 0; i < num_chunks; ++i) 2272 for (size_t i = 0; i < num_chunks; ++i)
2225 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); 2273 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
2226 2274
2227 TraceLog::GetInstance()->SetDisabled(); 2275 TraceLog::GetInstance()->SetDisabled();
2228 } 2276 }
2229 2277
2230 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) { 2278 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) {
2231 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2279 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2280 base::debug::TraceLog::RECORDING_MODE,
2232 TraceLog::RECORD_CONTINUOUSLY); 2281 TraceLog::RECORD_CONTINUOUSLY);
2233 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); 2282 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
2234 size_t capacity = buffer->Capacity(); 2283 size_t capacity = buffer->Capacity();
2235 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; 2284 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
2236 size_t chunk_index; 2285 size_t chunk_index;
2237 EXPECT_EQ(0u, buffer->Size()); 2286 EXPECT_EQ(0u, buffer->Size());
2238 EXPECT_FALSE(buffer->NextChunk()); 2287 EXPECT_FALSE(buffer->NextChunk());
2239 2288
2240 size_t half_chunks = num_chunks / 2; 2289 size_t half_chunks = num_chunks / 2;
2241 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]); 2290 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]);
2242 2291
2243 for (size_t i = 0; i < half_chunks; ++i) { 2292 for (size_t i = 0; i < half_chunks; ++i) {
2244 chunks[i] = buffer->GetChunk(&chunk_index).release(); 2293 chunks[i] = buffer->GetChunk(&chunk_index).release();
2245 EXPECT_TRUE(chunks[i]); 2294 EXPECT_TRUE(chunks[i]);
2246 EXPECT_EQ(i, chunk_index); 2295 EXPECT_EQ(i, chunk_index);
2247 } 2296 }
2248 for (size_t i = 0; i < half_chunks; ++i) 2297 for (size_t i = 0; i < half_chunks; ++i)
2249 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); 2298 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
2250 2299
2251 for (size_t i = 0; i < half_chunks; ++i) 2300 for (size_t i = 0; i < half_chunks; ++i)
2252 EXPECT_EQ(chunks[i], buffer->NextChunk()); 2301 EXPECT_EQ(chunks[i], buffer->NextChunk());
2253 EXPECT_FALSE(buffer->NextChunk()); 2302 EXPECT_FALSE(buffer->NextChunk());
2254 TraceLog::GetInstance()->SetDisabled(); 2303 TraceLog::GetInstance()->SetDisabled();
2255 } 2304 }
2256 2305
2257 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) { 2306 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) {
2258 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2307 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2308 base::debug::TraceLog::RECORDING_MODE,
2259 TraceLog::RECORD_CONTINUOUSLY); 2309 TraceLog::RECORD_CONTINUOUSLY);
2260 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); 2310 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
2261 size_t capacity = buffer->Capacity(); 2311 size_t capacity = buffer->Capacity();
2262 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; 2312 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
2263 size_t chunk_index; 2313 size_t chunk_index;
2264 EXPECT_EQ(0u, buffer->Size()); 2314 EXPECT_EQ(0u, buffer->Size());
2265 EXPECT_FALSE(buffer->NextChunk()); 2315 EXPECT_FALSE(buffer->NextChunk());
2266 2316
2267 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); 2317 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]);
2268 2318
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
2497 g_log_buffer->append(str); 2547 g_log_buffer->append(str);
2498 return false; 2548 return false;
2499 } 2549 }
2500 2550
2501 TEST_F(TraceEventTestFixture, EchoToConsole) { 2551 TEST_F(TraceEventTestFixture, EchoToConsole) {
2502 logging::LogMessageHandlerFunction old_log_message_handler = 2552 logging::LogMessageHandlerFunction old_log_message_handler =
2503 logging::GetLogMessageHandler(); 2553 logging::GetLogMessageHandler();
2504 logging::SetLogMessageHandler(MockLogMessageHandler); 2554 logging::SetLogMessageHandler(MockLogMessageHandler);
2505 2555
2506 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2556 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2557 base::debug::TraceLog::RECORDING_MODE,
2507 TraceLog::ECHO_TO_CONSOLE); 2558 TraceLog::ECHO_TO_CONSOLE);
2508 TRACE_EVENT_BEGIN0("a", "begin_end"); 2559 TRACE_EVENT_BEGIN0("a", "begin_end");
2509 { 2560 {
2510 TRACE_EVENT0("b", "duration"); 2561 TRACE_EVENT0("b", "duration");
2511 TRACE_EVENT0("b1", "duration1"); 2562 TRACE_EVENT0("b1", "duration1");
2512 } 2563 }
2513 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); 2564 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL);
2514 TRACE_EVENT_END0("a", "begin_end"); 2565 TRACE_EVENT_END0("a", "begin_end");
2515 2566
2516 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b")); 2567 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b"));
(...skipping 15 matching lines...) Expand all
2532 TRACE_EVENT0("log", "trace_event"); 2583 TRACE_EVENT0("log", "trace_event");
2533 return false; 2584 return false;
2534 } 2585 }
2535 2586
2536 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { 2587 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) {
2537 logging::LogMessageHandlerFunction old_log_message_handler = 2588 logging::LogMessageHandlerFunction old_log_message_handler =
2538 logging::GetLogMessageHandler(); 2589 logging::GetLogMessageHandler();
2539 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent); 2590 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent);
2540 2591
2541 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2592 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2593 base::debug::TraceLog::RECORDING_MODE,
2542 TraceLog::ECHO_TO_CONSOLE); 2594 TraceLog::ECHO_TO_CONSOLE);
2543 { 2595 {
2544 // This should not cause deadlock or infinite recursion. 2596 // This should not cause deadlock or infinite recursion.
2545 TRACE_EVENT0("b", "duration"); 2597 TRACE_EVENT0("b", "duration");
2546 } 2598 }
2547 2599
2548 EndTraceAndFlush(); 2600 EndTraceAndFlush();
2549 logging::SetLogMessageHandler(old_log_message_handler); 2601 logging::SetLogMessageHandler(old_log_message_handler);
2550 } 2602 }
2551 2603
(...skipping 25 matching lines...) Expand all
2577 double timestamp; 2629 double timestamp;
2578 EXPECT_TRUE(item->GetDouble("ts", &timestamp)); 2630 EXPECT_TRUE(item->GetDouble("ts", &timestamp));
2579 EXPECT_GE(timestamp, last_timestamp); 2631 EXPECT_GE(timestamp, last_timestamp);
2580 EXPECT_LE(timestamp, end_time); 2632 EXPECT_LE(timestamp, end_time);
2581 last_timestamp = timestamp; 2633 last_timestamp = timestamp;
2582 } 2634 }
2583 } 2635 }
2584 2636
2585 } // namespace debug 2637 } // namespace debug
2586 } // namespace base 2638 } // namespace base
OLDNEW
« no previous file with comments | « base/debug/trace_event_impl.cc ('k') | base/test/trace_event_analyzer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698