| 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/trace_event/trace_event.h" | 5 #include "base/trace_event/trace_event.h" |
| 6 | 6 |
| 7 #include <math.h> | 7 #include <math.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1085 CancelTrace(); | 1085 CancelTrace(); |
| 1086 | 1086 |
| 1087 EXPECT_TRUE(trace_parsed_.empty()); | 1087 EXPECT_TRUE(trace_parsed_.empty()); |
| 1088 } | 1088 } |
| 1089 | 1089 |
| 1090 class MockEnabledStateChangedObserver : | 1090 class MockEnabledStateChangedObserver : |
| 1091 public TraceLog::EnabledStateObserver { | 1091 public TraceLog::EnabledStateObserver { |
| 1092 public: | 1092 public: |
| 1093 MOCK_METHOD0(OnTraceLogEnabled, void()); | 1093 MOCK_METHOD0(OnTraceLogEnabled, void()); |
| 1094 MOCK_METHOD0(OnTraceLogDisabled, void()); | 1094 MOCK_METHOD0(OnTraceLogDisabled, void()); |
| 1095 MOCK_METHOD0(OnBeforeTraceLogDisabled, void()); |
| 1095 }; | 1096 }; |
| 1096 | 1097 |
| 1097 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { | 1098 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { |
| 1098 MockEnabledStateChangedObserver observer; | 1099 MockEnabledStateChangedObserver observer; |
| 1099 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1100 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1100 | 1101 |
| 1101 EXPECT_CALL(observer, OnTraceLogEnabled()) | 1102 EXPECT_CALL(observer, OnTraceLogEnabled()) |
| 1102 .Times(1); | 1103 .Times(1); |
| 1103 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1104 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1104 TraceLog::RECORDING_MODE); | 1105 TraceLog::RECORDING_MODE); |
| 1105 testing::Mock::VerifyAndClear(&observer); | 1106 testing::Mock::VerifyAndClear(&observer); |
| 1106 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 1107 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
| 1107 | 1108 |
| 1108 // Cleanup. | 1109 // Cleanup. |
| 1109 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 1110 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 1110 TraceLog::GetInstance()->SetDisabled(); | 1111 TraceLog::GetInstance()->SetDisabled(); |
| 1111 } | 1112 } |
| 1112 | 1113 |
| 1113 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { | 1114 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { |
| 1114 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1115 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1115 TraceLog::RECORDING_MODE); | 1116 TraceLog::RECORDING_MODE); |
| 1116 | 1117 |
| 1117 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 1118 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
| 1118 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1119 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1119 | 1120 |
| 1120 EXPECT_CALL(observer, OnTraceLogEnabled()) | 1121 EXPECT_CALL(observer, OnTraceLogEnabled()) |
| 1121 .Times(0); | 1122 .Times(0); |
| 1123 EXPECT_CALL(observer, OnBeforeTraceLogDisabled()).Times(0); |
| 1122 EXPECT_CALL(observer, OnTraceLogDisabled()) | 1124 EXPECT_CALL(observer, OnTraceLogDisabled()) |
| 1123 .Times(0); | 1125 .Times(0); |
| 1124 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1126 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1125 TraceLog::RECORDING_MODE); | 1127 TraceLog::RECORDING_MODE); |
| 1126 testing::Mock::VerifyAndClear(&observer); | 1128 testing::Mock::VerifyAndClear(&observer); |
| 1127 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 1129 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
| 1128 | 1130 |
| 1129 // Cleanup. | 1131 // Cleanup. |
| 1130 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 1132 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 1131 TraceLog::GetInstance()->SetDisabled(); | 1133 TraceLog::GetInstance()->SetDisabled(); |
| 1132 TraceLog::GetInstance()->SetDisabled(); | 1134 TraceLog::GetInstance()->SetDisabled(); |
| 1133 } | 1135 } |
| 1134 | 1136 |
| 1135 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { | 1137 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { |
| 1136 TraceConfig tc_inc_all("*", ""); | 1138 TraceConfig tc_inc_all("*", ""); |
| 1137 TraceLog::GetInstance()->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE); | 1139 TraceLog::GetInstance()->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE); |
| 1138 TraceLog::GetInstance()->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE); | 1140 TraceLog::GetInstance()->SetEnabled(tc_inc_all, TraceLog::RECORDING_MODE); |
| 1139 | 1141 |
| 1140 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 1142 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
| 1141 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1143 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1142 | 1144 |
| 1143 EXPECT_CALL(observer, OnTraceLogEnabled()) | 1145 EXPECT_CALL(observer, OnTraceLogEnabled()) |
| 1144 .Times(0); | 1146 .Times(0); |
| 1147 EXPECT_CALL(observer, OnBeforeTraceLogDisabled()).Times(1); |
| 1145 EXPECT_CALL(observer, OnTraceLogDisabled()) | 1148 EXPECT_CALL(observer, OnTraceLogDisabled()) |
| 1146 .Times(1); | 1149 .Times(1); |
| 1147 TraceLog::GetInstance()->SetDisabled(); | 1150 TraceLog::GetInstance()->SetDisabled(); |
| 1148 testing::Mock::VerifyAndClear(&observer); | 1151 testing::Mock::VerifyAndClear(&observer); |
| 1149 | 1152 |
| 1150 // Cleanup. | 1153 // Cleanup. |
| 1151 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 1154 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 1152 TraceLog::GetInstance()->SetDisabled(); | 1155 TraceLog::GetInstance()->SetDisabled(); |
| 1153 } | 1156 } |
| 1154 | 1157 |
| 1155 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { | 1158 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { |
| 1156 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1159 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1157 TraceLog::RECORDING_MODE); | 1160 TraceLog::RECORDING_MODE); |
| 1158 | 1161 |
| 1159 MockEnabledStateChangedObserver observer; | 1162 MockEnabledStateChangedObserver observer; |
| 1160 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1163 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1161 | 1164 |
| 1165 EXPECT_CALL(observer, OnBeforeTraceLogDisabled()).Times(1); |
| 1162 EXPECT_CALL(observer, OnTraceLogDisabled()) | 1166 EXPECT_CALL(observer, OnTraceLogDisabled()) |
| 1163 .Times(1); | 1167 .Times(1); |
| 1164 TraceLog::GetInstance()->SetDisabled(); | 1168 TraceLog::GetInstance()->SetDisabled(); |
| 1165 testing::Mock::VerifyAndClear(&observer); | 1169 testing::Mock::VerifyAndClear(&observer); |
| 1166 | 1170 |
| 1167 // Cleanup. | 1171 // Cleanup. |
| 1168 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 1172 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 1169 } | 1173 } |
| 1170 | 1174 |
| 1171 // Tests the IsEnabled() state of TraceLog changes before callbacks. | 1175 // Tests the IsEnabled() state of TraceLog changes before callbacks. |
| 1172 class AfterStateChangeEnabledStateObserver | 1176 class AfterStateChangeEnabledStateObserver |
| 1173 : public TraceLog::EnabledStateObserver { | 1177 : public TraceLog::EnabledStateObserver { |
| 1174 public: | 1178 public: |
| 1175 AfterStateChangeEnabledStateObserver() {} | 1179 AfterStateChangeEnabledStateObserver() {} |
| 1176 ~AfterStateChangeEnabledStateObserver() override {} | 1180 ~AfterStateChangeEnabledStateObserver() override {} |
| 1177 | 1181 |
| 1178 // TraceLog::EnabledStateObserver overrides: | 1182 // TraceLog::EnabledStateObserver overrides: |
| 1179 void OnTraceLogEnabled() override { | 1183 void OnTraceLogEnabled() override { |
| 1180 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 1184 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
| 1181 } | 1185 } |
| 1182 | 1186 |
| 1187 void OnBeforeTraceLogDisabled() override { |
| 1188 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
| 1189 } |
| 1190 |
| 1183 void OnTraceLogDisabled() override { | 1191 void OnTraceLogDisabled() override { |
| 1184 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); | 1192 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); |
| 1185 } | 1193 } |
| 1186 }; | 1194 }; |
| 1187 | 1195 |
| 1188 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { | 1196 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { |
| 1189 AfterStateChangeEnabledStateObserver observer; | 1197 AfterStateChangeEnabledStateObserver observer; |
| 1190 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1198 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1191 | 1199 |
| 1192 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1200 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| (...skipping 28 matching lines...) Expand all Loading... |
| 1221 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 1229 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1222 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); | 1230 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); |
| 1223 | 1231 |
| 1224 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1232 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1225 TraceLog::RECORDING_MODE); | 1233 TraceLog::RECORDING_MODE); |
| 1226 TraceLog::GetInstance()->SetDisabled(); | 1234 TraceLog::GetInstance()->SetDisabled(); |
| 1227 // The observer removed itself on disable. | 1235 // The observer removed itself on disable. |
| 1228 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); | 1236 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); |
| 1229 } | 1237 } |
| 1230 | 1238 |
| 1239 // Tests that an event can be fired during OnBeforeTraceLogDisabled. |
| 1240 class EventWritingStateObserver : public TraceLog::EnabledStateObserver { |
| 1241 public: |
| 1242 // TraceLog::EnabledStateObserver overrides: |
| 1243 void OnTraceLogEnabled() override {} |
| 1244 void OnTraceLogDisabled() override {} |
| 1245 void OnBeforeTraceLogDisabled() override { |
| 1246 TRACE_EVENT_INSTANT0("x", "y", TRACE_EVENT_SCOPE_THREAD); |
| 1247 } |
| 1248 }; |
| 1249 |
| 1250 TEST_F(TraceEventTestFixture, WriteTraceEventOnBeforeTraceLogDisabled) { |
| 1251 EventWritingStateObserver observer; |
| 1252 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
| 1253 |
| 1254 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1255 TraceLog::RECORDING_MODE); |
| 1256 EndTraceAndFlush(); |
| 1257 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
| 1258 EXPECT_TRUE(FindNamePhase("y", "I")); |
| 1259 } |
| 1260 |
| 1231 bool IsNewTrace() { | 1261 bool IsNewTrace() { |
| 1232 bool is_new_trace; | 1262 bool is_new_trace; |
| 1233 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); | 1263 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); |
| 1234 return is_new_trace; | 1264 return is_new_trace; |
| 1235 } | 1265 } |
| 1236 | 1266 |
| 1237 TEST_F(TraceEventTestFixture, NewTraceRecording) { | 1267 TEST_F(TraceEventTestFixture, NewTraceRecording) { |
| 1238 ASSERT_FALSE(IsNewTrace()); | 1268 ASSERT_FALSE(IsNewTrace()); |
| 1239 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), | 1269 TraceLog::GetInstance()->SetEnabled(TraceConfig(kRecordAllCategoryFilter, ""), |
| 1240 TraceLog::RECORDING_MODE); | 1270 TraceLog::RECORDING_MODE); |
| (...skipping 2107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3348 | 3378 |
| 3349 TEST_F(TraceEventTestFixture, ClockSyncEventsAreAlwaysAddedToTrace) { | 3379 TEST_F(TraceEventTestFixture, ClockSyncEventsAreAlwaysAddedToTrace) { |
| 3350 BeginSpecificTrace("-*"); | 3380 BeginSpecificTrace("-*"); |
| 3351 TRACE_EVENT_CLOCK_SYNC_RECEIVER(1); | 3381 TRACE_EVENT_CLOCK_SYNC_RECEIVER(1); |
| 3352 EndTraceAndFlush(); | 3382 EndTraceAndFlush(); |
| 3353 EXPECT_TRUE(FindNamePhase("clock_sync", "c")); | 3383 EXPECT_TRUE(FindNamePhase("clock_sync", "c")); |
| 3354 } | 3384 } |
| 3355 | 3385 |
| 3356 } // namespace trace_event | 3386 } // namespace trace_event |
| 3357 } // namespace base | 3387 } // namespace base |
| OLD | NEW |