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