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

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

Issue 425593002: Refactor trace_event_impl's SetEnabled to use TraceOptions. Propagate this through the whole stack. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/debug/trace_event_unittest.h" 5 #include "base/debug/trace_event_unittest.h"
6 6
7 #include <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
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, false));
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
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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
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, false));
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
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, false));
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, false));
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, false));
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
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, 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, 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
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, 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
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, false));
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
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, false));
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
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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, false));
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
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
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
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, false);
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
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, false));
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
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, false));
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
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
3003 options = TraceOptions("trace-to-console");
3004 EXPECT_EQ(TraceOptions::ECHO_TO_CONSOLE, options.record_mode);
3005 EXPECT_FALSE(options.enable_sampling);
3006
3007 options = TraceOptions("record-until-full, enable-sampling");
3008 EXPECT_EQ(TraceOptions::RECORD_UNTIL_FULL, options.record_mode);
3009 EXPECT_TRUE(options.enable_sampling);
3010
3011 options = TraceOptions("enable-sampling,record-continuously");
3012 EXPECT_EQ(TraceOptions::RECORD_CONTINUOUSLY, options.record_mode);
3013 EXPECT_TRUE(options.enable_sampling);
3014
3015 options = TraceOptions("trace-to-console,enable-sampling");
3016 EXPECT_EQ(TraceOptions::ECHO_TO_CONSOLE, options.record_mode);
3017 EXPECT_TRUE(options.enable_sampling);
3018 }
3019
3020 TEST(TraceOptionsTest, TraceOptionsToString) {
3021 // Test that we can intialize TraceOptions from a string got from
3022 // TraceOptions.ToString() method to get a same TraceOptions.
3023 TraceOptions::RecordMode modes[] = {TraceOptions::RECORD_UNTIL_FULL,
3024 TraceOptions::RECORD_CONTINUOUSLY,
3025 TraceOptions::ECHO_TO_CONSOLE};
3026 bool enable_sampling_options[] = {true, false};
3027
3028 for (int i = 0; i < 3; ++i) {
3029 for (int j = 0; j < 2; ++j) {
3030 TraceOptions original_option =
3031 TraceOptions(modes[i], enable_sampling_options[j]);
3032 TraceOptions new_options = TraceOptions(original_option.ToString());
3033 EXPECT_EQ(original_option.record_mode, new_options.record_mode);
3034 EXPECT_EQ(original_option.enable_sampling, new_options.enable_sampling);
3035 }
3036 }
3037 }
3038
3039
2935 } // namespace debug 3040 } // namespace debug
2936 } // namespace base 3041 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698