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

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: Address Dan's comments 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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698