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

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

Issue 122053002: Revert 242671 "Implement sampling profiler (chromium side change)" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 11 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 | Annotate | Revision Log
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 <cstdlib> 7 #include <cstdlib>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 json_output_.json_output.clear(); 71 json_output_.json_output.clear();
72 } 72 }
73 73
74 void BeginTrace() { 74 void BeginTrace() {
75 BeginSpecificTrace("*"); 75 BeginSpecificTrace("*");
76 } 76 }
77 77
78 void BeginSpecificTrace(const std::string& filter) { 78 void BeginSpecificTrace(const std::string& filter) {
79 event_watch_notification_ = 0; 79 event_watch_notification_ = 0;
80 TraceLog::GetInstance()->SetEnabled(CategoryFilter(filter), 80 TraceLog::GetInstance()->SetEnabled(CategoryFilter(filter),
81 base::debug::TraceLog::RECORDING_MODE,
82 TraceLog::RECORD_UNTIL_FULL); 81 TraceLog::RECORD_UNTIL_FULL);
83 } 82 }
84 83
85 void EndTraceAndFlush() { 84 void EndTraceAndFlush() {
86 WaitableEvent flush_complete_event(false, false); 85 WaitableEvent flush_complete_event(false, false);
87 EndTraceAndFlushAsync(&flush_complete_event); 86 EndTraceAndFlushAsync(&flush_complete_event);
88 flush_complete_event.Wait(); 87 flush_complete_event.Wait();
89 } 88 }
90 89
91 // Used when testing thread-local buffers which requires the thread initiating 90 // Used when testing thread-local buffers which requires the thread initiating
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 void HighResSleepForTraceTest(base::TimeDelta elapsed) { 846 void HighResSleepForTraceTest(base::TimeDelta elapsed) {
848 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; 847 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed;
849 do { 848 do {
850 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); 849 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1));
851 } while (base::TimeTicks::HighResNow() < end_time); 850 } while (base::TimeTicks::HighResNow() < end_time);
852 } 851 }
853 852
854 // Simple Test for emitting data and validating it was received. 853 // Simple Test for emitting data and validating it was received.
855 TEST_F(TraceEventTestFixture, DataCaptured) { 854 TEST_F(TraceEventTestFixture, DataCaptured) {
856 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 855 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
857 base::debug::TraceLog::RECORDING_MODE,
858 TraceLog::RECORD_UNTIL_FULL); 856 TraceLog::RECORD_UNTIL_FULL);
859 857
860 TraceWithAllMacroVariants(NULL); 858 TraceWithAllMacroVariants(NULL);
861 859
862 EndTraceAndFlush(); 860 EndTraceAndFlush();
863 861
864 ValidateAllTraceMacrosCreatedData(trace_parsed_); 862 ValidateAllTraceMacrosCreatedData(trace_parsed_);
865 } 863 }
866 864
867 class MockEnabledStateChangedObserver : 865 class MockEnabledStateChangedObserver :
868 public base::debug::TraceLog::EnabledStateObserver { 866 public base::debug::TraceLog::EnabledStateObserver {
869 public: 867 public:
870 MOCK_METHOD0(OnTraceLogEnabled, void()); 868 MOCK_METHOD0(OnTraceLogEnabled, void());
871 MOCK_METHOD0(OnTraceLogDisabled, void()); 869 MOCK_METHOD0(OnTraceLogDisabled, void());
872 }; 870 };
873 871
874 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { 872 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
875 MockEnabledStateChangedObserver observer; 873 MockEnabledStateChangedObserver observer;
876 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 874 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
877 875
878 EXPECT_CALL(observer, OnTraceLogEnabled()) 876 EXPECT_CALL(observer, OnTraceLogEnabled())
879 .Times(1); 877 .Times(1);
880 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 878 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
881 base::debug::TraceLog::RECORDING_MODE,
882 TraceLog::RECORD_UNTIL_FULL); 879 TraceLog::RECORD_UNTIL_FULL);
883 testing::Mock::VerifyAndClear(&observer); 880 testing::Mock::VerifyAndClear(&observer);
884 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 881 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
885 882
886 // Cleanup. 883 // Cleanup.
887 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 884 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
888 TraceLog::GetInstance()->SetDisabled(); 885 TraceLog::GetInstance()->SetDisabled();
889 } 886 }
890 887
891 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { 888 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
892 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 889 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
893 base::debug::TraceLog::RECORDING_MODE,
894 TraceLog::RECORD_UNTIL_FULL); 890 TraceLog::RECORD_UNTIL_FULL);
895 891
896 testing::StrictMock<MockEnabledStateChangedObserver> observer; 892 testing::StrictMock<MockEnabledStateChangedObserver> observer;
897 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 893 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
898 894
899 EXPECT_CALL(observer, OnTraceLogEnabled()) 895 EXPECT_CALL(observer, OnTraceLogEnabled())
900 .Times(0); 896 .Times(0);
901 EXPECT_CALL(observer, OnTraceLogDisabled()) 897 EXPECT_CALL(observer, OnTraceLogDisabled())
902 .Times(0); 898 .Times(0);
903 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 899 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
904 base::debug::TraceLog::RECORDING_MODE,
905 TraceLog::RECORD_UNTIL_FULL); 900 TraceLog::RECORD_UNTIL_FULL);
906 testing::Mock::VerifyAndClear(&observer); 901 testing::Mock::VerifyAndClear(&observer);
907 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 902 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
908 903
909 // Cleanup. 904 // Cleanup.
910 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 905 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
911 TraceLog::GetInstance()->SetDisabled(); 906 TraceLog::GetInstance()->SetDisabled();
912 TraceLog::GetInstance()->SetDisabled(); 907 TraceLog::GetInstance()->SetDisabled();
913 } 908 }
914 909
915 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { 910 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) {
916 CategoryFilter cf_inc_all("*"); 911 CategoryFilter cf_inc_all("*");
917 TraceLog::GetInstance()->SetEnabled(cf_inc_all, 912 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
918 base::debug::TraceLog::RECORDING_MODE, 913 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
919 TraceLog::RECORD_UNTIL_FULL);
920 TraceLog::GetInstance()->SetEnabled(cf_inc_all,
921 base::debug::TraceLog::RECORDING_MODE,
922 TraceLog::RECORD_UNTIL_FULL);
923 914
924 testing::StrictMock<MockEnabledStateChangedObserver> observer; 915 testing::StrictMock<MockEnabledStateChangedObserver> observer;
925 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 916 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
926 917
927 EXPECT_CALL(observer, OnTraceLogEnabled()) 918 EXPECT_CALL(observer, OnTraceLogEnabled())
928 .Times(0); 919 .Times(0);
929 EXPECT_CALL(observer, OnTraceLogDisabled()) 920 EXPECT_CALL(observer, OnTraceLogDisabled())
930 .Times(1); 921 .Times(1);
931 TraceLog::GetInstance()->SetDisabled(); 922 TraceLog::GetInstance()->SetDisabled();
932 testing::Mock::VerifyAndClear(&observer); 923 testing::Mock::VerifyAndClear(&observer);
933 924
934 // Cleanup. 925 // Cleanup.
935 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 926 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
936 TraceLog::GetInstance()->SetDisabled(); 927 TraceLog::GetInstance()->SetDisabled();
937 } 928 }
938 929
939 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { 930 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
940 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 931 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
941 base::debug::TraceLog::RECORDING_MODE,
942 TraceLog::RECORD_UNTIL_FULL); 932 TraceLog::RECORD_UNTIL_FULL);
943 933
944 MockEnabledStateChangedObserver observer; 934 MockEnabledStateChangedObserver observer;
945 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 935 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
946 936
947 EXPECT_CALL(observer, OnTraceLogDisabled()) 937 EXPECT_CALL(observer, OnTraceLogDisabled())
948 .Times(1); 938 .Times(1);
949 TraceLog::GetInstance()->SetDisabled(); 939 TraceLog::GetInstance()->SetDisabled();
950 testing::Mock::VerifyAndClear(&observer); 940 testing::Mock::VerifyAndClear(&observer);
951 941
(...skipping 16 matching lines...) Expand all
968 virtual void OnTraceLogDisabled() OVERRIDE { 958 virtual void OnTraceLogDisabled() OVERRIDE {
969 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 959 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
970 } 960 }
971 }; 961 };
972 962
973 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { 963 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) {
974 AfterStateChangeEnabledStateObserver observer; 964 AfterStateChangeEnabledStateObserver observer;
975 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 965 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
976 966
977 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 967 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
978 base::debug::TraceLog::RECORDING_MODE,
979 TraceLog::RECORD_UNTIL_FULL); 968 TraceLog::RECORD_UNTIL_FULL);
980 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 969 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
981 970
982 TraceLog::GetInstance()->SetDisabled(); 971 TraceLog::GetInstance()->SetDisabled();
983 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 972 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
984 973
985 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 974 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
986 } 975 }
987 976
988 // Tests that a state observer can remove itself during a callback. 977 // Tests that a state observer can remove itself during a callback.
(...skipping 12 matching lines...) Expand all
1001 }; 990 };
1002 991
1003 TEST_F(TraceEventTestFixture, SelfRemovingObserver) { 992 TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
1004 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); 993 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
1005 994
1006 SelfRemovingEnabledStateObserver observer; 995 SelfRemovingEnabledStateObserver observer;
1007 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 996 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
1008 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); 997 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest());
1009 998
1010 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 999 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1011 base::debug::TraceLog::RECORDING_MODE,
1012 TraceLog::RECORD_UNTIL_FULL); 1000 TraceLog::RECORD_UNTIL_FULL);
1013 TraceLog::GetInstance()->SetDisabled(); 1001 TraceLog::GetInstance()->SetDisabled();
1014 // The observer removed itself on disable. 1002 // The observer removed itself on disable.
1015 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); 1003 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
1016 } 1004 }
1017 1005
1018 bool IsNewTrace() { 1006 bool IsNewTrace() {
1019 bool is_new_trace; 1007 bool is_new_trace;
1020 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); 1008 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
1021 return is_new_trace; 1009 return is_new_trace;
1022 } 1010 }
1023 1011
1024 TEST_F(TraceEventTestFixture, NewTraceRecording) { 1012 TEST_F(TraceEventTestFixture, NewTraceRecording) {
1025 ASSERT_FALSE(IsNewTrace()); 1013 ASSERT_FALSE(IsNewTrace());
1026 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1014 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1027 base::debug::TraceLog::RECORDING_MODE,
1028 TraceLog::RECORD_UNTIL_FULL); 1015 TraceLog::RECORD_UNTIL_FULL);
1029 // First call to IsNewTrace() should succeed. But, the second shouldn't. 1016 // First call to IsNewTrace() should succeed. But, the second shouldn't.
1030 ASSERT_TRUE(IsNewTrace()); 1017 ASSERT_TRUE(IsNewTrace());
1031 ASSERT_FALSE(IsNewTrace()); 1018 ASSERT_FALSE(IsNewTrace());
1032 EndTraceAndFlush(); 1019 EndTraceAndFlush();
1033 1020
1034 // IsNewTrace() should definitely be false now. 1021 // IsNewTrace() should definitely be false now.
1035 ASSERT_FALSE(IsNewTrace()); 1022 ASSERT_FALSE(IsNewTrace());
1036 1023
1037 // Start another trace. IsNewTrace() should become true again, briefly, as 1024 // Start another trace. IsNewTrace() should become true again, briefly, as
1038 // before. 1025 // before.
1039 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1026 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1040 base::debug::TraceLog::RECORDING_MODE,
1041 TraceLog::RECORD_UNTIL_FULL); 1027 TraceLog::RECORD_UNTIL_FULL);
1042 ASSERT_TRUE(IsNewTrace()); 1028 ASSERT_TRUE(IsNewTrace());
1043 ASSERT_FALSE(IsNewTrace()); 1029 ASSERT_FALSE(IsNewTrace());
1044 1030
1045 // Cleanup. 1031 // Cleanup.
1046 EndTraceAndFlush(); 1032 EndTraceAndFlush();
1047 } 1033 }
1048 1034
1049 1035
1050 // Test that categories work. 1036 // Test that categories work.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 const std::vector<std::string> empty_categories; 1073 const std::vector<std::string> empty_categories;
1088 std::vector<std::string> included_categories; 1074 std::vector<std::string> included_categories;
1089 std::vector<std::string> excluded_categories; 1075 std::vector<std::string> excluded_categories;
1090 1076
1091 // Test that category filtering works. 1077 // Test that category filtering works.
1092 1078
1093 // Include nonexistent category -> no events 1079 // Include nonexistent category -> no events
1094 Clear(); 1080 Clear();
1095 included_categories.clear(); 1081 included_categories.clear();
1096 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"), 1082 TraceLog::GetInstance()->SetEnabled(CategoryFilter("not_found823564786"),
1097 base::debug::TraceLog::RECORDING_MODE,
1098 TraceLog::RECORD_UNTIL_FULL); 1083 TraceLog::RECORD_UNTIL_FULL);
1099 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); 1084 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
1100 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); 1085 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
1101 EndTraceAndFlush(); 1086 EndTraceAndFlush();
1102 EXPECT_TRUE(trace_parsed_.empty()); 1087 EXPECT_TRUE(trace_parsed_.empty());
1103 1088
1104 // Include existent category -> only events of that category 1089 // Include existent category -> only events of that category
1105 Clear(); 1090 Clear();
1106 included_categories.clear(); 1091 included_categories.clear();
1107 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"), 1092 TraceLog::GetInstance()->SetEnabled(CategoryFilter("inc"),
1108 base::debug::TraceLog::RECORDING_MODE,
1109 TraceLog::RECORD_UNTIL_FULL); 1093 TraceLog::RECORD_UNTIL_FULL);
1110 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); 1094 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
1111 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); 1095 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
1112 EndTraceAndFlush(); 1096 EndTraceAndFlush();
1113 EXPECT_TRUE(FindMatchingValue("cat", "inc")); 1097 EXPECT_TRUE(FindMatchingValue("cat", "inc"));
1114 EXPECT_FALSE(FindNonMatchingValue("cat", "inc")); 1098 EXPECT_FALSE(FindNonMatchingValue("cat", "inc"));
1115 1099
1116 // Include existent wildcard -> all categories matching wildcard 1100 // Include existent wildcard -> all categories matching wildcard
1117 Clear(); 1101 Clear();
1118 included_categories.clear(); 1102 included_categories.clear();
1119 TraceLog::GetInstance()->SetEnabled( 1103 TraceLog::GetInstance()->SetEnabled(
1120 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"), 1104 CategoryFilter("inc_wildcard_*,inc_wildchar_?_end"),
1121 base::debug::TraceLog::RECORDING_MODE,
1122 TraceLog::RECORD_UNTIL_FULL); 1105 TraceLog::RECORD_UNTIL_FULL);
1123 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included", 1106 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "included",
1124 TRACE_EVENT_SCOPE_THREAD); 1107 TRACE_EVENT_SCOPE_THREAD);
1125 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD); 1108 TRACE_EVENT_INSTANT0("inc_wildcard_", "included", TRACE_EVENT_SCOPE_THREAD);
1126 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included", 1109 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "included",
1127 TRACE_EVENT_SCOPE_THREAD); 1110 TRACE_EVENT_SCOPE_THREAD);
1128 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc", 1111 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "not_inc",
1129 TRACE_EVENT_SCOPE_THREAD); 1112 TRACE_EVENT_SCOPE_THREAD);
1130 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD); 1113 TRACE_EVENT_INSTANT0("cat1", "not_inc", TRACE_EVENT_SCOPE_THREAD);
1131 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD); 1114 TRACE_EVENT_INSTANT0("cat2", "not_inc", TRACE_EVENT_SCOPE_THREAD);
1132 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included", 1115 TRACE_EVENT_INSTANT0("inc_wildcard_category,other_category", "included",
1133 TRACE_EVENT_SCOPE_THREAD); 1116 TRACE_EVENT_SCOPE_THREAD);
1134 TRACE_EVENT_INSTANT0( 1117 TRACE_EVENT_INSTANT0(
1135 "non_included_category,inc_wildcard_category", "included", 1118 "non_included_category,inc_wildcard_category", "included",
1136 TRACE_EVENT_SCOPE_THREAD); 1119 TRACE_EVENT_SCOPE_THREAD);
1137 EndTraceAndFlush(); 1120 EndTraceAndFlush();
1138 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc")); 1121 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_abc"));
1139 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_")); 1122 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_"));
1140 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end")); 1123 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_x_end"));
1141 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); 1124 EXPECT_FALSE(FindMatchingValue("name", "not_inc"));
1142 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category")); 1125 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildcard_category,other_category"));
1143 EXPECT_TRUE(FindMatchingValue("cat", 1126 EXPECT_TRUE(FindMatchingValue("cat",
1144 "non_included_category,inc_wildcard_category")); 1127 "non_included_category,inc_wildcard_category"));
1145 1128
1146 included_categories.clear(); 1129 included_categories.clear();
1147 1130
1148 // Exclude nonexistent category -> all events 1131 // Exclude nonexistent category -> all events
1149 Clear(); 1132 Clear();
1150 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"), 1133 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-not_found823564786"),
1151 base::debug::TraceLog::RECORDING_MODE,
1152 TraceLog::RECORD_UNTIL_FULL); 1134 TraceLog::RECORD_UNTIL_FULL);
1153 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD); 1135 TRACE_EVENT_INSTANT0("cat1", "name", TRACE_EVENT_SCOPE_THREAD);
1154 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD); 1136 TRACE_EVENT_INSTANT0("cat2", "name", TRACE_EVENT_SCOPE_THREAD);
1155 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD); 1137 TRACE_EVENT_INSTANT0("category1,category2", "name", TRACE_EVENT_SCOPE_THREAD);
1156 EndTraceAndFlush(); 1138 EndTraceAndFlush();
1157 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); 1139 EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
1158 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); 1140 EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
1159 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2")); 1141 EXPECT_TRUE(FindMatchingValue("cat", "category1,category2"));
1160 1142
1161 // Exclude existent category -> only events of other categories 1143 // Exclude existent category -> only events of other categories
1162 Clear(); 1144 Clear();
1163 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"), 1145 TraceLog::GetInstance()->SetEnabled(CategoryFilter("-inc"),
1164 base::debug::TraceLog::RECORDING_MODE,
1165 TraceLog::RECORD_UNTIL_FULL); 1146 TraceLog::RECORD_UNTIL_FULL);
1166 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD); 1147 TRACE_EVENT_INSTANT0("inc", "name", TRACE_EVENT_SCOPE_THREAD);
1167 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD); 1148 TRACE_EVENT_INSTANT0("inc2", "name", TRACE_EVENT_SCOPE_THREAD);
1168 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD); 1149 TRACE_EVENT_INSTANT0("inc2,inc", "name", TRACE_EVENT_SCOPE_THREAD);
1169 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD); 1150 TRACE_EVENT_INSTANT0("inc,inc2", "name", TRACE_EVENT_SCOPE_THREAD);
1170 EndTraceAndFlush(); 1151 EndTraceAndFlush();
1171 EXPECT_TRUE(FindMatchingValue("cat", "inc2")); 1152 EXPECT_TRUE(FindMatchingValue("cat", "inc2"));
1172 EXPECT_FALSE(FindMatchingValue("cat", "inc")); 1153 EXPECT_FALSE(FindMatchingValue("cat", "inc"));
1173 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc")); 1154 EXPECT_FALSE(FindMatchingValue("cat", "inc2,inc"));
1174 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2")); 1155 EXPECT_FALSE(FindMatchingValue("cat", "inc,inc2"));
1175 1156
1176 // Exclude existent wildcard -> all categories not matching wildcard 1157 // Exclude existent wildcard -> all categories not matching wildcard
1177 Clear(); 1158 Clear();
1178 TraceLog::GetInstance()->SetEnabled( 1159 TraceLog::GetInstance()->SetEnabled(
1179 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"), 1160 CategoryFilter("-inc_wildcard_*,-inc_wildchar_?_end"),
1180 base::debug::TraceLog::RECORDING_MODE,
1181 TraceLog::RECORD_UNTIL_FULL); 1161 TraceLog::RECORD_UNTIL_FULL);
1182 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc", 1162 TRACE_EVENT_INSTANT0("inc_wildcard_abc", "not_inc",
1183 TRACE_EVENT_SCOPE_THREAD); 1163 TRACE_EVENT_SCOPE_THREAD);
1184 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc", 1164 TRACE_EVENT_INSTANT0("inc_wildcard_", "not_inc",
1185 TRACE_EVENT_SCOPE_THREAD); 1165 TRACE_EVENT_SCOPE_THREAD);
1186 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc", 1166 TRACE_EVENT_INSTANT0("inc_wildchar_x_end", "not_inc",
1187 TRACE_EVENT_SCOPE_THREAD); 1167 TRACE_EVENT_SCOPE_THREAD);
1188 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included", 1168 TRACE_EVENT_INSTANT0("inc_wildchar_bla_end", "included",
1189 TRACE_EVENT_SCOPE_THREAD); 1169 TRACE_EVENT_SCOPE_THREAD);
1190 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD); 1170 TRACE_EVENT_INSTANT0("cat1", "included", TRACE_EVENT_SCOPE_THREAD);
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after
1678 1658
1679 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); 1659 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
1680 EXPECT_EQ(1, a); 1660 EXPECT_EQ(1, a);
1681 1661
1682 EndTraceAndFlush(); 1662 EndTraceAndFlush();
1683 } 1663 }
1684 1664
1685 TEST_F(TraceEventTestFixture, TraceEnableDisable) { 1665 TEST_F(TraceEventTestFixture, TraceEnableDisable) {
1686 TraceLog* trace_log = TraceLog::GetInstance(); 1666 TraceLog* trace_log = TraceLog::GetInstance();
1687 CategoryFilter cf_inc_all("*"); 1667 CategoryFilter cf_inc_all("*");
1688 trace_log->SetEnabled(cf_inc_all, 1668 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
1689 base::debug::TraceLog::RECORDING_MODE,
1690 TraceLog::RECORD_UNTIL_FULL);
1691 EXPECT_TRUE(trace_log->IsEnabled()); 1669 EXPECT_TRUE(trace_log->IsEnabled());
1692 trace_log->SetDisabled(); 1670 trace_log->SetDisabled();
1693 EXPECT_FALSE(trace_log->IsEnabled()); 1671 EXPECT_FALSE(trace_log->IsEnabled());
1694 1672
1695 trace_log->SetEnabled(cf_inc_all, 1673 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
1696 base::debug::TraceLog::RECORDING_MODE,
1697 TraceLog::RECORD_UNTIL_FULL);
1698 EXPECT_TRUE(trace_log->IsEnabled()); 1674 EXPECT_TRUE(trace_log->IsEnabled());
1699 const std::vector<std::string> empty; 1675 const std::vector<std::string> empty;
1700 trace_log->SetEnabled(CategoryFilter(""), 1676 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL);
1701 base::debug::TraceLog::RECORDING_MODE,
1702 TraceLog::RECORD_UNTIL_FULL);
1703 EXPECT_TRUE(trace_log->IsEnabled()); 1677 EXPECT_TRUE(trace_log->IsEnabled());
1704 trace_log->SetDisabled(); 1678 trace_log->SetDisabled();
1705 EXPECT_FALSE(trace_log->IsEnabled()); 1679 EXPECT_FALSE(trace_log->IsEnabled());
1706 trace_log->SetDisabled(); 1680 trace_log->SetDisabled();
1707 EXPECT_FALSE(trace_log->IsEnabled()); 1681 EXPECT_FALSE(trace_log->IsEnabled());
1708 } 1682 }
1709 1683
1710 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { 1684 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) {
1711 TraceLog* trace_log = TraceLog::GetInstance(); 1685 TraceLog* trace_log = TraceLog::GetInstance();
1712 trace_log->SetEnabled(CategoryFilter("foo,bar"), 1686 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL);
1713 base::debug::TraceLog::RECORDING_MODE,
1714 TraceLog::RECORD_UNTIL_FULL);
1715 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); 1687 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
1716 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); 1688 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
1717 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1689 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1718 trace_log->SetEnabled(CategoryFilter("foo2"), 1690 trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL);
1719 base::debug::TraceLog::RECORDING_MODE,
1720 TraceLog::RECORD_UNTIL_FULL);
1721 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); 1691 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2"));
1722 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1692 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1723 // The "" becomes the default catergory set when applied. 1693 // The "" becomes the default catergory set when applied.
1724 trace_log->SetEnabled(CategoryFilter(""), 1694 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL);
1725 base::debug::TraceLog::RECORDING_MODE,
1726 TraceLog::RECORD_UNTIL_FULL);
1727 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); 1695 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
1728 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); 1696 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
1729 EXPECT_STREQ("-*Debug,-*Test", 1697 EXPECT_STREQ("-*Debug,-*Test",
1730 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1698 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1731 trace_log->SetDisabled(); 1699 trace_log->SetDisabled();
1732 trace_log->SetDisabled(); 1700 trace_log->SetDisabled();
1733 trace_log->SetDisabled(); 1701 trace_log->SetDisabled();
1734 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); 1702 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
1735 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1703 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1736 1704
1737 trace_log->SetEnabled(CategoryFilter("-foo,-bar"), 1705 trace_log->SetEnabled(CategoryFilter("-foo,-bar"),
1738 base::debug::TraceLog::RECORDING_MODE,
1739 TraceLog::RECORD_UNTIL_FULL); 1706 TraceLog::RECORD_UNTIL_FULL);
1740 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); 1707 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
1741 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); 1708 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
1742 trace_log->SetEnabled(CategoryFilter("moo"), 1709 trace_log->SetEnabled(CategoryFilter("moo"), TraceLog::RECORD_UNTIL_FULL);
1743 base::debug::TraceLog::RECORDING_MODE,
1744 TraceLog::RECORD_UNTIL_FULL);
1745 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz")); 1710 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("baz"));
1746 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo")); 1711 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("moo"));
1747 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo")); 1712 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("foo"));
1748 EXPECT_STREQ("-foo,-bar", 1713 EXPECT_STREQ("-foo,-bar",
1749 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1714 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1750 trace_log->SetDisabled(); 1715 trace_log->SetDisabled();
1751 trace_log->SetDisabled(); 1716 trace_log->SetDisabled();
1752 1717
1753 // Make sure disabled categories aren't cleared if we set in the second. 1718 // Make sure disabled categories aren't cleared if we set in the second.
1754 trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"), 1719 trace_log->SetEnabled(CategoryFilter("disabled-by-default-cc,foo"),
1755 base::debug::TraceLog::RECORDING_MODE,
1756 TraceLog::RECORD_UNTIL_FULL); 1720 TraceLog::RECORD_UNTIL_FULL);
1757 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar")); 1721 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("bar"));
1758 trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"), 1722 trace_log->SetEnabled(CategoryFilter("disabled-by-default-gpu"),
1759 base::debug::TraceLog::RECORDING_MODE,
1760 TraceLog::RECORD_UNTIL_FULL); 1723 TraceLog::RECORD_UNTIL_FULL);
1761 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc")); 1724 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc"));
1762 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu")); 1725 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu"));
1763 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); 1726 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
1764 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu", 1727 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu",
1765 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1728 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1766 trace_log->SetDisabled(); 1729 trace_log->SetDisabled();
1767 trace_log->SetDisabled(); 1730 trace_log->SetDisabled();
1768 } 1731 }
1769 1732
1770 TEST_F(TraceEventTestFixture, TraceSampling) { 1733 TEST_F(TraceEventTestFixture, TraceSampling) {
1771 TraceLog::GetInstance()->SetEnabled( 1734 TraceLog::GetInstance()->SetEnabled(
1772 CategoryFilter("*"), 1735 CategoryFilter("*"),
1773 base::debug::TraceLog::RECORDING_MODE,
1774 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | 1736 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
1775 TraceLog::ENABLE_SAMPLING)); 1737 TraceLog::ENABLE_SAMPLING));
1776 1738
1777 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); 1739 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff");
1778 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1740 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1779 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); 1741 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things");
1780 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1742 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1781 1743
1782 EndTraceAndFlush(); 1744 EndTraceAndFlush();
1783 1745
1784 // Make sure we hit at least once. 1746 // Make sure we hit at least once.
1785 EXPECT_TRUE(FindNamePhase("Stuff", "P")); 1747 EXPECT_TRUE(FindNamePhase("Stuff", "P"));
1786 EXPECT_TRUE(FindNamePhase("Things", "P")); 1748 EXPECT_TRUE(FindNamePhase("Things", "P"));
1787 } 1749 }
1788 1750
1789 TEST_F(TraceEventTestFixture, TraceSamplingScope) { 1751 TEST_F(TraceEventTestFixture, TraceSamplingScope) {
1790 TraceLog::GetInstance()->SetEnabled( 1752 TraceLog::GetInstance()->SetEnabled(
1791 CategoryFilter("*"), 1753 CategoryFilter("*"),
1792 base::debug::TraceLog::RECORDING_MODE,
1793 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | 1754 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
1794 TraceLog::ENABLE_SAMPLING)); 1755 TraceLog::ENABLE_SAMPLING));
1795 1756
1796 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); 1757 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name");
1797 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1758 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1798 { 1759 {
1799 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA"); 1760 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "AAA");
1800 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name"); 1761 TRACE_EVENT_SCOPED_SAMPLING_STATE("BBB", "name");
1801 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1762 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1802 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB"); 1763 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "BBB");
(...skipping 14 matching lines...) Expand all
1817 } 1778 }
1818 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1779 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1819 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD"); 1780 EXPECT_STREQ(TRACE_EVENT_GET_SAMPLING_STATE(), "DDD");
1820 1781
1821 EndTraceAndFlush(); 1782 EndTraceAndFlush();
1822 } 1783 }
1823 1784
1824 TEST_F(TraceEventTestFixture, TraceContinuousSampling) { 1785 TEST_F(TraceEventTestFixture, TraceContinuousSampling) {
1825 TraceLog::GetInstance()->SetEnabled( 1786 TraceLog::GetInstance()->SetEnabled(
1826 CategoryFilter("*"), 1787 CategoryFilter("*"),
1827 base::debug::TraceLog::MONITORING_MODE, 1788 TraceLog::Options(TraceLog::MONITOR_SAMPLING));
1828 TraceLog::Options(TraceLog::ENABLE_SAMPLING));
1829 1789
1830 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA"); 1790 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "AAA");
1831 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1791 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1832 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB"); 1792 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "category", "BBB");
1833 TraceLog::GetInstance()->WaitSamplingEventForTesting(); 1793 TraceLog::GetInstance()->WaitSamplingEventForTesting();
1834 1794
1835 FlushMonitoring(); 1795 FlushMonitoring();
1836 1796
1837 // Make sure we can get the profiled data. 1797 // Make sure we can get the profiled data.
1838 EXPECT_TRUE(FindNamePhase("AAA", "P")); 1798 EXPECT_TRUE(FindNamePhase("AAA", "P"));
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1876 out->append("{\"foo\":1}"); 1836 out->append("{\"foo\":1}");
1877 } 1837 }
1878 1838
1879 private: 1839 private:
1880 virtual ~MyData() {} 1840 virtual ~MyData() {}
1881 DISALLOW_COPY_AND_ASSIGN(MyData); 1841 DISALLOW_COPY_AND_ASSIGN(MyData);
1882 }; 1842 };
1883 1843
1884 TEST_F(TraceEventTestFixture, ConvertableTypes) { 1844 TEST_F(TraceEventTestFixture, ConvertableTypes) {
1885 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1845 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1886 base::debug::TraceLog::RECORDING_MODE,
1887 TraceLog::RECORD_UNTIL_FULL); 1846 TraceLog::RECORD_UNTIL_FULL);
1888 1847
1889 scoped_refptr<ConvertableToTraceFormat> data(new MyData()); 1848 scoped_refptr<ConvertableToTraceFormat> data(new MyData());
1890 scoped_refptr<ConvertableToTraceFormat> data1(new MyData()); 1849 scoped_refptr<ConvertableToTraceFormat> data1(new MyData());
1891 scoped_refptr<ConvertableToTraceFormat> data2(new MyData()); 1850 scoped_refptr<ConvertableToTraceFormat> data2(new MyData());
1892 TRACE_EVENT1("foo", "bar", "data", data); 1851 TRACE_EVENT1("foo", "bar", "data", data);
1893 TRACE_EVENT2("foo", "baz", 1852 TRACE_EVENT2("foo", "baz",
1894 "data1", data1, 1853 "data1", data1,
1895 "data2", data2); 1854 "data2", data2);
1896 1855
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
2080 EXPECT_EQ("duration", collected_events_names_[4]); 2039 EXPECT_EQ("duration", collected_events_names_[4]);
2081 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); 2040 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]);
2082 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { 2041 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) {
2083 EXPECT_LE(collected_events_timestamps_[i - 1], 2042 EXPECT_LE(collected_events_timestamps_[i - 1],
2084 collected_events_timestamps_[i]); 2043 collected_events_timestamps_[i]);
2085 } 2044 }
2086 } 2045 }
2087 2046
2088 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { 2047 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) {
2089 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2048 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2090 base::debug::TraceLog::RECORDING_MODE,
2091 TraceLog::RECORD_UNTIL_FULL); 2049 TraceLog::RECORD_UNTIL_FULL);
2092 do { 2050 do {
2093 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); 2051 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL);
2094 } while (!TraceLog::GetInstance()->BufferIsFull()); 2052 } while (!TraceLog::GetInstance()->BufferIsFull());
2095 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), 2053 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"),
2096 Callback); 2054 Callback);
2097 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); 2055 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL);
2098 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2056 TraceLog::GetInstance()->SetEventCallbackDisabled();
2099 ASSERT_EQ(1u, collected_events_names_.size()); 2057 ASSERT_EQ(1u, collected_events_names_.size());
2100 EXPECT_EQ("a snake", collected_events_names_[0]); 2058 EXPECT_EQ("a snake", collected_events_names_[0]);
2101 } 2059 }
2102 2060
2103 // 1: Enable callback, enable recording, disable callback, disable recording. 2061 // 1: Enable callback, enable recording, disable callback, disable recording.
2104 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { 2062 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) {
2105 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2063 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2106 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2064 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2107 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2065 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2108 Callback); 2066 Callback);
2109 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2067 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2110 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2068 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2111 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), 2069 TraceLog::GetInstance()->SetEnabled(
2112 base::debug::TraceLog::RECORDING_MODE, 2070 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL);
2113 TraceLog::RECORD_UNTIL_FULL);
2114 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2071 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2115 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2072 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2116 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2073 TraceLog::GetInstance()->SetEventCallbackDisabled();
2117 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2074 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2118 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2075 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2119 EndTraceAndFlush(); 2076 EndTraceAndFlush();
2120 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2077 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2121 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2078 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2122 2079
2123 VerifyCallbackAndRecordedEvents(2, 2); 2080 VerifyCallbackAndRecordedEvents(2, 2);
2124 } 2081 }
2125 2082
2126 // 2: Enable callback, enable recording, disable recording, disable callback. 2083 // 2: Enable callback, enable recording, disable recording, disable callback.
2127 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { 2084 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) {
2128 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2085 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2129 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2086 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2130 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2087 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2131 Callback); 2088 Callback);
2132 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2089 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2133 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2090 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2134 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), 2091 TraceLog::GetInstance()->SetEnabled(
2135 base::debug::TraceLog::RECORDING_MODE, 2092 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL);
2136 TraceLog::RECORD_UNTIL_FULL);
2137 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2093 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2138 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2094 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2139 EndTraceAndFlush(); 2095 EndTraceAndFlush();
2140 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2096 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2141 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2097 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2142 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2098 TraceLog::GetInstance()->SetEventCallbackDisabled();
2143 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2099 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2144 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2100 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2145 2101
2146 VerifyCallbackAndRecordedEvents(3, 1); 2102 VerifyCallbackAndRecordedEvents(3, 1);
2147 } 2103 }
2148 2104
2149 // 3: Enable recording, enable callback, disable callback, disable recording. 2105 // 3: Enable recording, enable callback, disable callback, disable recording.
2150 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { 2106 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) {
2151 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2107 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2152 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2108 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2153 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), 2109 TraceLog::GetInstance()->SetEnabled(
2154 base::debug::TraceLog::RECORDING_MODE, 2110 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL);
2155 TraceLog::RECORD_UNTIL_FULL);
2156 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2111 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2157 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2112 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2158 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2113 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2159 Callback); 2114 Callback);
2160 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2115 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2161 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2116 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2162 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2117 TraceLog::GetInstance()->SetEventCallbackDisabled();
2163 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2118 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2164 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2119 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2165 EndTraceAndFlush(); 2120 EndTraceAndFlush();
2166 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2121 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2167 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2122 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2168 2123
2169 VerifyCallbackAndRecordedEvents(1, 3); 2124 VerifyCallbackAndRecordedEvents(1, 3);
2170 } 2125 }
2171 2126
2172 // 4: Enable recording, enable callback, disable recording, disable callback. 2127 // 4: Enable recording, enable callback, disable recording, disable callback.
2173 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { 2128 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) {
2174 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2129 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2175 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2130 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2176 TraceLog::GetInstance()->SetEnabled(CategoryFilter("recording"), 2131 TraceLog::GetInstance()->SetEnabled(
2177 base::debug::TraceLog::RECORDING_MODE, 2132 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL);
2178 TraceLog::RECORD_UNTIL_FULL);
2179 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2133 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2180 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2134 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2181 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), 2135 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"),
2182 Callback); 2136 Callback);
2183 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2137 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2184 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2138 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2185 EndTraceAndFlush(); 2139 EndTraceAndFlush();
2186 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2140 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2187 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); 2141 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL);
2188 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2142 TraceLog::GetInstance()->SetEventCallbackDisabled();
2189 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); 2143 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL);
2190 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); 2144 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL);
2191 2145
2192 VerifyCallbackAndRecordedEvents(2, 2); 2146 VerifyCallbackAndRecordedEvents(2, 2);
2193 } 2147 }
2194 2148
2195 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { 2149 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) {
2196 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), 2150 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"),
2197 Callback); 2151 Callback);
2198 { 2152 {
2199 TRACE_EVENT0("callback", "duration1"); 2153 TRACE_EVENT0("callback", "duration1");
2200 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2154 TraceLog::GetInstance()->SetEnabled(
2201 base::debug::TraceLog::RECORDING_MODE, 2155 CategoryFilter("*"), TraceLog::RECORD_UNTIL_FULL);
2202 TraceLog::RECORD_UNTIL_FULL);
2203 TRACE_EVENT0("callback", "duration2"); 2156 TRACE_EVENT0("callback", "duration2");
2204 EndTraceAndFlush(); 2157 EndTraceAndFlush();
2205 TRACE_EVENT0("callback", "duration3"); 2158 TRACE_EVENT0("callback", "duration3");
2206 } 2159 }
2207 TraceLog::GetInstance()->SetEventCallbackDisabled(); 2160 TraceLog::GetInstance()->SetEventCallbackDisabled();
2208 2161
2209 ASSERT_EQ(6u, collected_events_names_.size()); 2162 ASSERT_EQ(6u, collected_events_names_.size());
2210 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); 2163 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1");
2211 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); 2164 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2");
2212 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); 2165 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3");
2213 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); 2166 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3");
2214 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); 2167 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2");
2215 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); 2168 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1");
2216 } 2169 }
2217 2170
2218 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { 2171 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) {
2219 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2172 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2220 base::debug::TraceLog::RECORDING_MODE,
2221 TraceLog::RECORD_CONTINUOUSLY); 2173 TraceLog::RECORD_CONTINUOUSLY);
2222 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); 2174 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
2223 size_t capacity = buffer->Capacity(); 2175 size_t capacity = buffer->Capacity();
2224 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; 2176 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
2225 uint32 last_seq = 0; 2177 uint32 last_seq = 0;
2226 size_t chunk_index; 2178 size_t chunk_index;
2227 EXPECT_EQ(0u, buffer->Size()); 2179 EXPECT_EQ(0u, buffer->Size());
2228 2180
2229 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); 2181 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]);
2230 for (size_t i = 0; i < num_chunks; ++i) { 2182 for (size_t i = 0; i < num_chunks; ++i) {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
2270 } 2222 }
2271 2223
2272 for (size_t i = 0; i < num_chunks; ++i) 2224 for (size_t i = 0; i < num_chunks; ++i)
2273 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); 2225 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
2274 2226
2275 TraceLog::GetInstance()->SetDisabled(); 2227 TraceLog::GetInstance()->SetDisabled();
2276 } 2228 }
2277 2229
2278 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) { 2230 TEST_F(TraceEventTestFixture, TraceBufferRingBufferHalfIteration) {
2279 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2231 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2280 base::debug::TraceLog::RECORDING_MODE,
2281 TraceLog::RECORD_CONTINUOUSLY); 2232 TraceLog::RECORD_CONTINUOUSLY);
2282 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); 2233 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
2283 size_t capacity = buffer->Capacity(); 2234 size_t capacity = buffer->Capacity();
2284 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; 2235 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
2285 size_t chunk_index; 2236 size_t chunk_index;
2286 EXPECT_EQ(0u, buffer->Size()); 2237 EXPECT_EQ(0u, buffer->Size());
2287 EXPECT_FALSE(buffer->NextChunk()); 2238 EXPECT_FALSE(buffer->NextChunk());
2288 2239
2289 size_t half_chunks = num_chunks / 2; 2240 size_t half_chunks = num_chunks / 2;
2290 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]); 2241 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[half_chunks]);
2291 2242
2292 for (size_t i = 0; i < half_chunks; ++i) { 2243 for (size_t i = 0; i < half_chunks; ++i) {
2293 chunks[i] = buffer->GetChunk(&chunk_index).release(); 2244 chunks[i] = buffer->GetChunk(&chunk_index).release();
2294 EXPECT_TRUE(chunks[i]); 2245 EXPECT_TRUE(chunks[i]);
2295 EXPECT_EQ(i, chunk_index); 2246 EXPECT_EQ(i, chunk_index);
2296 } 2247 }
2297 for (size_t i = 0; i < half_chunks; ++i) 2248 for (size_t i = 0; i < half_chunks; ++i)
2298 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i])); 2249 buffer->ReturnChunk(i, scoped_ptr<TraceBufferChunk>(chunks[i]));
2299 2250
2300 for (size_t i = 0; i < half_chunks; ++i) 2251 for (size_t i = 0; i < half_chunks; ++i)
2301 EXPECT_EQ(chunks[i], buffer->NextChunk()); 2252 EXPECT_EQ(chunks[i], buffer->NextChunk());
2302 EXPECT_FALSE(buffer->NextChunk()); 2253 EXPECT_FALSE(buffer->NextChunk());
2303 TraceLog::GetInstance()->SetDisabled(); 2254 TraceLog::GetInstance()->SetDisabled();
2304 } 2255 }
2305 2256
2306 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) { 2257 TEST_F(TraceEventTestFixture, TraceBufferRingBufferFullIteration) {
2307 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2258 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2308 base::debug::TraceLog::RECORDING_MODE,
2309 TraceLog::RECORD_CONTINUOUSLY); 2259 TraceLog::RECORD_CONTINUOUSLY);
2310 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); 2260 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer();
2311 size_t capacity = buffer->Capacity(); 2261 size_t capacity = buffer->Capacity();
2312 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; 2262 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize;
2313 size_t chunk_index; 2263 size_t chunk_index;
2314 EXPECT_EQ(0u, buffer->Size()); 2264 EXPECT_EQ(0u, buffer->Size());
2315 EXPECT_FALSE(buffer->NextChunk()); 2265 EXPECT_FALSE(buffer->NextChunk());
2316 2266
2317 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]); 2267 scoped_ptr<TraceBufferChunk*[]> chunks(new TraceBufferChunk*[num_chunks]);
2318 2268
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
2547 g_log_buffer->append(str); 2497 g_log_buffer->append(str);
2548 return false; 2498 return false;
2549 } 2499 }
2550 2500
2551 TEST_F(TraceEventTestFixture, EchoToConsole) { 2501 TEST_F(TraceEventTestFixture, EchoToConsole) {
2552 logging::LogMessageHandlerFunction old_log_message_handler = 2502 logging::LogMessageHandlerFunction old_log_message_handler =
2553 logging::GetLogMessageHandler(); 2503 logging::GetLogMessageHandler();
2554 logging::SetLogMessageHandler(MockLogMessageHandler); 2504 logging::SetLogMessageHandler(MockLogMessageHandler);
2555 2505
2556 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2506 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2557 base::debug::TraceLog::RECORDING_MODE,
2558 TraceLog::ECHO_TO_CONSOLE); 2507 TraceLog::ECHO_TO_CONSOLE);
2559 TRACE_EVENT_BEGIN0("a", "begin_end"); 2508 TRACE_EVENT_BEGIN0("a", "begin_end");
2560 { 2509 {
2561 TRACE_EVENT0("b", "duration"); 2510 TRACE_EVENT0("b", "duration");
2562 TRACE_EVENT0("b1", "duration1"); 2511 TRACE_EVENT0("b1", "duration1");
2563 } 2512 }
2564 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL); 2513 TRACE_EVENT_INSTANT0("c", "instant", TRACE_EVENT_SCOPE_GLOBAL);
2565 TRACE_EVENT_END0("a", "begin_end"); 2514 TRACE_EVENT_END0("a", "begin_end");
2566 2515
2567 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b")); 2516 EXPECT_NE(std::string::npos, g_log_buffer->find("begin_end[a]\x1b"));
(...skipping 15 matching lines...) Expand all
2583 TRACE_EVENT0("log", "trace_event"); 2532 TRACE_EVENT0("log", "trace_event");
2584 return false; 2533 return false;
2585 } 2534 }
2586 2535
2587 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) { 2536 TEST_F(TraceEventTestFixture, EchoToConsoleTraceEventRecursion) {
2588 logging::LogMessageHandlerFunction old_log_message_handler = 2537 logging::LogMessageHandlerFunction old_log_message_handler =
2589 logging::GetLogMessageHandler(); 2538 logging::GetLogMessageHandler();
2590 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent); 2539 logging::SetLogMessageHandler(LogMessageHandlerWithTraceEvent);
2591 2540
2592 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 2541 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
2593 base::debug::TraceLog::RECORDING_MODE,
2594 TraceLog::ECHO_TO_CONSOLE); 2542 TraceLog::ECHO_TO_CONSOLE);
2595 { 2543 {
2596 // This should not cause deadlock or infinite recursion. 2544 // This should not cause deadlock or infinite recursion.
2597 TRACE_EVENT0("b", "duration"); 2545 TRACE_EVENT0("b", "duration");
2598 } 2546 }
2599 2547
2600 EndTraceAndFlush(); 2548 EndTraceAndFlush();
2601 logging::SetLogMessageHandler(old_log_message_handler); 2549 logging::SetLogMessageHandler(old_log_message_handler);
2602 } 2550 }
2603 2551
(...skipping 25 matching lines...) Expand all
2629 double timestamp; 2577 double timestamp;
2630 EXPECT_TRUE(item->GetDouble("ts", &timestamp)); 2578 EXPECT_TRUE(item->GetDouble("ts", &timestamp));
2631 EXPECT_GE(timestamp, last_timestamp); 2579 EXPECT_GE(timestamp, last_timestamp);
2632 EXPECT_LE(timestamp, end_time); 2580 EXPECT_LE(timestamp, end_time);
2633 last_timestamp = timestamp; 2581 last_timestamp = timestamp;
2634 } 2582 }
2635 } 2583 }
2636 2584
2637 } // namespace debug 2585 } // namespace debug
2638 } // namespace base 2586 } // namespace base
OLDNEW
« no previous file with comments | « trunk/src/base/debug/trace_event_impl.cc ('k') | trunk/src/base/test/trace_event_analyzer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698