OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/debug/trace_event_unittest.h" | 5 #include "base/debug/trace_event_unittest.h" |
6 | 6 |
7 #include <math.h> | 7 #include <math.h> |
8 #include <cstdlib> | 8 #include <cstdlib> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
74 trace_parsed_.Clear(); | 74 trace_parsed_.Clear(); |
75 json_output_.json_output.clear(); | 75 json_output_.json_output.clear(); |
76 } | 76 } |
77 | 77 |
78 void BeginTrace() { | 78 void BeginTrace() { |
79 BeginSpecificTrace("*"); | 79 BeginSpecificTrace("*"); |
80 } | 80 } |
81 | 81 |
82 void BeginSpecificTrace(const std::string& filter) { | 82 void BeginSpecificTrace(const std::string& filter) { |
83 event_watch_notification_ = 0; | 83 event_watch_notification_ = 0; |
84 TraceLog::GetInstance()->SetEnabled(CategoryFilter(filter), | 84 TraceLog::GetInstance()->SetEnabled( |
85 base::debug::TraceLog::RECORDING_MODE, | 85 CategoryFilter(filter), |
86 TraceLog::RECORD_UNTIL_FULL); | 86 base::debug::TraceLog::RECORDING_MODE, |
willchan no longer on Chromium
2014/07/31 19:26:43
Nit: ditch base::debug here.
nednguyen
2014/08/04 02:07:13
Done.
| |
87 TraceOptions()); | |
87 } | 88 } |
88 | 89 |
89 void EndTraceAndFlush() { | 90 void EndTraceAndFlush() { |
90 WaitableEvent flush_complete_event(false, false); | 91 WaitableEvent flush_complete_event(false, false); |
91 EndTraceAndFlushAsync(&flush_complete_event); | 92 EndTraceAndFlushAsync(&flush_complete_event); |
92 flush_complete_event.Wait(); | 93 flush_complete_event.Wait(); |
93 } | 94 } |
94 | 95 |
95 // Used when testing thread-local buffers which requires the thread initiating | 96 // Used when testing thread-local buffers which requires the thread initiating |
96 // flush to have a message loop. | 97 // flush to have a message loop. |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
875 | 876 |
876 void HighResSleepForTraceTest(base::TimeDelta elapsed) { | 877 void HighResSleepForTraceTest(base::TimeDelta elapsed) { |
877 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; | 878 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; |
878 do { | 879 do { |
879 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); | 880 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); |
880 } while (base::TimeTicks::HighResNow() < end_time); | 881 } while (base::TimeTicks::HighResNow() < end_time); |
881 } | 882 } |
882 | 883 |
883 // Simple Test for emitting data and validating it was received. | 884 // Simple Test for emitting data and validating it was received. |
884 TEST_F(TraceEventTestFixture, DataCaptured) { | 885 TEST_F(TraceEventTestFixture, DataCaptured) { |
885 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 886 TraceLog::GetInstance()->SetEnabled( |
886 base::debug::TraceLog::RECORDING_MODE, | 887 CategoryFilter("*"), |
887 TraceLog::RECORD_UNTIL_FULL); | 888 base::debug::TraceLog::RECORDING_MODE, |
889 TraceOptions()); | |
888 | 890 |
889 TraceWithAllMacroVariants(NULL); | 891 TraceWithAllMacroVariants(NULL); |
890 | 892 |
891 EndTraceAndFlush(); | 893 EndTraceAndFlush(); |
892 | 894 |
893 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 895 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
894 } | 896 } |
895 | 897 |
896 class MockEnabledStateChangedObserver : | 898 class MockEnabledStateChangedObserver : |
897 public base::debug::TraceLog::EnabledStateObserver { | 899 public base::debug::TraceLog::EnabledStateObserver { |
898 public: | 900 public: |
899 MOCK_METHOD0(OnTraceLogEnabled, void()); | 901 MOCK_METHOD0(OnTraceLogEnabled, void()); |
900 MOCK_METHOD0(OnTraceLogDisabled, void()); | 902 MOCK_METHOD0(OnTraceLogDisabled, void()); |
901 }; | 903 }; |
902 | 904 |
903 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { | 905 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { |
904 MockEnabledStateChangedObserver observer; | 906 MockEnabledStateChangedObserver observer; |
905 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 907 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
906 | 908 |
907 EXPECT_CALL(observer, OnTraceLogEnabled()) | 909 EXPECT_CALL(observer, OnTraceLogEnabled()) |
908 .Times(1); | 910 .Times(1); |
909 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 911 TraceLog::GetInstance()->SetEnabled( |
910 base::debug::TraceLog::RECORDING_MODE, | 912 CategoryFilter("*"), |
911 TraceLog::RECORD_UNTIL_FULL); | 913 base::debug::TraceLog::RECORDING_MODE, |
914 TraceOptions()); | |
912 testing::Mock::VerifyAndClear(&observer); | 915 testing::Mock::VerifyAndClear(&observer); |
913 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 916 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
914 | 917 |
915 // Cleanup. | 918 // Cleanup. |
916 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 919 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
917 TraceLog::GetInstance()->SetDisabled(); | 920 TraceLog::GetInstance()->SetDisabled(); |
918 } | 921 } |
919 | 922 |
920 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { | 923 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { |
921 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 924 TraceLog::GetInstance()->SetEnabled( |
922 base::debug::TraceLog::RECORDING_MODE, | 925 CategoryFilter("*"), |
923 TraceLog::RECORD_UNTIL_FULL); | 926 base::debug::TraceLog::RECORDING_MODE, |
927 TraceOptions()); | |
924 | 928 |
925 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 929 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
926 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 930 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
927 | 931 |
928 EXPECT_CALL(observer, OnTraceLogEnabled()) | 932 EXPECT_CALL(observer, OnTraceLogEnabled()) |
929 .Times(0); | 933 .Times(0); |
930 EXPECT_CALL(observer, OnTraceLogDisabled()) | 934 EXPECT_CALL(observer, OnTraceLogDisabled()) |
931 .Times(0); | 935 .Times(0); |
932 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 936 TraceLog::GetInstance()->SetEnabled( |
933 base::debug::TraceLog::RECORDING_MODE, | 937 CategoryFilter("*"), |
934 TraceLog::RECORD_UNTIL_FULL); | 938 base::debug::TraceLog::RECORDING_MODE, |
939 TraceOptions()); | |
935 testing::Mock::VerifyAndClear(&observer); | 940 testing::Mock::VerifyAndClear(&observer); |
936 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 941 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
937 | 942 |
938 // Cleanup. | 943 // Cleanup. |
939 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 944 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
940 TraceLog::GetInstance()->SetDisabled(); | 945 TraceLog::GetInstance()->SetDisabled(); |
941 TraceLog::GetInstance()->SetDisabled(); | 946 TraceLog::GetInstance()->SetDisabled(); |
942 } | 947 } |
943 | 948 |
944 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { | 949 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { |
945 CategoryFilter cf_inc_all("*"); | 950 CategoryFilter cf_inc_all("*"); |
946 TraceLog::GetInstance()->SetEnabled(cf_inc_all, | 951 TraceLog::GetInstance()->SetEnabled( |
947 base::debug::TraceLog::RECORDING_MODE, | 952 cf_inc_all, |
948 TraceLog::RECORD_UNTIL_FULL); | 953 base::debug::TraceLog::RECORDING_MODE, |
949 TraceLog::GetInstance()->SetEnabled(cf_inc_all, | 954 TraceOptions()); |
950 base::debug::TraceLog::RECORDING_MODE, | 955 TraceLog::GetInstance()->SetEnabled( |
951 TraceLog::RECORD_UNTIL_FULL); | 956 cf_inc_all, |
957 base::debug::TraceLog::RECORDING_MODE, | |
958 TraceOptions()); | |
952 | 959 |
953 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 960 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
954 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 961 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
955 | 962 |
956 EXPECT_CALL(observer, OnTraceLogEnabled()) | 963 EXPECT_CALL(observer, OnTraceLogEnabled()) |
957 .Times(0); | 964 .Times(0); |
958 EXPECT_CALL(observer, OnTraceLogDisabled()) | 965 EXPECT_CALL(observer, OnTraceLogDisabled()) |
959 .Times(1); | 966 .Times(1); |
960 TraceLog::GetInstance()->SetDisabled(); | 967 TraceLog::GetInstance()->SetDisabled(); |
961 testing::Mock::VerifyAndClear(&observer); | 968 testing::Mock::VerifyAndClear(&observer); |
962 | 969 |
963 // Cleanup. | 970 // Cleanup. |
964 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 971 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
965 TraceLog::GetInstance()->SetDisabled(); | 972 TraceLog::GetInstance()->SetDisabled(); |
966 } | 973 } |
967 | 974 |
968 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { | 975 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { |
969 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 976 TraceLog::GetInstance()->SetEnabled( |
970 base::debug::TraceLog::RECORDING_MODE, | 977 CategoryFilter("*"), |
971 TraceLog::RECORD_UNTIL_FULL); | 978 base::debug::TraceLog::RECORDING_MODE, |
979 TraceOptions()); | |
972 | 980 |
973 MockEnabledStateChangedObserver observer; | 981 MockEnabledStateChangedObserver observer; |
974 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 982 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
975 | 983 |
976 EXPECT_CALL(observer, OnTraceLogDisabled()) | 984 EXPECT_CALL(observer, OnTraceLogDisabled()) |
977 .Times(1); | 985 .Times(1); |
978 TraceLog::GetInstance()->SetDisabled(); | 986 TraceLog::GetInstance()->SetDisabled(); |
979 testing::Mock::VerifyAndClear(&observer); | 987 testing::Mock::VerifyAndClear(&observer); |
980 | 988 |
981 // Cleanup. | 989 // Cleanup. |
(...skipping 14 matching lines...) Expand all Loading... | |
996 | 1004 |
997 virtual void OnTraceLogDisabled() OVERRIDE { | 1005 virtual void OnTraceLogDisabled() OVERRIDE { |
998 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); | 1006 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); |
999 } | 1007 } |
1000 }; | 1008 }; |
1001 | 1009 |
1002 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { | 1010 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { |
1003 AfterStateChangeEnabledStateObserver observer; | 1011 AfterStateChangeEnabledStateObserver observer; |
1004 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1012 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
1005 | 1013 |
1006 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 1014 TraceLog::GetInstance()->SetEnabled( |
1007 base::debug::TraceLog::RECORDING_MODE, | 1015 CategoryFilter("*"), |
1008 TraceLog::RECORD_UNTIL_FULL); | 1016 base::debug::TraceLog::RECORDING_MODE, |
1017 TraceOptions()); | |
1009 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 1018 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
1010 | 1019 |
1011 TraceLog::GetInstance()->SetDisabled(); | 1020 TraceLog::GetInstance()->SetDisabled(); |
1012 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); | 1021 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); |
1013 | 1022 |
1014 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 1023 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
1015 } | 1024 } |
1016 | 1025 |
1017 // Tests that a state observer can remove itself during a callback. | 1026 // Tests that a state observer can remove itself during a callback. |
1018 class SelfRemovingEnabledStateObserver | 1027 class SelfRemovingEnabledStateObserver |
(...skipping 10 matching lines...) Expand all Loading... | |
1029 } | 1038 } |
1030 }; | 1039 }; |
1031 | 1040 |
1032 TEST_F(TraceEventTestFixture, SelfRemovingObserver) { | 1041 TEST_F(TraceEventTestFixture, SelfRemovingObserver) { |
1033 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); | 1042 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); |
1034 | 1043 |
1035 SelfRemovingEnabledStateObserver observer; | 1044 SelfRemovingEnabledStateObserver observer; |
1036 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1045 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
1037 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); | 1046 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); |
1038 | 1047 |
1039 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 1048 TraceLog::GetInstance()->SetEnabled( |
1040 base::debug::TraceLog::RECORDING_MODE, | 1049 CategoryFilter("*"), |
1041 TraceLog::RECORD_UNTIL_FULL); | 1050 base::debug::TraceLog::RECORDING_MODE, |
1051 TraceOptions()); | |
1042 TraceLog::GetInstance()->SetDisabled(); | 1052 TraceLog::GetInstance()->SetDisabled(); |
1043 // The observer removed itself on disable. | 1053 // The observer removed itself on disable. |
1044 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); | 1054 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); |
1045 } | 1055 } |
1046 | 1056 |
1047 bool IsNewTrace() { | 1057 bool IsNewTrace() { |
1048 bool is_new_trace; | 1058 bool is_new_trace; |
1049 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); | 1059 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); |
1050 return is_new_trace; | 1060 return is_new_trace; |
1051 } | 1061 } |
1052 | 1062 |
1053 TEST_F(TraceEventTestFixture, NewTraceRecording) { | 1063 TEST_F(TraceEventTestFixture, NewTraceRecording) { |
1054 ASSERT_FALSE(IsNewTrace()); | 1064 ASSERT_FALSE(IsNewTrace()); |
1055 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 1065 TraceLog::GetInstance()->SetEnabled( |
1056 base::debug::TraceLog::RECORDING_MODE, | 1066 CategoryFilter("*"), |
1057 TraceLog::RECORD_UNTIL_FULL); | 1067 base::debug::TraceLog::RECORDING_MODE, |
1068 TraceOptions()); | |
1058 // First call to IsNewTrace() should succeed. But, the second shouldn't. | 1069 // First call to IsNewTrace() should succeed. But, the second shouldn't. |
1059 ASSERT_TRUE(IsNewTrace()); | 1070 ASSERT_TRUE(IsNewTrace()); |
1060 ASSERT_FALSE(IsNewTrace()); | 1071 ASSERT_FALSE(IsNewTrace()); |
1061 EndTraceAndFlush(); | 1072 EndTraceAndFlush(); |
1062 | 1073 |
1063 // IsNewTrace() should definitely be false now. | 1074 // IsNewTrace() should definitely be false now. |
1064 ASSERT_FALSE(IsNewTrace()); | 1075 ASSERT_FALSE(IsNewTrace()); |
1065 | 1076 |
1066 // Start another trace. IsNewTrace() should become true again, briefly, as | 1077 // Start another trace. IsNewTrace() should become true again, briefly, as |
1067 // before. | 1078 // before. |
1068 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 1079 TraceLog::GetInstance()->SetEnabled( |
1069 base::debug::TraceLog::RECORDING_MODE, | 1080 CategoryFilter("*"), |
1070 TraceLog::RECORD_UNTIL_FULL); | 1081 base::debug::TraceLog::RECORDING_MODE, |
1082 TraceOptions()); | |
1071 ASSERT_TRUE(IsNewTrace()); | 1083 ASSERT_TRUE(IsNewTrace()); |
1072 ASSERT_FALSE(IsNewTrace()); | 1084 ASSERT_FALSE(IsNewTrace()); |
1073 | 1085 |
1074 // Cleanup. | 1086 // Cleanup. |
1075 EndTraceAndFlush(); | 1087 EndTraceAndFlush(); |
1076 } | 1088 } |
1077 | 1089 |
1078 | 1090 |
1079 // Test that categories work. | 1091 // Test that categories work. |
1080 TEST_F(TraceEventTestFixture, Categories) { | 1092 TEST_F(TraceEventTestFixture, Categories) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1115 | 1127 |
1116 const std::vector<std::string> empty_categories; | 1128 const std::vector<std::string> empty_categories; |
1117 std::vector<std::string> included_categories; | 1129 std::vector<std::string> included_categories; |
1118 std::vector<std::string> excluded_categories; | 1130 std::vector<std::string> excluded_categories; |
1119 | 1131 |
1120 // Test that category filtering works. | 1132 // Test that category filtering works. |
1121 | 1133 |
1122 // Include nonexistent category -> no events | 1134 // Include nonexistent category -> no events |
1123 Clear(); | 1135 Clear(); |
1124 included_categories.clear(); | 1136 included_categories.clear(); |
1125 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"), | 1137 TraceLog::GetInstance()->SetEnabled( |
1126 base::debug::TraceLog::RECORDING_MODE, | 1138 CategoryFilter("not_found823564786"), |
1127 TraceLog::RECORD_UNTIL_FULL); | 1139 base::debug::TraceLog::RECORDING_MODE, |
1140 TraceOptions()); | |
1128 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); | 1141 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
1129 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); | 1142 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
1130 EndTraceAndFlush(); | 1143 EndTraceAndFlush(); |
1131 DropTracedMetadataRecords(); | 1144 DropTracedMetadataRecords(); |
1132 EXPECT_TRUE(trace_parsed_.empty()); | 1145 EXPECT_TRUE(trace_parsed_.empty()); |
1133 | 1146 |
1134 // Include existent category -> only events of that category | 1147 // Include existent category -> only events of that category |
1135 Clear(); | 1148 Clear(); |
1136 included_categories.clear(); | 1149 included_categories.clear(); |
1137 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"), | 1150 TraceLog::GetInstance()->SetEnabled( |
1138 base::debug::TraceLog::RECORDING_MODE, | 1151 CategoryFilter("inc"), |
1139 TraceLog::RECORD_UNTIL_FULL); | 1152 base::debug::TraceLog::RECORDING_MODE, |
1153 TraceOptions()); | |
1140 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); | 1154 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
1141 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); | 1155 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
1142 EndTraceAndFlush(); | 1156 EndTraceAndFlush(); |
1143 DropTracedMetadataRecords(); | 1157 DropTracedMetadataRecords(); |
1144 EXPECT_TRUE(FindMatchingValue("cat", "inc")); | 1158 EXPECT_TRUE(FindMatchingValue("cat", "inc")); |
1145 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); | 1159 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); |
1146 | 1160 |
1147 // Include existent wildcard -> all categories matching wildcard | 1161 // Include existent wildcard -> all categories matching wildcard |
1148 Clear(); | 1162 Clear(); |
1149 included_categories.clear(); | 1163 included_categories.clear(); |
1150 TraceLog::GetInstance()->SetEnabled( | 1164 TraceLog::GetInstance()->SetEnabled( |
1151 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"), | 1165 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"), |
1152 base::debug::TraceLog::RECORDING_MODE, | 1166 base::debug::TraceLog::RECORDING_MODE, |
1153 TraceLog::RECORD_UNTIL_FULL); | 1167 TraceOptions()); |
1154 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", | 1168 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", |
1155 TRACE_EVENT_SCOPE_THREAD); | 1169 TRACE_EVENT_SCOPE_THREAD); |
1156 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); | 1170 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); |
1157 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", | 1171 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", |
1158 TRACE_EVENT_SCOPE_THREAD); | 1172 TRACE_EVENT_SCOPE_THREAD); |
1159 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", | 1173 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", |
1160 TRACE_EVENT_SCOPE_THREAD); | 1174 TRACE_EVENT_SCOPE_THREAD); |
1161 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); | 1175 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
1162 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); | 1176 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); |
1163 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included", | 1177 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included", |
1164 TRACE_EVENT_SCOPE_THREAD); | 1178 TRACE_EVENT_SCOPE_THREAD); |
1165 TRACE_EVENT_INSTANT0( | 1179 TRACE_EVENT_INSTANT0( |
1166 "non_included_category,inc_wildcard_category", "included", | 1180 "non_included_category,inc_wildcard_category", "included", |
1167 TRACE_EVENT_SCOPE_THREAD); | 1181 TRACE_EVENT_SCOPE_THREAD); |
1168 EndTraceAndFlush(); | 1182 EndTraceAndFlush(); |
1169 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); | 1183 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); |
1170 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); | 1184 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); |
1171 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); | 1185 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); |
1172 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); | 1186 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); |
1173 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); | 1187 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); |
1174 EXPECT_TRUE(FindMatchingValue("cat", | 1188 EXPECT_TRUE(FindMatchingValue("cat", |
1175 "non_included_category,inc_wildcard_category")); | 1189 "non_included_category,inc_wildcard_category")); |
1176 | 1190 |
1177 included_categories.clear(); | 1191 included_categories.clear(); |
1178 | 1192 |
1179 // Exclude nonexistent category -> all events | 1193 // Exclude nonexistent category -> all events |
1180 Clear(); | 1194 Clear(); |
1181 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"), | 1195 TraceLog::GetInstance()->SetEnabled( |
1182 base::debug::TraceLog::RECORDING_MODE, | 1196 CategoryFilter("-not_found823564786"), |
1183 TraceLog::RECORD_UNTIL_FULL); | 1197 base::debug::TraceLog::RECORDING_MODE, |
1198 TraceOptions()); | |
1184 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); | 1199 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); |
1185 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); | 1200 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); |
1186 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD); | 1201 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD); |
1187 EndTraceAndFlush(); | 1202 EndTraceAndFlush(); |
1188 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); | 1203 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); |
1189 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); | 1204 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); |
1190 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); | 1205 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); |
1191 | 1206 |
1192 // Exclude existent category -> only events of other categories | 1207 // Exclude existent category -> only events of other categories |
1193 Clear(); | 1208 Clear(); |
1194 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"), | 1209 TraceLog::GetInstance()->SetEnabled( |
1195 base::debug::TraceLog::RECORDING_MODE, | 1210 CategoryFilter("-inc"), |
1196 TraceLog::RECORD_UNTIL_FULL); | 1211 base::debug::TraceLog::RECORDING_MODE, |
1212 TraceOptions()); | |
1197 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); | 1213 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); |
1198 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); | 1214 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
1199 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD); | 1215 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD); |
1200 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD); | 1216 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD); |
1201 EndTraceAndFlush(); | 1217 EndTraceAndFlush(); |
1202 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); | 1218 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); |
1203 EXPECT_FALSE(FindMatchingValue("cat", "inc")); | 1219 EXPECT_FALSE(FindMatchingValue("cat", "inc")); |
1204 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); | 1220 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); |
1205 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); | 1221 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); |
1206 | 1222 |
1207 // Exclude existent wildcard -> all categories not matching wildcard | 1223 // Exclude existent wildcard -> all categories not matching wildcard |
1208 Clear(); | 1224 Clear(); |
1209 TraceLog::GetInstance()->SetEnabled( | 1225 TraceLog::GetInstance()->SetEnabled( |
1210 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"), | 1226 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"), |
1211 base::debug::TraceLog::RECORDING_MODE, | 1227 base::debug::TraceLog::RECORDING_MODE, |
1212 TraceLog::RECORD_UNTIL_FULL); | 1228 TraceOptions()); |
1213 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", | 1229 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", |
1214 TRACE_EVENT_SCOPE_THREAD); | 1230 TRACE_EVENT_SCOPE_THREAD); |
1215 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", | 1231 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", |
1216 TRACE_EVENT_SCOPE_THREAD); | 1232 TRACE_EVENT_SCOPE_THREAD); |
1217 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", | 1233 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", |
1218 TRACE_EVENT_SCOPE_THREAD); | 1234 TRACE_EVENT_SCOPE_THREAD); |
1219 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", | 1235 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", |
1220 TRACE_EVENT_SCOPE_THREAD); | 1236 TRACE_EVENT_SCOPE_THREAD); |
1221 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); | 1237 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); |
1222 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); | 1238 TRACE_EVENT_INSTANT0("cat2", "included", TRACE_EVENT_SCOPE_THREAD); |
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1711 EXPECT_EQ(1, a); | 1727 EXPECT_EQ(1, a); |
1712 | 1728 |
1713 EndTraceAndFlush(); | 1729 EndTraceAndFlush(); |
1714 } | 1730 } |
1715 | 1731 |
1716 TEST_F(TraceEventTestFixture, TraceEnableDisable) { | 1732 TEST_F(TraceEventTestFixture, TraceEnableDisable) { |
1717 TraceLog* trace_log = TraceLog::GetInstance(); | 1733 TraceLog* trace_log = TraceLog::GetInstance(); |
1718 CategoryFilter cf_inc_all("*"); | 1734 CategoryFilter cf_inc_all("*"); |
1719 trace_log->SetEnabled(cf_inc_all, | 1735 trace_log->SetEnabled(cf_inc_all, |
1720 base::debug::TraceLog::RECORDING_MODE, | 1736 base::debug::TraceLog::RECORDING_MODE, |
1721 TraceLog::RECORD_UNTIL_FULL); | 1737 TraceOptions()); |
1722 EXPECT_TRUE(trace_log->IsEnabled()); | 1738 EXPECT_TRUE(trace_log->IsEnabled()); |
1723 trace_log->SetDisabled(); | 1739 trace_log->SetDisabled(); |
1724 EXPECT_FALSE(trace_log->IsEnabled()); | 1740 EXPECT_FALSE(trace_log->IsEnabled()); |
1725 | 1741 |
1726 trace_log->SetEnabled(cf_inc_all, | 1742 trace_log->SetEnabled(cf_inc_all, |
1727 base::debug::TraceLog::RECORDING_MODE, | 1743 base::debug::TraceLog::RECORDING_MODE, |
1728 TraceLog::RECORD_UNTIL_FULL); | 1744 TraceOptions()); |
1729 EXPECT_TRUE(trace_log->IsEnabled()); | 1745 EXPECT_TRUE(trace_log->IsEnabled()); |
1730 const std::vector<std::string> empty; | 1746 const std::vector<std::string> empty; |
1731 trace_log->SetEnabled(CategoryFilter(""), | 1747 trace_log->SetEnabled(CategoryFilter(""), |
1732 base::debug::TraceLog::RECORDING_MODE, | 1748 base::debug::TraceLog::RECORDING_MODE, |
1733 TraceLog::RECORD_UNTIL_FULL); | 1749 TraceOptions()); |
1734 EXPECT_TRUE(trace_log->IsEnabled()); | 1750 EXPECT_TRUE(trace_log->IsEnabled()); |
1735 trace_log->SetDisabled(); | 1751 trace_log->SetDisabled(); |
1736 EXPECT_FALSE(trace_log->IsEnabled()); | 1752 EXPECT_FALSE(trace_log->IsEnabled()); |
1737 trace_log->SetDisabled(); | 1753 trace_log->SetDisabled(); |
1738 EXPECT_FALSE(trace_log->IsEnabled()); | 1754 EXPECT_FALSE(trace_log->IsEnabled()); |
1739 } | 1755 } |
1740 | 1756 |
1741 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { | 1757 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { |
1742 TraceLog* trace_log = TraceLog::GetInstance(); | 1758 TraceLog* trace_log = TraceLog::GetInstance(); |
1743 trace_log->SetEnabled(CategoryFilter("foo,bar"), | 1759 trace_log->SetEnabled(CategoryFilter("foo,bar"), |
1744 base::debug::TraceLog::RECORDING_MODE, | 1760 base::debug::TraceLog::RECORDING_MODE, |
1745 TraceLog::RECORD_UNTIL_FULL); | 1761 TraceOptions()); |
1746 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); | 1762 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
1747 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); | 1763 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); |
1748 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); | 1764 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
1749 trace_log->SetEnabled(CategoryFilter("foo2"), | 1765 trace_log->SetEnabled(CategoryFilter("foo2"), |
1750 base::debug::TraceLog::RECORDING_MODE, | 1766 base::debug::TraceLog::RECORDING_MODE, |
1751 TraceLog::RECORD_UNTIL_FULL); | 1767 TraceOptions()); |
1752 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); | 1768 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); |
1753 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); | 1769 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
1754 // The "" becomes the default catergory set when applied. | 1770 // The "" becomes the default catergory set when applied. |
1755 trace_log->SetEnabled(CategoryFilter(""), | 1771 trace_log->SetEnabled(CategoryFilter(""), |
1756 base::debug::TraceLog::RECORDING_MODE, | 1772 base::debug::TraceLog::RECORDING_MODE, |
1757 TraceLog::RECORD_UNTIL_FULL); | 1773 TraceOptions()); |
1758 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); | 1774 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
1759 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); | 1775 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
1760 EXPECT_STREQ("-*Debug,-*Test", | 1776 EXPECT_STREQ("-*Debug,-*Test", |
1761 trace_log->GetCurrentCategoryFilter().ToString().c_str()); | 1777 trace_log->GetCurrentCategoryFilter().ToString().c_str()); |
1762 trace_log->SetDisabled(); | 1778 trace_log->SetDisabled(); |
1763 trace_log->SetDisabled(); | 1779 trace_log->SetDisabled(); |
1764 trace_log->SetDisabled(); | 1780 trace_log->SetDisabled(); |
1765 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); | 1781 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
1766 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); | 1782 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
1767 | 1783 |
1768 trace_log->SetEnabled(CategoryFilter("-foo,-bar"), | 1784 trace_log->SetEnabled(CategoryFilter("-foo,-bar"), |
1769 base::debug::TraceLog::RECORDING_MODE, | 1785 base::debug::TraceLog::RECORDING_MODE, |
1770 TraceLog::RECORD_UNTIL_FULL); | 1786 TraceOptions()); |
1771 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); | 1787 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
1772 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); | 1788 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
1773 trace_log->SetEnabled(CategoryFilter("moo"), | 1789 trace_log->SetEnabled(CategoryFilter("moo"), |
1774 base::debug::TraceLog::RECORDING_MODE, | 1790 base::debug::TraceLog::RECORDING_MODE, |
1775 TraceLog::RECORD_UNTIL_FULL); | 1791 TraceOptions()); |
1776 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); | 1792 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); |
1777 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); | 1793 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); |
1778 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); | 1794 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); |
1779 EXPECT_STREQ("-foo,-bar", | 1795 EXPECT_STREQ("-foo,-bar", |
1780 trace_log->GetCurrentCategoryFilter().ToString().c_str()); | 1796 trace_log->GetCurrentCategoryFilter().ToString().c_str()); |
1781 trace_log->SetDisabled(); | 1797 trace_log->SetDisabled(); |
1782 trace_log->SetDisabled(); | 1798 trace_log->SetDisabled(); |
1783 | 1799 |
1784 // Make sure disabled categories aren't cleared if we set in the second. | 1800 // Make sure disabled categories aren't cleared if we set in the second. |
1785 trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"), | 1801 trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"), |
1786 base::debug::TraceLog::RECORDING_MODE, | 1802 base::debug::TraceLog::RECORDING_MODE, |
1787 TraceLog::RECORD_UNTIL_FULL); | 1803 TraceOptions()); |
1788 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar")); | 1804 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar")); |
1789 trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"), | 1805 trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"), |
1790 base::debug::TraceLog::RECORDING_MODE, | 1806 base::debug::TraceLog::RECORDING_MODE, |
1791 TraceLog::RECORD_UNTIL_FULL); | 1807 TraceOptions()); |
1792 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc")); | 1808 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc")); |
1793 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu")); | 1809 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu")); |
1794 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); | 1810 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); |
1795 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu", | 1811 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu", |
1796 trace_log->GetCurrentCategoryFilter().ToString().c_str()); | 1812 trace_log->GetCurrentCategoryFilter().ToString().c_str()); |
1797 trace_log->SetDisabled(); | 1813 trace_log->SetDisabled(); |
1798 trace_log->SetDisabled(); | 1814 trace_log->SetDisabled(); |
1799 } | 1815 } |
1800 | 1816 |
1801 TEST_F(TraceEventTestFixture, TraceSampling) { | 1817 TEST_F(TraceEventTestFixture, TraceSampling) { |
1802 TraceLog::GetInstance()->SetEnabled( | 1818 TraceOptions trace_options(RECORD_UNTIL_FULL); |
1803 CategoryFilter("*"), | 1819 trace_options.enable_sampling = true; |
1804 base::debug::TraceLog::RECORDING_MODE, | 1820 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
1805 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1821 base::debug::TraceLog::RECORDING_MODE, |
1806 TraceLog::ENABLE_SAMPLING)); | 1822 trace_options); |
1807 | 1823 |
1808 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); | 1824 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); |
1809 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1825 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1810 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); | 1826 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); |
1811 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1827 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1812 | 1828 |
1813 EndTraceAndFlush(); | 1829 EndTraceAndFlush(); |
1814 | 1830 |
1815 // Make sure we hit at least once. | 1831 // Make sure we hit at least once. |
1816 EXPECT_TRUE(FindNamePhase("Stuff", "P")); | 1832 EXPECT_TRUE(FindNamePhase("Stuff", "P")); |
1817 EXPECT_TRUE(FindNamePhase("Things", "P")); | 1833 EXPECT_TRUE(FindNamePhase("Things", "P")); |
1818 } | 1834 } |
1819 | 1835 |
1820 TEST_F(TraceEventTestFixture, TraceSamplingScope) { | 1836 TEST_F(TraceEventTestFixture, TraceSamplingScope) { |
1821 TraceLog::GetInstance()->SetEnabled( | 1837 TraceOptions trace_options(RECORD_UNTIL_FULL); |
1822 CategoryFilter("*"), | 1838 trace_options.enable_sampling = true; |
1823 base::debug::TraceLog::RECORDING_MODE, | 1839 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
1824 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1840 base::debug::TraceLog::RECORDING_MODE, |
1825 TraceLog::ENABLE_SAMPLING)); | 1841 trace_options); |
1826 | 1842 |
1827 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); | 1843 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); |
1828 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1844 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1829 { | 1845 { |
1830 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); | 1846 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); |
1831 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); | 1847 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); |
1832 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1848 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1833 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); | 1849 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); |
1834 } | 1850 } |
1835 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1851 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
(...skipping 10 matching lines...) Expand all Loading... | |
1846 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1862 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1847 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); | 1863 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); |
1848 } | 1864 } |
1849 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1865 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1850 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); | 1866 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); |
1851 | 1867 |
1852 EndTraceAndFlush(); | 1868 EndTraceAndFlush(); |
1853 } | 1869 } |
1854 | 1870 |
1855 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { | 1871 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { |
1856 TraceLog::GetInstance()->SetEnabled( | 1872 TraceOptions trace_options(RECORD_UNTIL_FULL); |
1857 CategoryFilter("*"), | 1873 trace_options.enable_sampling = true; |
1858 base::debug::TraceLog::MONITORING_MODE, | 1874 |
1859 TraceLog::Options(TraceLog::ENABLE_SAMPLING)); | 1875 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
1876 base::debug::TraceLog::MONITORING_MODE, | |
1877 trace_options); | |
1860 | 1878 |
1861 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); | 1879 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); |
1862 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1880 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1863 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); | 1881 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); |
1864 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1882 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
1865 | 1883 |
1866 FlushMonitoring(); | 1884 FlushMonitoring(); |
1867 | 1885 |
1868 // Make sure we can get the profiled data. | 1886 // Make sure we can get the profiled data. |
1869 EXPECT_TRUE(FindNamePhase("AAA", "P")); | 1887 EXPECT_TRUE(FindNamePhase("AAA", "P")); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1906 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { | 1924 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { |
1907 out->append("{\"foo\":1}"); | 1925 out->append("{\"foo\":1}"); |
1908 } | 1926 } |
1909 | 1927 |
1910 private: | 1928 private: |
1911 virtual ~MyData() {} | 1929 virtual ~MyData() {} |
1912 DISALLOW_COPY_AND_ASSIGN(MyData); | 1930 DISALLOW_COPY_AND_ASSIGN(MyData); |
1913 }; | 1931 }; |
1914 | 1932 |
1915 TEST_F(TraceEventTestFixture, ConvertableTypes) { | 1933 TEST_F(TraceEventTestFixture, ConvertableTypes) { |
1916 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 1934 TraceLog::GetInstance()->SetEnabled( |
1935 CategoryFilter("*"), | |
1917 base::debug::TraceLog::RECORDING_MODE, | 1936 base::debug::TraceLog::RECORDING_MODE, |
1918 TraceLog::RECORD_UNTIL_FULL); | 1937 TraceOptions()); |
1919 | 1938 |
1920 scoped_refptr<ConvertableToTraceFormat> data(new MyData()); | 1939 scoped_refptr<ConvertableToTraceFormat> data(new MyData()); |
1921 scoped_refptr<ConvertableToTraceFormat> data1(new MyData()); | 1940 scoped_refptr<ConvertableToTraceFormat> data1(new MyData()); |
1922 scoped_refptr<ConvertableToTraceFormat> data2(new MyData()); | 1941 scoped_refptr<ConvertableToTraceFormat> data2(new MyData()); |
1923 TRACE_EVENT1("foo", "bar", "data", data); | 1942 TRACE_EVENT1("foo", "bar", "data", data); |
1924 TRACE_EVENT2("foo", "baz", | 1943 TRACE_EVENT2("foo", "baz", |
1925 "data1", data1, | 1944 "data1", data1, |
1926 "data2", data2); | 1945 "data2", data2); |
1927 | 1946 |
1928 | 1947 |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2012 value = NULL; | 2031 value = NULL; |
2013 convertable_dict = NULL; | 2032 convertable_dict = NULL; |
2014 foo_val = 0; | 2033 foo_val = 0; |
2015 EXPECT_TRUE(args_dict->Get("convert", &value)); | 2034 EXPECT_TRUE(args_dict->Get("convert", &value)); |
2016 ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); | 2035 ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); |
2017 EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val)); | 2036 EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val)); |
2018 EXPECT_EQ(1, foo_val); | 2037 EXPECT_EQ(1, foo_val); |
2019 } | 2038 } |
2020 | 2039 |
2021 TEST_F(TraceEventTestFixture, PrimitiveArgs) { | 2040 TEST_F(TraceEventTestFixture, PrimitiveArgs) { |
2022 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2041 TraceLog::GetInstance()->SetEnabled( |
2042 CategoryFilter("*"), | |
2023 base::debug::TraceLog::RECORDING_MODE, | 2043 base::debug::TraceLog::RECORDING_MODE, |
2024 TraceLog::RECORD_UNTIL_FULL); | 2044 TraceOptions()); |
2025 | 2045 |
2026 TRACE_EVENT1("foo", "event1", "int_one", 1); | 2046 TRACE_EVENT1("foo", "event1", "int_one", 1); |
2027 TRACE_EVENT1("foo", "event2", "int_neg_ten", -10); | 2047 TRACE_EVENT1("foo", "event2", "int_neg_ten", -10); |
2028 TRACE_EVENT1("foo", "event3", "float_one", 1.0f); | 2048 TRACE_EVENT1("foo", "event3", "float_one", 1.0f); |
2029 TRACE_EVENT1("foo", "event4", "float_half", .5f); | 2049 TRACE_EVENT1("foo", "event4", "float_half", .5f); |
2030 TRACE_EVENT1("foo", "event5", "float_neghalf", -.5f); | 2050 TRACE_EVENT1("foo", "event5", "float_neghalf", -.5f); |
2031 TRACE_EVENT1("foo", "event6", "float_infinity", | 2051 TRACE_EVENT1("foo", "event6", "float_infinity", |
2032 std::numeric_limits<float>::infinity()); | 2052 std::numeric_limits<float>::infinity()); |
2033 TRACE_EVENT1("foo", "event6b", "float_neg_infinity", | 2053 TRACE_EVENT1("foo", "event6b", "float_neg_infinity", |
2034 -std::numeric_limits<float>::infinity()); | 2054 -std::numeric_limits<float>::infinity()); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2275 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_events_phases_[3]); | 2295 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_events_phases_[3]); |
2276 EXPECT_EQ("duration", collected_events_names_[4]); | 2296 EXPECT_EQ("duration", collected_events_names_[4]); |
2277 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); | 2297 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); |
2278 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { | 2298 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { |
2279 EXPECT_LE(collected_events_timestamps_[i - 1], | 2299 EXPECT_LE(collected_events_timestamps_[i - 1], |
2280 collected_events_timestamps_[i]); | 2300 collected_events_timestamps_[i]); |
2281 } | 2301 } |
2282 } | 2302 } |
2283 | 2303 |
2284 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { | 2304 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { |
2285 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2305 TraceLog::GetInstance()->SetEnabled( |
2306 CategoryFilter("*"), | |
2286 base::debug::TraceLog::RECORDING_MODE, | 2307 base::debug::TraceLog::RECORDING_MODE, |
2287 TraceLog::RECORD_UNTIL_FULL); | 2308 TraceOptions()); |
2288 do { | 2309 do { |
2289 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); | 2310 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); |
2290 } while (!TraceLog::GetInstance()->BufferIsFull()); | 2311 } while (!TraceLog::GetInstance()->BufferIsFull()); |
2291 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), | 2312 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), |
2292 Callback); | 2313 Callback); |
2293 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); | 2314 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); |
2294 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2315 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2295 ASSERT_EQ(1u, collected_events_names_.size()); | 2316 ASSERT_EQ(1u, collected_events_names_.size()); |
2296 EXPECT_EQ("a snake", collected_events_names_[0]); | 2317 EXPECT_EQ("a snake", collected_events_names_[0]); |
2297 } | 2318 } |
2298 | 2319 |
2299 // 1: Enable callback, enable recording, disable callback, disable recording. | 2320 // 1: Enable callback, enable recording, disable callback, disable recording. |
2300 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { | 2321 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { |
2301 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2322 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2302 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2323 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2303 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2324 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
2304 Callback); | 2325 Callback); |
2305 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2326 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2306 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2327 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2307 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2328 TraceLog::GetInstance()->SetEnabled( |
2308 base::debug::TraceLog::RECORDING_MODE, | 2329 CategoryFilter("recording"), |
2309 TraceLog::RECORD_UNTIL_FULL); | 2330 base::debug::TraceLog::RECORDING_MODE, |
2331 TraceOptions()); | |
2310 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2332 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2311 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2333 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2312 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2334 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2313 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2335 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2314 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2336 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2315 EndTraceAndFlush(); | 2337 EndTraceAndFlush(); |
2316 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2338 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2317 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2339 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2318 | 2340 |
2319 DropTracedMetadataRecords(); | 2341 DropTracedMetadataRecords(); |
2320 VerifyCallbackAndRecordedEvents(2, 2); | 2342 VerifyCallbackAndRecordedEvents(2, 2); |
2321 } | 2343 } |
2322 | 2344 |
2323 // 2: Enable callback, enable recording, disable recording, disable callback. | 2345 // 2: Enable callback, enable recording, disable recording, disable callback. |
2324 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { | 2346 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { |
2325 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2347 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2326 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2348 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2327 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2349 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
2328 Callback); | 2350 Callback); |
2329 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2351 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2330 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2352 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2331 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2353 TraceLog::GetInstance()->SetEnabled( |
2332 base::debug::TraceLog::RECORDING_MODE, | 2354 CategoryFilter("recording"), |
2333 TraceLog::RECORD_UNTIL_FULL); | 2355 base::debug::TraceLog::RECORDING_MODE, |
2356 TraceOptions()); | |
2334 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2357 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2335 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2358 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2336 EndTraceAndFlush(); | 2359 EndTraceAndFlush(); |
2337 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2360 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2338 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2361 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2339 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2362 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2340 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2363 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2341 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2364 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2342 | 2365 |
2343 DropTracedMetadataRecords(); | 2366 DropTracedMetadataRecords(); |
2344 VerifyCallbackAndRecordedEvents(3, 1); | 2367 VerifyCallbackAndRecordedEvents(3, 1); |
2345 } | 2368 } |
2346 | 2369 |
2347 // 3: Enable recording, enable callback, disable callback, disable recording. | 2370 // 3: Enable recording, enable callback, disable callback, disable recording. |
2348 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { | 2371 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { |
2349 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2372 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2350 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2373 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2351 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2374 TraceLog::GetInstance()->SetEnabled( |
2352 base::debug::TraceLog::RECORDING_MODE, | 2375 CategoryFilter("recording"), |
2353 TraceLog::RECORD_UNTIL_FULL); | 2376 base::debug::TraceLog::RECORDING_MODE, |
2377 TraceOptions()); | |
2354 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2378 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2355 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2379 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2356 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2380 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
2357 Callback); | 2381 Callback); |
2358 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2382 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2359 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2383 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2360 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2384 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2361 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2385 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2362 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2386 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2363 EndTraceAndFlush(); | 2387 EndTraceAndFlush(); |
2364 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2388 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2365 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2389 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2366 | 2390 |
2367 DropTracedMetadataRecords(); | 2391 DropTracedMetadataRecords(); |
2368 VerifyCallbackAndRecordedEvents(1, 3); | 2392 VerifyCallbackAndRecordedEvents(1, 3); |
2369 } | 2393 } |
2370 | 2394 |
2371 // 4: Enable recording, enable callback, disable recording, disable callback. | 2395 // 4: Enable recording, enable callback, disable recording, disable callback. |
2372 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { | 2396 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { |
2373 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2397 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2374 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2398 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2375 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2399 TraceLog::GetInstance()->SetEnabled( |
2376 base::debug::TraceLog::RECORDING_MODE, | 2400 CategoryFilter("recording"), |
2377 TraceLog::RECORD_UNTIL_FULL); | 2401 base::debug::TraceLog::RECORDING_MODE, |
2402 TraceOptions()); | |
2378 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2403 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2379 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2404 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2380 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2405 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
2381 Callback); | 2406 Callback); |
2382 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2407 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2383 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2408 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2384 EndTraceAndFlush(); | 2409 EndTraceAndFlush(); |
2385 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2410 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2386 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2411 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
2387 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2412 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2388 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2413 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2389 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2414 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
2390 | 2415 |
2391 DropTracedMetadataRecords(); | 2416 DropTracedMetadataRecords(); |
2392 VerifyCallbackAndRecordedEvents(2, 2); | 2417 VerifyCallbackAndRecordedEvents(2, 2); |
2393 } | 2418 } |
2394 | 2419 |
2395 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { | 2420 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { |
2396 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), | 2421 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), |
2397 Callback); | 2422 Callback); |
2398 { | 2423 { |
2399 TRACE_EVENT0("callback", "duration1"); | 2424 TRACE_EVENT0("callback", "duration1"); |
2400 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2425 TraceLog::GetInstance()->SetEnabled( |
2401 base::debug::TraceLog::RECORDING_MODE, | 2426 CategoryFilter("*"), |
2402 TraceLog::RECORD_UNTIL_FULL); | 2427 base::debug::TraceLog::RECORDING_MODE, |
2428 TraceOptions()); | |
2403 TRACE_EVENT0("callback", "duration2"); | 2429 TRACE_EVENT0("callback", "duration2"); |
2404 EndTraceAndFlush(); | 2430 EndTraceAndFlush(); |
2405 TRACE_EVENT0("callback", "duration3"); | 2431 TRACE_EVENT0("callback", "duration3"); |
2406 } | 2432 } |
2407 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2433 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2408 | 2434 |
2409 ASSERT_EQ(6u, collected_events_names_.size()); | 2435 ASSERT_EQ(6u, collected_events_names_.size()); |
2410 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); | 2436 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); |
2411 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); | 2437 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); |
2412 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); | 2438 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); |
2413 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); | 2439 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); |
2414 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); | 2440 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); |
2415 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); | 2441 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); |
2416 } | 2442 } |
2417 | 2443 |
2418 #if defined(OS_WIN) | 2444 #if defined(OS_WIN) |
2419 // http://crbug.com/396403 | 2445 // http://crbug.com/396403 |
2420 #define MAYBE_TraceBufferVectorReportFull DISABLED_TraceBufferVectorReportFull | 2446 #define MAYBE_TraceBufferVectorReportFull DISABLED_TraceBufferVectorReportFull |
2421 #else | 2447 #else |
2422 #define MAYBE_TraceBufferVectorReportFull TraceBufferVectorReportFull | 2448 #define MAYBE_TraceBufferVectorReportFull TraceBufferVectorReportFull |
2423 #endif | 2449 #endif |
2424 TEST_F(TraceEventTestFixture, MAYBE_TraceBufferVectorReportFull) { | 2450 TEST_F(TraceEventTestFixture, MAYBE_TraceBufferVectorReportFull) { |
2425 TraceLog* trace_log = TraceLog::GetInstance(); | 2451 TraceLog* trace_log = TraceLog::GetInstance(); |
2426 trace_log->SetEnabled(CategoryFilter("*"), | 2452 trace_log->SetEnabled(CategoryFilter("*"), |
2427 base::debug::TraceLog::RECORDING_MODE, | 2453 base::debug::TraceLog::RECORDING_MODE, |
2428 TraceLog::RECORD_UNTIL_FULL); | 2454 TraceOptions()); |
2429 trace_log->logged_events_.reset( | 2455 trace_log->logged_events_.reset( |
2430 trace_log->CreateTraceBufferVectorOfSize(100)); | 2456 trace_log->CreateTraceBufferVectorOfSize(100)); |
2431 do { | 2457 do { |
2432 TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0( | 2458 TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0( |
2433 "all", "with_timestamp", 0, 0, | 2459 "all", "with_timestamp", 0, 0, |
2434 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); | 2460 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); |
2435 TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0( | 2461 TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0( |
2436 "all", "with_timestamp", 0, 0, | 2462 "all", "with_timestamp", 0, 0, |
2437 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); | 2463 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); |
2438 } while (!trace_log->BufferIsFull()); | 2464 } while (!trace_log->BufferIsFull()); |
(...skipping 26 matching lines...) Expand all Loading... | |
2465 &last_trace_event)); | 2491 &last_trace_event)); |
2466 EXPECT_TRUE(last_trace_event->GetDouble("ts", &last_trace_event_timestamp)); | 2492 EXPECT_TRUE(last_trace_event->GetDouble("ts", &last_trace_event_timestamp)); |
2467 EXPECT_LE(last_trace_event_timestamp, buffer_limit_reached_timestamp); | 2493 EXPECT_LE(last_trace_event_timestamp, buffer_limit_reached_timestamp); |
2468 EXPECT_LE(buffer_limit_reached_timestamp, | 2494 EXPECT_LE(buffer_limit_reached_timestamp, |
2469 trace_log->OffsetNow().ToInternalValue()); | 2495 trace_log->OffsetNow().ToInternalValue()); |
2470 } | 2496 } |
2471 | 2497 |
2472 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { | 2498 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { |
2473 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2499 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
2474 base::debug::TraceLog::RECORDING_MODE, | 2500 base::debug::TraceLog::RECORDING_MODE, |
2475 TraceLog::RECORD_CONTINUOUSLY); | 2501 TraceOptions(RECORD_CONTINUOUSLY)); |
2476 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2502 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
2477 size_t capacity = buffer->Capacity(); | 2503 size_t capacity = buffer->Capacity(); |
2478 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2504 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
2479 uint32 last_seq = 0; | 2505 uint32 last_seq = 0; |
2480 size_t chunk_index; | 2506 size_t chunk_index; |
2481 EXPECT_EQ(0u, buffer->Size()); | 2507 EXPECT_EQ(0u, buffer->Size()); |
2482 | 2508 |
2483 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); | 2509 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); |
2484 for (size_t i = 0; i < num_chunks; ++i) { | 2510 for (size_t i = 0; i < num_chunks; ++i) { |
2485 chunks[i] = buffer->GetChunk(&chunk_index).release(); | 2511 chunks[i] = buffer->GetChunk(&chunk_index).release(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2525 | 2551 |
2526 for (size_t i = 0; i < num_chunks; ++i) | 2552 for (size_t i = 0; i < num_chunks; ++i) |
2527 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); | 2553 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); |
2528 | 2554 |
2529 TraceLog::GetInstance()->SetDisabled(); | 2555 TraceLog::GetInstance()->SetDisabled(); |
2530 } | 2556 } |
2531 | 2557 |
2532 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) { | 2558 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) { |
2533 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2559 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
2534 base::debug::TraceLog::RECORDING_MODE, | 2560 base::debug::TraceLog::RECORDING_MODE, |
2535 TraceLog::RECORD_CONTINUOUSLY); | 2561 TraceOptions(RECORD_CONTINUOUSLY)); |
2536 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2562 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
2537 size_t capacity = buffer->Capacity(); | 2563 size_t capacity = buffer->Capacity(); |
2538 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2564 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
2539 size_t chunk_index; | 2565 size_t chunk_index; |
2540 EXPECT_EQ(0u, buffer->Size()); | 2566 EXPECT_EQ(0u, buffer->Size()); |
2541 EXPECT_FALSE(buffer->NextChunk()); | 2567 EXPECT_FALSE(buffer->NextChunk()); |
2542 | 2568 |
2543 size_t half_chunks = num_chunks / 2; | 2569 size_t half_chunks = num_chunks / 2; |
2544 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]); | 2570 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]); |
2545 | 2571 |
2546 for (size_t i = 0; i < half_chunks; ++i) { | 2572 for (size_t i = 0; i < half_chunks; ++i) { |
2547 chunks[i] = buffer->GetChunk(&chunk_index).release(); | 2573 chunks[i] = buffer->GetChunk(&chunk_index).release(); |
2548 EXPECT_TRUE(chunks[i]); | 2574 EXPECT_TRUE(chunks[i]); |
2549 EXPECT_EQ(i, chunk_index); | 2575 EXPECT_EQ(i, chunk_index); |
2550 } | 2576 } |
2551 for (size_t i = 0; i < half_chunks; ++i) | 2577 for (size_t i = 0; i < half_chunks; ++i) |
2552 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); | 2578 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); |
2553 | 2579 |
2554 for (size_t i = 0; i < half_chunks; ++i) | 2580 for (size_t i = 0; i < half_chunks; ++i) |
2555 EXPECT_EQ(chunks[i], buffer->NextChunk()); | 2581 EXPECT_EQ(chunks[i], buffer->NextChunk()); |
2556 EXPECT_FALSE(buffer->NextChunk()); | 2582 EXPECT_FALSE(buffer->NextChunk()); |
2557 TraceLog::GetInstance()->SetDisabled(); | 2583 TraceLog::GetInstance()->SetDisabled(); |
2558 } | 2584 } |
2559 | 2585 |
2560 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) { | 2586 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) { |
2561 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2587 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
2562 base::debug::TraceLog::RECORDING_MODE, | 2588 base::debug::TraceLog::RECORDING_MODE, |
2563 TraceLog::RECORD_CONTINUOUSLY); | 2589 TraceOptions(RECORD_CONTINUOUSLY)); |
2564 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2590 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
2565 size_t capacity = buffer->Capacity(); | 2591 size_t capacity = buffer->Capacity(); |
2566 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2592 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
2567 size_t chunk_index; | 2593 size_t chunk_index; |
2568 EXPECT_EQ(0u, buffer->Size()); | 2594 EXPECT_EQ(0u, buffer->Size()); |
2569 EXPECT_FALSE(buffer->NextChunk()); | 2595 EXPECT_FALSE(buffer->NextChunk()); |
2570 | 2596 |
2571 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); | 2597 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); |
2572 | 2598 |
2573 for (size_t i = 0; i < num_chunks; ++i) { | 2599 for (size_t i = 0; i < num_chunks; ++i) { |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2709 FROM_HERE, Bind(&BlockUntilStopped, &task_start_event, &task_stop_event)); | 2735 FROM_HERE, Bind(&BlockUntilStopped, &task_start_event, &task_stop_event)); |
2710 task_start_event.Wait(); | 2736 task_start_event.Wait(); |
2711 | 2737 |
2712 EndTraceAndFlush(); | 2738 EndTraceAndFlush(); |
2713 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 2739 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
2714 | 2740 |
2715 task_stop_event.Signal(); | 2741 task_stop_event.Signal(); |
2716 thread.Stop(); | 2742 thread.Stop(); |
2717 } | 2743 } |
2718 | 2744 |
2745 TEST_F(TraceEventTestFixture, ConvertTraceOptionsToInternalOptions) { | |
2746 TraceLog* trace_log = TraceLog::GetInstance(); | |
2747 TraceOptions options(RECORD_UNTIL_FULL); | |
2748 EXPECT_EQ(TraceLog::kInternalRecordUntilFull, | |
2749 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2750 | |
2751 options.record_mode = RECORD_CONTINUOUSLY; | |
2752 EXPECT_EQ(TraceLog::kInternalRecordContinuously, | |
2753 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2754 | |
2755 options.record_mode = ECHO_TO_CONSOLE; | |
2756 EXPECT_EQ(TraceLog::kInternalEchoToConsole, | |
2757 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2758 | |
2759 options.enable_sampling = true; | |
2760 | |
2761 options.record_mode = RECORD_UNTIL_FULL; | |
2762 EXPECT_EQ( | |
2763 TraceLog::kInternalRecordUntilFull | TraceLog::kInternalEnableSampling, | |
2764 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2765 | |
2766 options.record_mode = RECORD_CONTINUOUSLY; | |
2767 EXPECT_EQ( | |
2768 TraceLog::kInternalRecordContinuously | TraceLog::kInternalEnableSampling, | |
2769 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2770 | |
2771 options.record_mode = ECHO_TO_CONSOLE; | |
2772 EXPECT_EQ( | |
2773 TraceLog::kInternalEchoToConsole | TraceLog::kInternalEnableSampling, | |
2774 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2775 | |
2776 options.enable_systrace = true; | |
2777 EXPECT_EQ( | |
2778 TraceLog::kInternalEchoToConsole | TraceLog::kInternalEnableSampling, | |
2779 trace_log->GetInternalOptionsFromTraceOptions(options)); | |
2780 } | |
2781 | |
2719 void SetBlockingFlagAndBlockUntilStopped(WaitableEvent* task_start_event, | 2782 void SetBlockingFlagAndBlockUntilStopped(WaitableEvent* task_start_event, |
2720 WaitableEvent* task_stop_event) { | 2783 WaitableEvent* task_stop_event) { |
2721 TraceLog::GetInstance()->SetCurrentThreadBlocksMessageLoop(); | 2784 TraceLog::GetInstance()->SetCurrentThreadBlocksMessageLoop(); |
2722 BlockUntilStopped(task_start_event, task_stop_event); | 2785 BlockUntilStopped(task_start_event, task_stop_event); |
2723 } | 2786 } |
2724 | 2787 |
2725 TEST_F(TraceEventTestFixture, SetCurrentThreadBlocksMessageLoopAfterTracing) { | 2788 TEST_F(TraceEventTestFixture, SetCurrentThreadBlocksMessageLoopAfterTracing) { |
2726 BeginTrace(); | 2789 BeginTrace(); |
2727 | 2790 |
2728 Thread thread("1"); | 2791 Thread thread("1"); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2800 g_log_buffer = new std::string(); | 2863 g_log_buffer = new std::string(); |
2801 g_log_buffer->append(str); | 2864 g_log_buffer->append(str); |
2802 return false; | 2865 return false; |
2803 } | 2866 } |
2804 | 2867 |
2805 TEST_F(TraceEventTestFixture, EchoToConsole) { | 2868 TEST_F(TraceEventTestFixture, EchoToConsole) { |
2806 logging::LogMessageHandlerFunction old_log_message_handler = | 2869 logging::LogMessageHandlerFunction old_log_message_handler = |
2807 logging::GetLogMessageHandler(); | 2870 logging::GetLogMessageHandler(); |
2808 logging::SetLogMessageHandler(MockLogMessageHandler); | 2871 logging::SetLogMessageHandler(MockLogMessageHandler); |
2809 | 2872 |
2810 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2873 TraceLog::GetInstance()->SetEnabled( |
2811 base::debug::TraceLog::RECORDING_MODE, | 2874 CategoryFilter("*"), |
2812 TraceLog::ECHO_TO_CONSOLE); | 2875 base::debug::TraceLog::RECORDING_MODE, |
2876 TraceOptions(ECHO_TO_CONSOLE)); | |
2813 TRACE_EVENT_BEGIN0("a", "begin_end"); | 2877 TRACE_EVENT_BEGIN0("a", "begin_end"); |
2814 { | 2878 { |
2815 TRACE_EVENT0("b", "duration"); | 2879 TRACE_EVENT0("b", "duration"); |
2816 TRACE_EVENT0("b1", "duration1"); | 2880 TRACE_EVENT0("b1", "duration1"); |
2817 } | 2881 } |
2818 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); | 2882 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); |
2819 TRACE_EVENT_END0("a", "begin_end"); | 2883 TRACE_EVENT_END0("a", "begin_end"); |
2820 | 2884 |
2821 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b")); | 2885 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b")); |
2822 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b]\x1b")); | 2886 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b]\x1b")); |
(...skipping 13 matching lines...) Expand all Loading... | |
2836 const std::string&) { | 2900 const std::string&) { |
2837 TRACE_EVENT0("log", "trace_event"); | 2901 TRACE_EVENT0("log", "trace_event"); |
2838 return false; | 2902 return false; |
2839 } | 2903 } |
2840 | 2904 |
2841 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { | 2905 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { |
2842 logging::LogMessageHandlerFunction old_log_message_handler = | 2906 logging::LogMessageHandlerFunction old_log_message_handler = |
2843 logging::GetLogMessageHandler(); | 2907 logging::GetLogMessageHandler(); |
2844 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent); | 2908 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent); |
2845 | 2909 |
2846 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2910 TraceLog::GetInstance()->SetEnabled( |
2847 base::debug::TraceLog::RECORDING_MODE, | 2911 CategoryFilter("*"), |
2848 TraceLog::ECHO_TO_CONSOLE); | 2912 base::debug::TraceLog::RECORDING_MODE, |
2913 TraceOptions(ECHO_TO_CONSOLE)); | |
2849 { | 2914 { |
2850 // This should not cause deadlock or infinite recursion. | 2915 // This should not cause deadlock or infinite recursion. |
2851 TRACE_EVENT0("b", "duration"); | 2916 TRACE_EVENT0("b", "duration"); |
2852 } | 2917 } |
2853 | 2918 |
2854 EndTraceAndFlush(); | 2919 EndTraceAndFlush(); |
2855 logging::SetLogMessageHandler(old_log_message_handler); | 2920 logging::SetLogMessageHandler(old_log_message_handler); |
2856 } | 2921 } |
2857 | 2922 |
2858 TEST_F(TraceEventTestFixture, TimeOffset) { | 2923 TEST_F(TraceEventTestFixture, TimeOffset) { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2925 filter1.Merge(filter2); | 2990 filter1.Merge(filter2); |
2926 EXPECT_EQ(2u, filter1.GetSyntheticDelayValues().size()); | 2991 EXPECT_EQ(2u, filter1.GetSyntheticDelayValues().size()); |
2927 } | 2992 } |
2928 | 2993 |
2929 TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) { | 2994 TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) { |
2930 const char config[] = "DELAY(test.Delay;16;oneshot)"; | 2995 const char config[] = "DELAY(test.Delay;16;oneshot)"; |
2931 CategoryFilter filter(config); | 2996 CategoryFilter filter(config); |
2932 EXPECT_EQ(config, filter.ToString()); | 2997 EXPECT_EQ(config, filter.ToString()); |
2933 } | 2998 } |
2934 | 2999 |
3000 TEST(TraceOptionsTest, TraceOptionsFromString) { | |
3001 TraceOptions options = TraceOptions("record-until-full"); | |
3002 EXPECT_EQ(RECORD_UNTIL_FULL, options.record_mode); | |
3003 EXPECT_FALSE(options.enable_sampling); | |
3004 EXPECT_FALSE(options.enable_systrace); | |
3005 | |
3006 options = TraceOptions(RECORD_CONTINUOUSLY); | |
3007 EXPECT_EQ(RECORD_CONTINUOUSLY, options.record_mode); | |
3008 EXPECT_FALSE(options.enable_sampling); | |
3009 EXPECT_FALSE(options.enable_systrace); | |
3010 | |
3011 options = TraceOptions("trace-to-console"); | |
3012 EXPECT_EQ(ECHO_TO_CONSOLE, options.record_mode); | |
3013 EXPECT_FALSE(options.enable_sampling); | |
3014 EXPECT_FALSE(options.enable_systrace); | |
3015 | |
3016 options = TraceOptions("record-until-full, enable-sampling"); | |
3017 EXPECT_EQ(RECORD_UNTIL_FULL, options.record_mode); | |
3018 EXPECT_TRUE(options.enable_sampling); | |
3019 EXPECT_FALSE(options.enable_systrace); | |
3020 | |
3021 options = TraceOptions("enable-systrace,record-continuously"); | |
3022 EXPECT_EQ(RECORD_CONTINUOUSLY, options.record_mode); | |
3023 EXPECT_FALSE(options.enable_sampling); | |
3024 EXPECT_TRUE(options.enable_systrace); | |
3025 | |
3026 options = TraceOptions("enable-systrace, trace-to-console,enable-sampling"); | |
3027 EXPECT_EQ(ECHO_TO_CONSOLE, options.record_mode); | |
3028 EXPECT_TRUE(options.enable_sampling); | |
3029 EXPECT_TRUE(options.enable_systrace); | |
3030 | |
3031 options = | |
3032 TraceOptions("record-continuously,record-until-full,trace-to-console"); | |
3033 EXPECT_EQ(ECHO_TO_CONSOLE, options.record_mode); | |
3034 EXPECT_FALSE(options.enable_systrace); | |
3035 EXPECT_FALSE(options.enable_sampling); | |
3036 | |
3037 options = TraceOptions(""); | |
3038 EXPECT_EQ(RECORD_UNTIL_FULL, options.record_mode); | |
3039 EXPECT_FALSE(options.enable_systrace); | |
3040 EXPECT_FALSE(options.enable_sampling); | |
3041 | |
3042 #if GTEST_HAS_EXCEPTIONS | |
3043 EXPECT_THROW(TraceOptions("foo-bar-baz"), int); | |
3044 #endif | |
3045 } | |
3046 | |
3047 TEST(TraceOptionsTest, TraceOptionsToString) { | |
3048 // Test that we can intialize TraceOptions from a string got from | |
3049 // TraceOptions.ToString() method to get a same TraceOptions. | |
3050 TraceRecordMode modes[] = { | |
3051 RECORD_UNTIL_FULL, RECORD_CONTINUOUSLY, ECHO_TO_CONSOLE}; | |
3052 bool enable_sampling_options[] = {true, false}; | |
3053 bool enable_systrace_options[] = {true, false}; | |
3054 | |
3055 for (int i = 0; i < 3; ++i) { | |
3056 for (int j = 0; j < 2; ++j) { | |
3057 for (int k = 0; k < 2; ++k) { | |
3058 TraceOptions original_option = TraceOptions(modes[i]); | |
3059 original_option.enable_sampling = enable_sampling_options[j]; | |
3060 original_option.enable_systrace = enable_systrace_options[k]; | |
3061 TraceOptions new_options = TraceOptions(original_option.ToString()); | |
3062 EXPECT_EQ(original_option.record_mode, new_options.record_mode); | |
3063 EXPECT_EQ(original_option.enable_sampling, new_options.enable_sampling); | |
3064 EXPECT_EQ(original_option.enable_systrace, new_options.enable_systrace); | |
3065 } | |
3066 } | |
3067 } | |
3068 } | |
3069 | |
3070 | |
2935 } // namespace debug | 3071 } // namespace debug |
2936 } // namespace base | 3072 } // namespace base |
OLD | NEW |