| 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, |
| 87 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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(TraceOptions::RECORD_UNTIL_FULL)); |
| 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 TraceLog::GetInstance()->SetEnabled( |
| 1803 CategoryFilter("*"), | 1819 CategoryFilter("*"), |
| 1804 base::debug::TraceLog::RECORDING_MODE, | 1820 base::debug::TraceLog::RECORDING_MODE, |
| 1805 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1821 TraceOptions(TraceOptions::RECORD_UNTIL_FULL).EnableSampling(true)); |
| 1806 TraceLog::ENABLE_SAMPLING)); | |
| 1807 | 1822 |
| 1808 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); | 1823 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); |
| 1809 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1824 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1810 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); | 1825 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); |
| 1811 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1826 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1812 | 1827 |
| 1813 EndTraceAndFlush(); | 1828 EndTraceAndFlush(); |
| 1814 | 1829 |
| 1815 // Make sure we hit at least once. | 1830 // Make sure we hit at least once. |
| 1816 EXPECT_TRUE(FindNamePhase("Stuff", "P")); | 1831 EXPECT_TRUE(FindNamePhase("Stuff", "P")); |
| 1817 EXPECT_TRUE(FindNamePhase("Things", "P")); | 1832 EXPECT_TRUE(FindNamePhase("Things", "P")); |
| 1818 } | 1833 } |
| 1819 | 1834 |
| 1820 TEST_F(TraceEventTestFixture, TraceSamplingScope) { | 1835 TEST_F(TraceEventTestFixture, TraceSamplingScope) { |
| 1821 TraceLog::GetInstance()->SetEnabled( | 1836 TraceLog::GetInstance()->SetEnabled( |
| 1822 CategoryFilter("*"), | 1837 CategoryFilter("*"), |
| 1823 base::debug::TraceLog::RECORDING_MODE, | 1838 base::debug::TraceLog::RECORDING_MODE, |
| 1824 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | | 1839 TraceOptions(TraceOptions::RECORD_UNTIL_FULL).EnableSampling(true)); |
| 1825 TraceLog::ENABLE_SAMPLING)); | |
| 1826 | 1840 |
| 1827 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); | 1841 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); |
| 1828 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1842 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1829 { | 1843 { |
| 1830 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); | 1844 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); |
| 1831 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); | 1845 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); |
| 1832 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1846 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1833 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); | 1847 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); |
| 1834 } | 1848 } |
| 1835 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1849 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 1849 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1863 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1850 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); | 1864 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); |
| 1851 | 1865 |
| 1852 EndTraceAndFlush(); | 1866 EndTraceAndFlush(); |
| 1853 } | 1867 } |
| 1854 | 1868 |
| 1855 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { | 1869 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { |
| 1856 TraceLog::GetInstance()->SetEnabled( | 1870 TraceLog::GetInstance()->SetEnabled( |
| 1857 CategoryFilter("*"), | 1871 CategoryFilter("*"), |
| 1858 base::debug::TraceLog::MONITORING_MODE, | 1872 base::debug::TraceLog::MONITORING_MODE, |
| 1859 TraceLog::Options(TraceLog::ENABLE_SAMPLING)); | 1873 TraceOptions(TraceOptions::RECORD_UNTIL_FULL).EnableSampling(true)); |
| 1860 | 1874 |
| 1861 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); | 1875 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); |
| 1862 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1876 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1863 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); | 1877 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); |
| 1864 TraceLog::GetInstance()->WaitSamplingEventForTesting(); | 1878 TraceLog::GetInstance()->WaitSamplingEventForTesting(); |
| 1865 | 1879 |
| 1866 FlushMonitoring(); | 1880 FlushMonitoring(); |
| 1867 | 1881 |
| 1868 // Make sure we can get the profiled data. | 1882 // Make sure we can get the profiled data. |
| 1869 EXPECT_TRUE(FindNamePhase("AAA", "P")); | 1883 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 { | 1920 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { |
| 1907 out->append("{\"foo\":1}"); | 1921 out->append("{\"foo\":1}"); |
| 1908 } | 1922 } |
| 1909 | 1923 |
| 1910 private: | 1924 private: |
| 1911 virtual ~MyData() {} | 1925 virtual ~MyData() {} |
| 1912 DISALLOW_COPY_AND_ASSIGN(MyData); | 1926 DISALLOW_COPY_AND_ASSIGN(MyData); |
| 1913 }; | 1927 }; |
| 1914 | 1928 |
| 1915 TEST_F(TraceEventTestFixture, ConvertableTypes) { | 1929 TEST_F(TraceEventTestFixture, ConvertableTypes) { |
| 1916 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 1930 TraceLog::GetInstance()->SetEnabled( |
| 1931 CategoryFilter("*"), |
| 1917 base::debug::TraceLog::RECORDING_MODE, | 1932 base::debug::TraceLog::RECORDING_MODE, |
| 1918 TraceLog::RECORD_UNTIL_FULL); | 1933 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 1919 | 1934 |
| 1920 scoped_refptr<ConvertableToTraceFormat> data(new MyData()); | 1935 scoped_refptr<ConvertableToTraceFormat> data(new MyData()); |
| 1921 scoped_refptr<ConvertableToTraceFormat> data1(new MyData()); | 1936 scoped_refptr<ConvertableToTraceFormat> data1(new MyData()); |
| 1922 scoped_refptr<ConvertableToTraceFormat> data2(new MyData()); | 1937 scoped_refptr<ConvertableToTraceFormat> data2(new MyData()); |
| 1923 TRACE_EVENT1("foo", "bar", "data", data); | 1938 TRACE_EVENT1("foo", "bar", "data", data); |
| 1924 TRACE_EVENT2("foo", "baz", | 1939 TRACE_EVENT2("foo", "baz", |
| 1925 "data1", data1, | 1940 "data1", data1, |
| 1926 "data2", data2); | 1941 "data2", data2); |
| 1927 | 1942 |
| 1928 | 1943 |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2012 value = NULL; | 2027 value = NULL; |
| 2013 convertable_dict = NULL; | 2028 convertable_dict = NULL; |
| 2014 foo_val = 0; | 2029 foo_val = 0; |
| 2015 EXPECT_TRUE(args_dict->Get("convert", &value)); | 2030 EXPECT_TRUE(args_dict->Get("convert", &value)); |
| 2016 ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); | 2031 ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); |
| 2017 EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val)); | 2032 EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val)); |
| 2018 EXPECT_EQ(1, foo_val); | 2033 EXPECT_EQ(1, foo_val); |
| 2019 } | 2034 } |
| 2020 | 2035 |
| 2021 TEST_F(TraceEventTestFixture, PrimitiveArgs) { | 2036 TEST_F(TraceEventTestFixture, PrimitiveArgs) { |
| 2022 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2037 TraceLog::GetInstance()->SetEnabled( |
| 2038 CategoryFilter("*"), |
| 2023 base::debug::TraceLog::RECORDING_MODE, | 2039 base::debug::TraceLog::RECORDING_MODE, |
| 2024 TraceLog::RECORD_UNTIL_FULL); | 2040 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2025 | 2041 |
| 2026 TRACE_EVENT1("foo", "event1", "int_one", 1); | 2042 TRACE_EVENT1("foo", "event1", "int_one", 1); |
| 2027 TRACE_EVENT1("foo", "event2", "int_neg_ten", -10); | 2043 TRACE_EVENT1("foo", "event2", "int_neg_ten", -10); |
| 2028 TRACE_EVENT1("foo", "event3", "float_one", 1.0f); | 2044 TRACE_EVENT1("foo", "event3", "float_one", 1.0f); |
| 2029 TRACE_EVENT1("foo", "event4", "float_half", .5f); | 2045 TRACE_EVENT1("foo", "event4", "float_half", .5f); |
| 2030 TRACE_EVENT1("foo", "event5", "float_neghalf", -.5f); | 2046 TRACE_EVENT1("foo", "event5", "float_neghalf", -.5f); |
| 2031 TRACE_EVENT1("foo", "event6", "float_infinity", | 2047 TRACE_EVENT1("foo", "event6", "float_infinity", |
| 2032 std::numeric_limits<float>::infinity()); | 2048 std::numeric_limits<float>::infinity()); |
| 2033 TRACE_EVENT1("foo", "event6b", "float_neg_infinity", | 2049 TRACE_EVENT1("foo", "event6b", "float_neg_infinity", |
| 2034 -std::numeric_limits<float>::infinity()); | 2050 -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]); | 2291 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_events_phases_[3]); |
| 2276 EXPECT_EQ("duration", collected_events_names_[4]); | 2292 EXPECT_EQ("duration", collected_events_names_[4]); |
| 2277 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); | 2293 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); |
| 2278 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { | 2294 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { |
| 2279 EXPECT_LE(collected_events_timestamps_[i - 1], | 2295 EXPECT_LE(collected_events_timestamps_[i - 1], |
| 2280 collected_events_timestamps_[i]); | 2296 collected_events_timestamps_[i]); |
| 2281 } | 2297 } |
| 2282 } | 2298 } |
| 2283 | 2299 |
| 2284 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { | 2300 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { |
| 2285 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2301 TraceLog::GetInstance()->SetEnabled( |
| 2302 CategoryFilter("*"), |
| 2286 base::debug::TraceLog::RECORDING_MODE, | 2303 base::debug::TraceLog::RECORDING_MODE, |
| 2287 TraceLog::RECORD_UNTIL_FULL); | 2304 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2288 do { | 2305 do { |
| 2289 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); | 2306 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); |
| 2290 } while (!TraceLog::GetInstance()->BufferIsFull()); | 2307 } while (!TraceLog::GetInstance()->BufferIsFull()); |
| 2291 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), | 2308 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), |
| 2292 Callback); | 2309 Callback); |
| 2293 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); | 2310 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); |
| 2294 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2311 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2295 ASSERT_EQ(1u, collected_events_names_.size()); | 2312 ASSERT_EQ(1u, collected_events_names_.size()); |
| 2296 EXPECT_EQ("a snake", collected_events_names_[0]); | 2313 EXPECT_EQ("a snake", collected_events_names_[0]); |
| 2297 } | 2314 } |
| 2298 | 2315 |
| 2299 // 1: Enable callback, enable recording, disable callback, disable recording. | 2316 // 1: Enable callback, enable recording, disable callback, disable recording. |
| 2300 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { | 2317 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { |
| 2301 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2318 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2302 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2319 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2303 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2320 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2304 Callback); | 2321 Callback); |
| 2305 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2322 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2306 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2323 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2307 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2324 TraceLog::GetInstance()->SetEnabled( |
| 2308 base::debug::TraceLog::RECORDING_MODE, | 2325 CategoryFilter("recording"), |
| 2309 TraceLog::RECORD_UNTIL_FULL); | 2326 base::debug::TraceLog::RECORDING_MODE, |
| 2327 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2310 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2328 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2311 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2329 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2312 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2330 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2313 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2331 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2314 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2332 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2315 EndTraceAndFlush(); | 2333 EndTraceAndFlush(); |
| 2316 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2334 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2317 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2335 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2318 | 2336 |
| 2319 DropTracedMetadataRecords(); | 2337 DropTracedMetadataRecords(); |
| 2320 VerifyCallbackAndRecordedEvents(2, 2); | 2338 VerifyCallbackAndRecordedEvents(2, 2); |
| 2321 } | 2339 } |
| 2322 | 2340 |
| 2323 // 2: Enable callback, enable recording, disable recording, disable callback. | 2341 // 2: Enable callback, enable recording, disable recording, disable callback. |
| 2324 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { | 2342 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { |
| 2325 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2343 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2326 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2344 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2327 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2345 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2328 Callback); | 2346 Callback); |
| 2329 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2347 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2330 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2348 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2331 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2349 TraceLog::GetInstance()->SetEnabled( |
| 2332 base::debug::TraceLog::RECORDING_MODE, | 2350 CategoryFilter("recording"), |
| 2333 TraceLog::RECORD_UNTIL_FULL); | 2351 base::debug::TraceLog::RECORDING_MODE, |
| 2352 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2334 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2353 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2335 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2354 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2336 EndTraceAndFlush(); | 2355 EndTraceAndFlush(); |
| 2337 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2356 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2338 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2357 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2339 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2358 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2340 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2359 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2341 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2360 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2342 | 2361 |
| 2343 DropTracedMetadataRecords(); | 2362 DropTracedMetadataRecords(); |
| 2344 VerifyCallbackAndRecordedEvents(3, 1); | 2363 VerifyCallbackAndRecordedEvents(3, 1); |
| 2345 } | 2364 } |
| 2346 | 2365 |
| 2347 // 3: Enable recording, enable callback, disable callback, disable recording. | 2366 // 3: Enable recording, enable callback, disable callback, disable recording. |
| 2348 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { | 2367 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { |
| 2349 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2368 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2350 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2369 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2351 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2370 TraceLog::GetInstance()->SetEnabled( |
| 2352 base::debug::TraceLog::RECORDING_MODE, | 2371 CategoryFilter("recording"), |
| 2353 TraceLog::RECORD_UNTIL_FULL); | 2372 base::debug::TraceLog::RECORDING_MODE, |
| 2373 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2354 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2374 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2355 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2375 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2356 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2376 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2357 Callback); | 2377 Callback); |
| 2358 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2378 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2359 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2379 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2360 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2380 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2361 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2381 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2362 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2382 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2363 EndTraceAndFlush(); | 2383 EndTraceAndFlush(); |
| 2364 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2384 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2365 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2385 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2366 | 2386 |
| 2367 DropTracedMetadataRecords(); | 2387 DropTracedMetadataRecords(); |
| 2368 VerifyCallbackAndRecordedEvents(1, 3); | 2388 VerifyCallbackAndRecordedEvents(1, 3); |
| 2369 } | 2389 } |
| 2370 | 2390 |
| 2371 // 4: Enable recording, enable callback, disable recording, disable callback. | 2391 // 4: Enable recording, enable callback, disable recording, disable callback. |
| 2372 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { | 2392 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { |
| 2373 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2393 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2374 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2394 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2375 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), | 2395 TraceLog::GetInstance()->SetEnabled( |
| 2376 base::debug::TraceLog::RECORDING_MODE, | 2396 CategoryFilter("recording"), |
| 2377 TraceLog::RECORD_UNTIL_FULL); | 2397 base::debug::TraceLog::RECORDING_MODE, |
| 2398 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2378 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2399 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2379 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2400 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2380 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), | 2401 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2381 Callback); | 2402 Callback); |
| 2382 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2403 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2383 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2404 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2384 EndTraceAndFlush(); | 2405 EndTraceAndFlush(); |
| 2385 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2406 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2386 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); | 2407 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2387 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2408 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2388 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2409 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2389 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); | 2410 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2390 | 2411 |
| 2391 DropTracedMetadataRecords(); | 2412 DropTracedMetadataRecords(); |
| 2392 VerifyCallbackAndRecordedEvents(2, 2); | 2413 VerifyCallbackAndRecordedEvents(2, 2); |
| 2393 } | 2414 } |
| 2394 | 2415 |
| 2395 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { | 2416 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { |
| 2396 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), | 2417 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), |
| 2397 Callback); | 2418 Callback); |
| 2398 { | 2419 { |
| 2399 TRACE_EVENT0("callback", "duration1"); | 2420 TRACE_EVENT0("callback", "duration1"); |
| 2400 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2421 TraceLog::GetInstance()->SetEnabled( |
| 2401 base::debug::TraceLog::RECORDING_MODE, | 2422 CategoryFilter("*"), |
| 2402 TraceLog::RECORD_UNTIL_FULL); | 2423 base::debug::TraceLog::RECORDING_MODE, |
| 2424 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2403 TRACE_EVENT0("callback", "duration2"); | 2425 TRACE_EVENT0("callback", "duration2"); |
| 2404 EndTraceAndFlush(); | 2426 EndTraceAndFlush(); |
| 2405 TRACE_EVENT0("callback", "duration3"); | 2427 TRACE_EVENT0("callback", "duration3"); |
| 2406 } | 2428 } |
| 2407 TraceLog::GetInstance()->SetEventCallbackDisabled(); | 2429 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2408 | 2430 |
| 2409 ASSERT_EQ(6u, collected_events_names_.size()); | 2431 ASSERT_EQ(6u, collected_events_names_.size()); |
| 2410 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); | 2432 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); |
| 2411 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); | 2433 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); |
| 2412 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); | 2434 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); |
| 2413 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); | 2435 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); |
| 2414 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); | 2436 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); |
| 2415 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); | 2437 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); |
| 2416 } | 2438 } |
| 2417 | 2439 |
| 2418 #if defined(OS_WIN) | 2440 #if defined(OS_WIN) |
| 2419 // http://crbug.com/396403 | 2441 // http://crbug.com/396403 |
| 2420 #define MAYBE_TraceBufferVectorReportFull DISABLED_TraceBufferVectorReportFull | 2442 #define MAYBE_TraceBufferVectorReportFull DISABLED_TraceBufferVectorReportFull |
| 2421 #else | 2443 #else |
| 2422 #define MAYBE_TraceBufferVectorReportFull TraceBufferVectorReportFull | 2444 #define MAYBE_TraceBufferVectorReportFull TraceBufferVectorReportFull |
| 2423 #endif | 2445 #endif |
| 2424 TEST_F(TraceEventTestFixture, MAYBE_TraceBufferVectorReportFull) { | 2446 TEST_F(TraceEventTestFixture, MAYBE_TraceBufferVectorReportFull) { |
| 2425 TraceLog* trace_log = TraceLog::GetInstance(); | 2447 TraceLog* trace_log = TraceLog::GetInstance(); |
| 2426 trace_log->SetEnabled(CategoryFilter("*"), | 2448 trace_log->SetEnabled(CategoryFilter("*"), |
| 2427 base::debug::TraceLog::RECORDING_MODE, | 2449 base::debug::TraceLog::RECORDING_MODE, |
| 2428 TraceLog::RECORD_UNTIL_FULL); | 2450 TraceOptions(TraceOptions::RECORD_UNTIL_FULL)); |
| 2429 trace_log->logged_events_.reset( | 2451 trace_log->logged_events_.reset( |
| 2430 trace_log->CreateTraceBufferVectorOfSize(100)); | 2452 trace_log->CreateTraceBufferVectorOfSize(100)); |
| 2431 do { | 2453 do { |
| 2432 TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0( | 2454 TRACE_EVENT_BEGIN_WITH_ID_TID_AND_TIMESTAMP0( |
| 2433 "all", "with_timestamp", 0, 0, | 2455 "all", "with_timestamp", 0, 0, |
| 2434 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); | 2456 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); |
| 2435 TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0( | 2457 TRACE_EVENT_END_WITH_ID_TID_AND_TIMESTAMP0( |
| 2436 "all", "with_timestamp", 0, 0, | 2458 "all", "with_timestamp", 0, 0, |
| 2437 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); | 2459 TimeTicks::NowFromSystemTraceTime().ToInternalValue()); |
| 2438 } while (!trace_log->BufferIsFull()); | 2460 } while (!trace_log->BufferIsFull()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2465 &last_trace_event)); | 2487 &last_trace_event)); |
| 2466 EXPECT_TRUE(last_trace_event->GetDouble("ts", &last_trace_event_timestamp)); | 2488 EXPECT_TRUE(last_trace_event->GetDouble("ts", &last_trace_event_timestamp)); |
| 2467 EXPECT_LE(last_trace_event_timestamp, buffer_limit_reached_timestamp); | 2489 EXPECT_LE(last_trace_event_timestamp, buffer_limit_reached_timestamp); |
| 2468 EXPECT_LE(buffer_limit_reached_timestamp, | 2490 EXPECT_LE(buffer_limit_reached_timestamp, |
| 2469 trace_log->OffsetNow().ToInternalValue()); | 2491 trace_log->OffsetNow().ToInternalValue()); |
| 2470 } | 2492 } |
| 2471 | 2493 |
| 2472 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { | 2494 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { |
| 2473 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2495 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 2474 base::debug::TraceLog::RECORDING_MODE, | 2496 base::debug::TraceLog::RECORDING_MODE, |
| 2475 TraceLog::RECORD_CONTINUOUSLY); | 2497 TraceOptions("record-continuously")); |
| 2476 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2498 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
| 2477 size_t capacity = buffer->Capacity(); | 2499 size_t capacity = buffer->Capacity(); |
| 2478 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2500 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
| 2479 uint32 last_seq = 0; | 2501 uint32 last_seq = 0; |
| 2480 size_t chunk_index; | 2502 size_t chunk_index; |
| 2481 EXPECT_EQ(0u, buffer->Size()); | 2503 EXPECT_EQ(0u, buffer->Size()); |
| 2482 | 2504 |
| 2483 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); | 2505 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); |
| 2484 for (size_t i = 0; i < num_chunks; ++i) { | 2506 for (size_t i = 0; i < num_chunks; ++i) { |
| 2485 chunks[i] = buffer->GetChunk(&chunk_index).release(); | 2507 chunks[i] = buffer->GetChunk(&chunk_index).release(); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2525 | 2547 |
| 2526 for (size_t i = 0; i < num_chunks; ++i) | 2548 for (size_t i = 0; i < num_chunks; ++i) |
| 2527 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); | 2549 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); |
| 2528 | 2550 |
| 2529 TraceLog::GetInstance()->SetDisabled(); | 2551 TraceLog::GetInstance()->SetDisabled(); |
| 2530 } | 2552 } |
| 2531 | 2553 |
| 2532 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) { | 2554 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) { |
| 2533 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2555 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 2534 base::debug::TraceLog::RECORDING_MODE, | 2556 base::debug::TraceLog::RECORDING_MODE, |
| 2535 TraceLog::RECORD_CONTINUOUSLY); | 2557 TraceOptions("record-continuously")); |
| 2536 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2558 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
| 2537 size_t capacity = buffer->Capacity(); | 2559 size_t capacity = buffer->Capacity(); |
| 2538 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2560 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
| 2539 size_t chunk_index; | 2561 size_t chunk_index; |
| 2540 EXPECT_EQ(0u, buffer->Size()); | 2562 EXPECT_EQ(0u, buffer->Size()); |
| 2541 EXPECT_FALSE(buffer->NextChunk()); | 2563 EXPECT_FALSE(buffer->NextChunk()); |
| 2542 | 2564 |
| 2543 size_t half_chunks = num_chunks / 2; | 2565 size_t half_chunks = num_chunks / 2; |
| 2544 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]); | 2566 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]); |
| 2545 | 2567 |
| 2546 for (size_t i = 0; i < half_chunks; ++i) { | 2568 for (size_t i = 0; i < half_chunks; ++i) { |
| 2547 chunks[i] = buffer->GetChunk(&chunk_index).release(); | 2569 chunks[i] = buffer->GetChunk(&chunk_index).release(); |
| 2548 EXPECT_TRUE(chunks[i]); | 2570 EXPECT_TRUE(chunks[i]); |
| 2549 EXPECT_EQ(i, chunk_index); | 2571 EXPECT_EQ(i, chunk_index); |
| 2550 } | 2572 } |
| 2551 for (size_t i = 0; i < half_chunks; ++i) | 2573 for (size_t i = 0; i < half_chunks; ++i) |
| 2552 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); | 2574 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); |
| 2553 | 2575 |
| 2554 for (size_t i = 0; i < half_chunks; ++i) | 2576 for (size_t i = 0; i < half_chunks; ++i) |
| 2555 EXPECT_EQ(chunks[i], buffer->NextChunk()); | 2577 EXPECT_EQ(chunks[i], buffer->NextChunk()); |
| 2556 EXPECT_FALSE(buffer->NextChunk()); | 2578 EXPECT_FALSE(buffer->NextChunk()); |
| 2557 TraceLog::GetInstance()->SetDisabled(); | 2579 TraceLog::GetInstance()->SetDisabled(); |
| 2558 } | 2580 } |
| 2559 | 2581 |
| 2560 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) { | 2582 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) { |
| 2561 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2583 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
| 2562 base::debug::TraceLog::RECORDING_MODE, | 2584 base::debug::TraceLog::RECORDING_MODE, |
| 2563 TraceLog::RECORD_CONTINUOUSLY); | 2585 TraceOptions("record-continuously")); |
| 2564 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2586 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
| 2565 size_t capacity = buffer->Capacity(); | 2587 size_t capacity = buffer->Capacity(); |
| 2566 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2588 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
| 2567 size_t chunk_index; | 2589 size_t chunk_index; |
| 2568 EXPECT_EQ(0u, buffer->Size()); | 2590 EXPECT_EQ(0u, buffer->Size()); |
| 2569 EXPECT_FALSE(buffer->NextChunk()); | 2591 EXPECT_FALSE(buffer->NextChunk()); |
| 2570 | 2592 |
| 2571 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); | 2593 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); |
| 2572 | 2594 |
| 2573 for (size_t i = 0; i < num_chunks; ++i) { | 2595 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)); | 2731 FROM_HERE, Bind(&BlockUntilStopped, &task_start_event, &task_stop_event)); |
| 2710 task_start_event.Wait(); | 2732 task_start_event.Wait(); |
| 2711 | 2733 |
| 2712 EndTraceAndFlush(); | 2734 EndTraceAndFlush(); |
| 2713 ValidateAllTraceMacrosCreatedData(trace_parsed_); | 2735 ValidateAllTraceMacrosCreatedData(trace_parsed_); |
| 2714 | 2736 |
| 2715 task_stop_event.Signal(); | 2737 task_stop_event.Signal(); |
| 2716 thread.Stop(); | 2738 thread.Stop(); |
| 2717 } | 2739 } |
| 2718 | 2740 |
| 2741 TEST_F(TraceEventTestFixture, ConvertTraceOptionsToInternalOptions) { |
| 2742 TraceLog* trace_log = TraceLog::GetInstance(); |
| 2743 TraceOptions options(TraceOptions::RECORD_UNTIL_FULL); |
| 2744 EXPECT_TRUE(TraceLog::RECORD_UNTIL_FULL & |
| 2745 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2746 |
| 2747 options.record_mode = TraceOptions::RECORD_CONTINUOUSLY; |
| 2748 EXPECT_TRUE(TraceLog::RECORD_CONTINUOUSLY & |
| 2749 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2750 |
| 2751 options.record_mode = TraceOptions::ECHO_TO_CONSOLE; |
| 2752 EXPECT_TRUE(TraceLog::ECHO_TO_CONSOLE & |
| 2753 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2754 |
| 2755 options.enable_sampling = true; |
| 2756 |
| 2757 options.record_mode = TraceOptions::RECORD_UNTIL_FULL; |
| 2758 EXPECT_TRUE(TraceLog::RECORD_UNTIL_FULL & |
| 2759 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2760 EXPECT_TRUE(TraceLog::ENABLE_SAMPLING & |
| 2761 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2762 |
| 2763 options.record_mode = TraceOptions::RECORD_CONTINUOUSLY; |
| 2764 EXPECT_TRUE(TraceLog::RECORD_CONTINUOUSLY & |
| 2765 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2766 EXPECT_TRUE(TraceLog::ENABLE_SAMPLING & |
| 2767 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2768 |
| 2769 options.record_mode = TraceOptions::ECHO_TO_CONSOLE; |
| 2770 EXPECT_TRUE(TraceLog::ECHO_TO_CONSOLE & |
| 2771 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2772 EXPECT_TRUE(TraceLog::ENABLE_SAMPLING & |
| 2773 trace_log->GetInternalOptionsFromTraceOptions(options)); |
| 2774 } |
| 2775 |
| 2719 void SetBlockingFlagAndBlockUntilStopped(WaitableEvent* task_start_event, | 2776 void SetBlockingFlagAndBlockUntilStopped(WaitableEvent* task_start_event, |
| 2720 WaitableEvent* task_stop_event) { | 2777 WaitableEvent* task_stop_event) { |
| 2721 TraceLog::GetInstance()->SetCurrentThreadBlocksMessageLoop(); | 2778 TraceLog::GetInstance()->SetCurrentThreadBlocksMessageLoop(); |
| 2722 BlockUntilStopped(task_start_event, task_stop_event); | 2779 BlockUntilStopped(task_start_event, task_stop_event); |
| 2723 } | 2780 } |
| 2724 | 2781 |
| 2725 TEST_F(TraceEventTestFixture, SetCurrentThreadBlocksMessageLoopAfterTracing) { | 2782 TEST_F(TraceEventTestFixture, SetCurrentThreadBlocksMessageLoopAfterTracing) { |
| 2726 BeginTrace(); | 2783 BeginTrace(); |
| 2727 | 2784 |
| 2728 Thread thread("1"); | 2785 Thread thread("1"); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2800 g_log_buffer = new std::string(); | 2857 g_log_buffer = new std::string(); |
| 2801 g_log_buffer->append(str); | 2858 g_log_buffer->append(str); |
| 2802 return false; | 2859 return false; |
| 2803 } | 2860 } |
| 2804 | 2861 |
| 2805 TEST_F(TraceEventTestFixture, EchoToConsole) { | 2862 TEST_F(TraceEventTestFixture, EchoToConsole) { |
| 2806 logging::LogMessageHandlerFunction old_log_message_handler = | 2863 logging::LogMessageHandlerFunction old_log_message_handler = |
| 2807 logging::GetLogMessageHandler(); | 2864 logging::GetLogMessageHandler(); |
| 2808 logging::SetLogMessageHandler(MockLogMessageHandler); | 2865 logging::SetLogMessageHandler(MockLogMessageHandler); |
| 2809 | 2866 |
| 2810 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2867 TraceLog::GetInstance()->SetEnabled( |
| 2811 base::debug::TraceLog::RECORDING_MODE, | 2868 CategoryFilter("*"), |
| 2812 TraceLog::ECHO_TO_CONSOLE); | 2869 base::debug::TraceLog::RECORDING_MODE, |
| 2870 TraceOptions(TraceOptions::ECHO_TO_CONSOLE)); |
| 2813 TRACE_EVENT_BEGIN0("a", "begin_end"); | 2871 TRACE_EVENT_BEGIN0("a", "begin_end"); |
| 2814 { | 2872 { |
| 2815 TRACE_EVENT0("b", "duration"); | 2873 TRACE_EVENT0("b", "duration"); |
| 2816 TRACE_EVENT0("b1", "duration1"); | 2874 TRACE_EVENT0("b1", "duration1"); |
| 2817 } | 2875 } |
| 2818 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); | 2876 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); |
| 2819 TRACE_EVENT_END0("a", "begin_end"); | 2877 TRACE_EVENT_END0("a", "begin_end"); |
| 2820 | 2878 |
| 2821 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b")); | 2879 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")); | 2880 EXPECT_NE(std::string::npos, g_log_buffer->find("| duration[b]\x1b")); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 2836 const std::string&) { | 2894 const std::string&) { |
| 2837 TRACE_EVENT0("log", "trace_event"); | 2895 TRACE_EVENT0("log", "trace_event"); |
| 2838 return false; | 2896 return false; |
| 2839 } | 2897 } |
| 2840 | 2898 |
| 2841 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { | 2899 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { |
| 2842 logging::LogMessageHandlerFunction old_log_message_handler = | 2900 logging::LogMessageHandlerFunction old_log_message_handler = |
| 2843 logging::GetLogMessageHandler(); | 2901 logging::GetLogMessageHandler(); |
| 2844 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent); | 2902 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent); |
| 2845 | 2903 |
| 2846 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2904 TraceLog::GetInstance()->SetEnabled( |
| 2847 base::debug::TraceLog::RECORDING_MODE, | 2905 CategoryFilter("*"), |
| 2848 TraceLog::ECHO_TO_CONSOLE); | 2906 base::debug::TraceLog::RECORDING_MODE, |
| 2907 TraceOptions(TraceOptions::ECHO_TO_CONSOLE)); |
| 2849 { | 2908 { |
| 2850 // This should not cause deadlock or infinite recursion. | 2909 // This should not cause deadlock or infinite recursion. |
| 2851 TRACE_EVENT0("b", "duration"); | 2910 TRACE_EVENT0("b", "duration"); |
| 2852 } | 2911 } |
| 2853 | 2912 |
| 2854 EndTraceAndFlush(); | 2913 EndTraceAndFlush(); |
| 2855 logging::SetLogMessageHandler(old_log_message_handler); | 2914 logging::SetLogMessageHandler(old_log_message_handler); |
| 2856 } | 2915 } |
| 2857 | 2916 |
| 2858 TEST_F(TraceEventTestFixture, TimeOffset) { | 2917 TEST_F(TraceEventTestFixture, TimeOffset) { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2925 filter1.Merge(filter2); | 2984 filter1.Merge(filter2); |
| 2926 EXPECT_EQ(2u, filter1.GetSyntheticDelayValues().size()); | 2985 EXPECT_EQ(2u, filter1.GetSyntheticDelayValues().size()); |
| 2927 } | 2986 } |
| 2928 | 2987 |
| 2929 TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) { | 2988 TEST_F(TraceEventTestFixture, SyntheticDelayConfigurationToString) { |
| 2930 const char config[] = "DELAY(test.Delay;16;oneshot)"; | 2989 const char config[] = "DELAY(test.Delay;16;oneshot)"; |
| 2931 CategoryFilter filter(config); | 2990 CategoryFilter filter(config); |
| 2932 EXPECT_EQ(config, filter.ToString()); | 2991 EXPECT_EQ(config, filter.ToString()); |
| 2933 } | 2992 } |
| 2934 | 2993 |
| 2994 TEST(TraceOptionsTest, TraceOptionsFromString) { |
| 2995 TraceOptions options = TraceOptions("record-until-full"); |
| 2996 EXPECT_EQ(TraceOptions::RECORD_UNTIL_FULL, options.record_mode); |
| 2997 EXPECT_FALSE(options.enable_sampling); |
| 2998 |
| 2999 options = TraceOptions("record-continuously"); |
| 3000 EXPECT_EQ(TraceOptions::RECORD_CONTINUOUSLY, options.record_mode); |
| 3001 EXPECT_FALSE(options.enable_sampling); |
| 3002 EXPECT_FALSE(options.enable_systrace); |
| 3003 |
| 3004 options = TraceOptions("trace-to-console"); |
| 3005 EXPECT_EQ(TraceOptions::ECHO_TO_CONSOLE, options.record_mode); |
| 3006 EXPECT_FALSE(options.enable_sampling); |
| 3007 EXPECT_FALSE(options.enable_systrace); |
| 3008 |
| 3009 options = TraceOptions("record-until-full, enable-sampling"); |
| 3010 EXPECT_EQ(TraceOptions::RECORD_UNTIL_FULL, options.record_mode); |
| 3011 EXPECT_TRUE(options.enable_sampling); |
| 3012 EXPECT_FALSE(options.enable_systrace); |
| 3013 |
| 3014 options = TraceOptions("enable-systrace,record-continuously"); |
| 3015 EXPECT_EQ(TraceOptions::RECORD_CONTINUOUSLY, options.record_mode); |
| 3016 EXPECT_FALSE(options.enable_sampling); |
| 3017 EXPECT_TRUE(options.enable_systrace); |
| 3018 |
| 3019 options = TraceOptions("enable-systrace, trace-to-console,enable-sampling"); |
| 3020 EXPECT_EQ(TraceOptions::ECHO_TO_CONSOLE, options.record_mode); |
| 3021 EXPECT_TRUE(options.enable_sampling); |
| 3022 EXPECT_TRUE(options.enable_systrace); |
| 3023 } |
| 3024 |
| 3025 TEST(TraceOptionsTest, TraceOptionsToString) { |
| 3026 // Test that we can intialize TraceOptions from a string got from |
| 3027 // TraceOptions.ToString() method to get a same TraceOptions. |
| 3028 TraceOptions::RecordMode modes[] = {TraceOptions::RECORD_UNTIL_FULL, |
| 3029 TraceOptions::RECORD_CONTINUOUSLY, |
| 3030 TraceOptions::ECHO_TO_CONSOLE}; |
| 3031 bool enable_sampling_options[] = {true, false}; |
| 3032 bool enable_systrace_options[] = {true, false}; |
| 3033 |
| 3034 for (int i = 0; i < 3; ++i) { |
| 3035 for (int j = 0; j < 2; ++j) { |
| 3036 for (int k = 0; k < 2; ++k) { |
| 3037 TraceOptions original_option = |
| 3038 TraceOptions(modes[i]) |
| 3039 .EnableSampling(enable_sampling_options[j]) |
| 3040 .EnableSystrace(enable_systrace_options[k]); |
| 3041 TraceOptions new_options = TraceOptions(original_option.ToString()); |
| 3042 EXPECT_EQ(original_option.record_mode, new_options.record_mode); |
| 3043 EXPECT_EQ(original_option.enable_sampling, new_options.enable_sampling); |
| 3044 EXPECT_EQ(original_option.enable_systrace, new_options.enable_systrace); |
| 3045 } |
| 3046 } |
| 3047 } |
| 3048 } |
| 3049 |
| 3050 |
| 2935 } // namespace debug | 3051 } // namespace debug |
| 2936 } // namespace base | 3052 } // namespace base |
| OLD | NEW |