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

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

Issue 18338004: Don't use StaticMemorySingletonTraits for TraceLog. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: no need for ManualTestSetUp anymore per scheib Created 7 years, 5 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
« no previous file with comments | « base/debug/trace_event_impl.cc ('k') | base/debug/trace_event_win_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 }; 42 };
43 43
44 const int kThreadId = 42; 44 const int kThreadId = 42;
45 const int kAsyncId = 5; 45 const int kAsyncId = 5;
46 const char kAsyncIdStr[] = "0x5"; 46 const char kAsyncIdStr[] = "0x5";
47 const int kAsyncId2 = 6; 47 const int kAsyncId2 = 6;
48 const char kAsyncId2Str[] = "0x6"; 48 const char kAsyncId2Str[] = "0x6";
49 49
50 class TraceEventTestFixture : public testing::Test { 50 class TraceEventTestFixture : public testing::Test {
51 public: 51 public:
52 // This fixture does not use SetUp() because the fixture must be manually set
53 // up multiple times when testing AtExit. Use ManualTestSetUp for this.
54 void ManualTestSetUp();
55 void OnTraceDataCollected( 52 void OnTraceDataCollected(
56 const scoped_refptr<base::RefCountedString>& events_str); 53 const scoped_refptr<base::RefCountedString>& events_str);
57 void OnTraceNotification(int notification) { 54 void OnTraceNotification(int notification) {
58 if (notification & TraceLog::EVENT_WATCH_NOTIFICATION) 55 if (notification & TraceLog::EVENT_WATCH_NOTIFICATION)
59 ++event_watch_notification_; 56 ++event_watch_notification_;
60 notifications_received_ |= notification; 57 notifications_received_ |= notification;
61 } 58 }
62 DictionaryValue* FindMatchingTraceEntry(const JsonKeyValue* key_values); 59 DictionaryValue* FindMatchingTraceEntry(const JsonKeyValue* key_values);
63 DictionaryValue* FindNamePhase(const char* name, const char* phase); 60 DictionaryValue* FindNamePhase(const char* name, const char* phase);
64 DictionaryValue* FindNamePhaseKeyValue(const char* name, 61 DictionaryValue* FindNamePhaseKeyValue(const char* name,
(...skipping 25 matching lines...) Expand all
90 TraceLog::GetInstance()->SetDisabled(); 87 TraceLog::GetInstance()->SetDisabled();
91 TraceLog::GetInstance()->Flush( 88 TraceLog::GetInstance()->Flush(
92 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, 89 base::Bind(&TraceEventTestFixture::OnTraceDataCollected,
93 base::Unretained(this))); 90 base::Unretained(this)));
94 } 91 }
95 92
96 virtual void SetUp() OVERRIDE { 93 virtual void SetUp() OVERRIDE {
97 const char* name = PlatformThread::GetName(); 94 const char* name = PlatformThread::GetName();
98 old_thread_name_ = name ? strdup(name) : NULL; 95 old_thread_name_ = name ? strdup(name) : NULL;
99 notifications_received_ = 0; 96 notifications_received_ = 0;
97
98 TraceLog::DeleteForTesting();
99 TraceLog* tracelog = TraceLog::GetInstance();
100 ASSERT_TRUE(tracelog);
101 ASSERT_FALSE(tracelog->IsEnabled());
102 tracelog->SetNotificationCallback(
103 base::Bind(&TraceEventTestFixture::OnTraceNotification,
104 base::Unretained(this)));
105 trace_buffer_.SetOutputCallback(json_output_.GetCallback());
100 } 106 }
101 virtual void TearDown() OVERRIDE { 107 virtual void TearDown() OVERRIDE {
102 if (TraceLog::GetInstance()) 108 if (TraceLog::GetInstance())
103 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 109 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
104 PlatformThread::SetName(old_thread_name_ ? old_thread_name_ : ""); 110 PlatformThread::SetName(old_thread_name_ ? old_thread_name_ : "");
105 free(old_thread_name_); 111 free(old_thread_name_);
106 old_thread_name_ = NULL; 112 old_thread_name_ = NULL;
113 // We want our singleton torn down after each test.
114 TraceLog::DeleteForTesting();
107 } 115 }
108 116
109 char* old_thread_name_; 117 char* old_thread_name_;
110 ListValue trace_parsed_; 118 ListValue trace_parsed_;
111 base::debug::TraceResultBuffer trace_buffer_; 119 base::debug::TraceResultBuffer trace_buffer_;
112 base::debug::TraceResultBuffer::SimpleOutput json_output_; 120 base::debug::TraceResultBuffer::SimpleOutput json_output_;
113 int event_watch_notification_; 121 int event_watch_notification_;
114 int notifications_received_; 122 int notifications_received_;
115 123
116 private: 124 private:
117 // We want our singleton torn down after each test. 125 // We want our singleton torn down after each test.
118 ShadowingAtExitManager at_exit_manager_; 126 ShadowingAtExitManager at_exit_manager_;
119 Lock lock_; 127 Lock lock_;
120 }; 128 };
121 129
122 void TraceEventTestFixture::ManualTestSetUp() {
123 TraceLog::DeleteForTesting();
124 TraceLog::Resurrect();
125 TraceLog* tracelog = TraceLog::GetInstance();
126 ASSERT_TRUE(tracelog);
127 ASSERT_FALSE(tracelog->IsEnabled());
128 tracelog->SetNotificationCallback(
129 base::Bind(&TraceEventTestFixture::OnTraceNotification,
130 base::Unretained(this)));
131 trace_buffer_.SetOutputCallback(json_output_.GetCallback());
132 }
133
134 void TraceEventTestFixture::OnTraceDataCollected( 130 void TraceEventTestFixture::OnTraceDataCollected(
135 const scoped_refptr<base::RefCountedString>& events_str) { 131 const scoped_refptr<base::RefCountedString>& events_str) {
136 AutoLock lock(lock_); 132 AutoLock lock(lock_);
137 json_output_.json_output.clear(); 133 json_output_.json_output.clear();
138 trace_buffer_.Start(); 134 trace_buffer_.Start();
139 trace_buffer_.AddFragment(events_str->data()); 135 trace_buffer_.AddFragment(events_str->data());
140 trace_buffer_.Finish(); 136 trace_buffer_.Finish();
141 137
142 scoped_ptr<Value> root; 138 scoped_ptr<Value> root;
143 root.reset(base::JSONReader::Read(json_output_.json_output, 139 root.reset(base::JSONReader::Read(json_output_.json_output,
(...skipping 656 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 796
801 void HighResSleepForTraceTest(base::TimeDelta elapsed) { 797 void HighResSleepForTraceTest(base::TimeDelta elapsed) {
802 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed; 798 base::TimeTicks end_time = base::TimeTicks::HighResNow() + elapsed;
803 do { 799 do {
804 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1)); 800 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(1));
805 } while (base::TimeTicks::HighResNow() < end_time); 801 } while (base::TimeTicks::HighResNow() < end_time);
806 } 802 }
807 803
808 // Simple Test for emitting data and validating it was received. 804 // Simple Test for emitting data and validating it was received.
809 TEST_F(TraceEventTestFixture, DataCaptured) { 805 TEST_F(TraceEventTestFixture, DataCaptured) {
810 ManualTestSetUp();
811 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 806 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
812 TraceLog::RECORD_UNTIL_FULL); 807 TraceLog::RECORD_UNTIL_FULL);
813 808
814 TraceWithAllMacroVariants(NULL); 809 TraceWithAllMacroVariants(NULL);
815 810
816 EndTraceAndFlush(); 811 EndTraceAndFlush();
817 812
818 ValidateAllTraceMacrosCreatedData(trace_parsed_); 813 ValidateAllTraceMacrosCreatedData(trace_parsed_);
819 } 814 }
820 815
821 class MockEnabledStateChangedObserver : 816 class MockEnabledStateChangedObserver :
822 public base::debug::TraceLog::EnabledStateObserver { 817 public base::debug::TraceLog::EnabledStateObserver {
823 public: 818 public:
824 MOCK_METHOD0(OnTraceLogEnabled, void()); 819 MOCK_METHOD0(OnTraceLogEnabled, void());
825 MOCK_METHOD0(OnTraceLogDisabled, void()); 820 MOCK_METHOD0(OnTraceLogDisabled, void());
826 }; 821 };
827 822
828 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) { 823 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnEnable) {
829 ManualTestSetUp();
830
831 MockEnabledStateChangedObserver observer; 824 MockEnabledStateChangedObserver observer;
832 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 825 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
833 826
834 EXPECT_CALL(observer, OnTraceLogEnabled()) 827 EXPECT_CALL(observer, OnTraceLogEnabled())
835 .Times(1); 828 .Times(1);
836 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 829 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
837 TraceLog::RECORD_UNTIL_FULL); 830 TraceLog::RECORD_UNTIL_FULL);
838 testing::Mock::VerifyAndClear(&observer); 831 testing::Mock::VerifyAndClear(&observer);
839 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 832 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
840 833
841 // Cleanup. 834 // Cleanup.
842 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 835 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
843 TraceLog::GetInstance()->SetDisabled(); 836 TraceLog::GetInstance()->SetDisabled();
844 } 837 }
845 838
846 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) { 839 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnSecondEnable) {
847 ManualTestSetUp();
848
849 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 840 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
850 TraceLog::RECORD_UNTIL_FULL); 841 TraceLog::RECORD_UNTIL_FULL);
851 842
852 testing::StrictMock<MockEnabledStateChangedObserver> observer; 843 testing::StrictMock<MockEnabledStateChangedObserver> observer;
853 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 844 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
854 845
855 EXPECT_CALL(observer, OnTraceLogEnabled()) 846 EXPECT_CALL(observer, OnTraceLogEnabled())
856 .Times(0); 847 .Times(0);
857 EXPECT_CALL(observer, OnTraceLogDisabled()) 848 EXPECT_CALL(observer, OnTraceLogDisabled())
858 .Times(0); 849 .Times(0);
859 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 850 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
860 TraceLog::RECORD_UNTIL_FULL); 851 TraceLog::RECORD_UNTIL_FULL);
861 testing::Mock::VerifyAndClear(&observer); 852 testing::Mock::VerifyAndClear(&observer);
862 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 853 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
863 854
864 // Cleanup. 855 // Cleanup.
865 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 856 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
866 TraceLog::GetInstance()->SetDisabled(); 857 TraceLog::GetInstance()->SetDisabled();
867 TraceLog::GetInstance()->SetDisabled(); 858 TraceLog::GetInstance()->SetDisabled();
868 } 859 }
869 860
870 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { 861 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) {
871 ManualTestSetUp();
872
873 CategoryFilter cf_inc_all("*"); 862 CategoryFilter cf_inc_all("*");
874 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 863 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
875 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 864 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
876 865
877 testing::StrictMock<MockEnabledStateChangedObserver> observer; 866 testing::StrictMock<MockEnabledStateChangedObserver> observer;
878 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 867 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
879 868
880 EXPECT_CALL(observer, OnTraceLogEnabled()) 869 EXPECT_CALL(observer, OnTraceLogEnabled())
881 .Times(0); 870 .Times(0);
882 EXPECT_CALL(observer, OnTraceLogDisabled()) 871 EXPECT_CALL(observer, OnTraceLogDisabled())
883 .Times(0); 872 .Times(0);
884 TraceLog::GetInstance()->SetDisabled(); 873 TraceLog::GetInstance()->SetDisabled();
885 testing::Mock::VerifyAndClear(&observer); 874 testing::Mock::VerifyAndClear(&observer);
886 875
887 // Cleanup. 876 // Cleanup.
888 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 877 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
889 TraceLog::GetInstance()->SetDisabled(); 878 TraceLog::GetInstance()->SetDisabled();
890 } 879 }
891 880
892 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { 881 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) {
893 ManualTestSetUp();
894
895 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 882 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
896 TraceLog::RECORD_UNTIL_FULL); 883 TraceLog::RECORD_UNTIL_FULL);
897 884
898 MockEnabledStateChangedObserver observer; 885 MockEnabledStateChangedObserver observer;
899 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 886 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
900 887
901 EXPECT_CALL(observer, OnTraceLogDisabled()) 888 EXPECT_CALL(observer, OnTraceLogDisabled())
902 .Times(1); 889 .Times(1);
903 TraceLog::GetInstance()->SetDisabled(); 890 TraceLog::GetInstance()->SetDisabled();
904 testing::Mock::VerifyAndClear(&observer); 891 testing::Mock::VerifyAndClear(&observer);
(...skipping 13 matching lines...) Expand all
918 virtual void OnTraceLogEnabled() OVERRIDE { 905 virtual void OnTraceLogEnabled() OVERRIDE {
919 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 906 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
920 } 907 }
921 908
922 virtual void OnTraceLogDisabled() OVERRIDE { 909 virtual void OnTraceLogDisabled() OVERRIDE {
923 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 910 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
924 } 911 }
925 }; 912 };
926 913
927 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) { 914 TEST_F(TraceEventTestFixture, ObserversFireAfterStateChange) {
928 ManualTestSetUp();
929
930 AfterStateChangeEnabledStateObserver observer; 915 AfterStateChangeEnabledStateObserver observer;
931 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 916 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
932 917
933 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 918 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
934 TraceLog::RECORD_UNTIL_FULL); 919 TraceLog::RECORD_UNTIL_FULL);
935 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); 920 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled());
936 921
937 TraceLog::GetInstance()->SetDisabled(); 922 TraceLog::GetInstance()->SetDisabled();
938 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled()); 923 EXPECT_FALSE(TraceLog::GetInstance()->IsEnabled());
939 924
940 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); 925 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer);
941 } 926 }
942 927
943 // Tests that a state observer can remove itself during a callback. 928 // Tests that a state observer can remove itself during a callback.
944 class SelfRemovingEnabledStateObserver 929 class SelfRemovingEnabledStateObserver
945 : public base::debug::TraceLog::EnabledStateObserver { 930 : public base::debug::TraceLog::EnabledStateObserver {
946 public: 931 public:
947 SelfRemovingEnabledStateObserver() {} 932 SelfRemovingEnabledStateObserver() {}
948 virtual ~SelfRemovingEnabledStateObserver() {} 933 virtual ~SelfRemovingEnabledStateObserver() {}
949 934
950 // base::debug::TraceLog::EnabledStateObserver overrides: 935 // base::debug::TraceLog::EnabledStateObserver overrides:
951 virtual void OnTraceLogEnabled() OVERRIDE {} 936 virtual void OnTraceLogEnabled() OVERRIDE {}
952 937
953 virtual void OnTraceLogDisabled() OVERRIDE { 938 virtual void OnTraceLogDisabled() OVERRIDE {
954 TraceLog::GetInstance()->RemoveEnabledStateObserver(this); 939 TraceLog::GetInstance()->RemoveEnabledStateObserver(this);
955 } 940 }
956 }; 941 };
957 942
958 TEST_F(TraceEventTestFixture, SelfRemovingObserver) { 943 TEST_F(TraceEventTestFixture, SelfRemovingObserver) {
959 ManualTestSetUp();
960 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); 944 ASSERT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
961 945
962 SelfRemovingEnabledStateObserver observer; 946 SelfRemovingEnabledStateObserver observer;
963 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); 947 TraceLog::GetInstance()->AddEnabledStateObserver(&observer);
964 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest()); 948 EXPECT_EQ(1u, TraceLog::GetInstance()->GetObserverCountForTest());
965 949
966 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 950 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
967 TraceLog::RECORD_UNTIL_FULL); 951 TraceLog::RECORD_UNTIL_FULL);
968 TraceLog::GetInstance()->SetDisabled(); 952 TraceLog::GetInstance()->SetDisabled();
969 // The observer removed itself on disable. 953 // The observer removed itself on disable.
970 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest()); 954 EXPECT_EQ(0u, TraceLog::GetInstance()->GetObserverCountForTest());
971 } 955 }
972 956
973 bool IsNewTrace() { 957 bool IsNewTrace() {
974 bool is_new_trace; 958 bool is_new_trace;
975 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace); 959 TRACE_EVENT_IS_NEW_TRACE(&is_new_trace);
976 return is_new_trace; 960 return is_new_trace;
977 } 961 }
978 962
979 TEST_F(TraceEventTestFixture, NewTraceRecording) { 963 TEST_F(TraceEventTestFixture, NewTraceRecording) {
980 ManualTestSetUp();
981 ASSERT_FALSE(IsNewTrace()); 964 ASSERT_FALSE(IsNewTrace());
982 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 965 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
983 TraceLog::RECORD_UNTIL_FULL); 966 TraceLog::RECORD_UNTIL_FULL);
984 // First call to IsNewTrace() should succeed. But, the second shouldn't. 967 // First call to IsNewTrace() should succeed. But, the second shouldn't.
985 ASSERT_TRUE(IsNewTrace()); 968 ASSERT_TRUE(IsNewTrace());
986 ASSERT_FALSE(IsNewTrace()); 969 ASSERT_FALSE(IsNewTrace());
987 EndTraceAndFlush(); 970 EndTraceAndFlush();
988 971
989 // IsNewTrace() should definitely be false now. 972 // IsNewTrace() should definitely be false now.
990 ASSERT_FALSE(IsNewTrace()); 973 ASSERT_FALSE(IsNewTrace());
991 974
992 // Start another trace. IsNewTrace() should become true again, briefly, as 975 // Start another trace. IsNewTrace() should become true again, briefly, as
993 // before. 976 // before.
994 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 977 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
995 TraceLog::RECORD_UNTIL_FULL); 978 TraceLog::RECORD_UNTIL_FULL);
996 ASSERT_TRUE(IsNewTrace()); 979 ASSERT_TRUE(IsNewTrace());
997 ASSERT_FALSE(IsNewTrace()); 980 ASSERT_FALSE(IsNewTrace());
998 981
999 // Cleanup. 982 // Cleanup.
1000 EndTraceAndFlush(); 983 EndTraceAndFlush();
1001 } 984 }
1002 985
1003 986
1004 // Test that categories work. 987 // Test that categories work.
1005 TEST_F(TraceEventTestFixture, Categories) { 988 TEST_F(TraceEventTestFixture, Categories) {
1006 ManualTestSetUp();
1007
1008 // Test that categories that are used can be retrieved whether trace was 989 // Test that categories that are used can be retrieved whether trace was
1009 // enabled or disabled when the trace event was encountered. 990 // enabled or disabled when the trace event was encountered.
1010 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD); 991 TRACE_EVENT_INSTANT0("c1", "name", TRACE_EVENT_SCOPE_THREAD);
1011 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD); 992 TRACE_EVENT_INSTANT0("c2", "name", TRACE_EVENT_SCOPE_THREAD);
1012 BeginTrace(); 993 BeginTrace();
1013 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD); 994 TRACE_EVENT_INSTANT0("c3", "name", TRACE_EVENT_SCOPE_THREAD);
1014 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD); 995 TRACE_EVENT_INSTANT0("c4", "name", TRACE_EVENT_SCOPE_THREAD);
1015 // Category groups containing more than one category. 996 // Category groups containing more than one category.
1016 TRACE_EVENT_INSTANT0("c5,c6", "name", TRACE_EVENT_SCOPE_THREAD); 997 TRACE_EVENT_INSTANT0("c5,c6", "name", TRACE_EVENT_SCOPE_THREAD);
1017 TRACE_EVENT_INSTANT0("c7,c8", "name", TRACE_EVENT_SCOPE_THREAD); 998 TRACE_EVENT_INSTANT0("c7,c8", "name", TRACE_EVENT_SCOPE_THREAD);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 EndTraceAndFlush(); 1123 EndTraceAndFlush();
1143 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end")); 1124 EXPECT_TRUE(FindMatchingValue("cat", "inc_wildchar_bla_end"));
1144 EXPECT_TRUE(FindMatchingValue("cat", "cat1")); 1125 EXPECT_TRUE(FindMatchingValue("cat", "cat1"));
1145 EXPECT_TRUE(FindMatchingValue("cat", "cat2")); 1126 EXPECT_TRUE(FindMatchingValue("cat", "cat2"));
1146 EXPECT_FALSE(FindMatchingValue("name", "not_inc")); 1127 EXPECT_FALSE(FindMatchingValue("name", "not_inc"));
1147 } 1128 }
1148 1129
1149 1130
1150 // Test EVENT_WATCH_NOTIFICATION 1131 // Test EVENT_WATCH_NOTIFICATION
1151 TEST_F(TraceEventTestFixture, EventWatchNotification) { 1132 TEST_F(TraceEventTestFixture, EventWatchNotification) {
1152 ManualTestSetUp();
1153
1154 // Basic one occurrence. 1133 // Basic one occurrence.
1155 BeginTrace(); 1134 BeginTrace();
1156 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 1135 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
1157 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); 1136 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
1158 EndTraceAndFlush(); 1137 EndTraceAndFlush();
1159 EXPECT_EQ(event_watch_notification_, 1); 1138 EXPECT_EQ(event_watch_notification_, 1);
1160 1139
1161 // Basic one occurrence before Set. 1140 // Basic one occurrence before Set.
1162 BeginTrace(); 1141 BeginTrace();
1163 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); 1142 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1201 BeginTrace(); 1180 BeginTrace();
1202 TraceLog::GetInstance()->SetWatchEvent("cat", "event"); 1181 TraceLog::GetInstance()->SetWatchEvent("cat", "event");
1203 TraceLog::GetInstance()->CancelWatchEvent(); 1182 TraceLog::GetInstance()->CancelWatchEvent();
1204 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD); 1183 TRACE_EVENT_INSTANT0("cat", "event", TRACE_EVENT_SCOPE_THREAD);
1205 EndTraceAndFlush(); 1184 EndTraceAndFlush();
1206 EXPECT_EQ(event_watch_notification_, 0); 1185 EXPECT_EQ(event_watch_notification_, 0);
1207 } 1186 }
1208 1187
1209 // Test ASYNC_BEGIN/END events 1188 // Test ASYNC_BEGIN/END events
1210 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) { 1189 TEST_F(TraceEventTestFixture, AsyncBeginEndEvents) {
1211 ManualTestSetUp();
1212 BeginTrace(); 1190 BeginTrace();
1213 1191
1214 unsigned long long id = 0xfeedbeeffeedbeefull; 1192 unsigned long long id = 0xfeedbeeffeedbeefull;
1215 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name1", id); 1193 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name1", id);
1216 TRACE_EVENT_ASYNC_STEP0( "cat", "name1", id, "step1"); 1194 TRACE_EVENT_ASYNC_STEP0( "cat", "name1", id, "step1");
1217 TRACE_EVENT_ASYNC_END0("cat", "name1", id); 1195 TRACE_EVENT_ASYNC_END0("cat", "name1", id);
1218 TRACE_EVENT_BEGIN0( "cat", "name2"); 1196 TRACE_EVENT_BEGIN0( "cat", "name2");
1219 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name3", 0); 1197 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name3", 0);
1220 1198
1221 EndTraceAndFlush(); 1199 EndTraceAndFlush();
1222 1200
1223 EXPECT_TRUE(FindNamePhase("name1", "S")); 1201 EXPECT_TRUE(FindNamePhase("name1", "S"));
1224 EXPECT_TRUE(FindNamePhase("name1", "T")); 1202 EXPECT_TRUE(FindNamePhase("name1", "T"));
1225 EXPECT_TRUE(FindNamePhase("name1", "F")); 1203 EXPECT_TRUE(FindNamePhase("name1", "F"));
1226 1204
1227 std::string id_str; 1205 std::string id_str;
1228 StringAppendF(&id_str, "0x%llx", id); 1206 StringAppendF(&id_str, "0x%llx", id);
1229 1207
1230 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "S", "id", id_str.c_str())); 1208 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "S", "id", id_str.c_str()));
1231 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "T", "id", id_str.c_str())); 1209 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "T", "id", id_str.c_str()));
1232 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "F", "id", id_str.c_str())); 1210 EXPECT_TRUE(FindNamePhaseKeyValue("name1", "F", "id", id_str.c_str()));
1233 EXPECT_TRUE(FindNamePhaseKeyValue("name3", "S", "id", "0x0")); 1211 EXPECT_TRUE(FindNamePhaseKeyValue("name3", "S", "id", "0x0"));
1234 1212
1235 // BEGIN events should not have id 1213 // BEGIN events should not have id
1236 EXPECT_FALSE(FindNamePhaseKeyValue("name2", "B", "id", "0")); 1214 EXPECT_FALSE(FindNamePhaseKeyValue("name2", "B", "id", "0"));
1237 } 1215 }
1238 1216
1239 // Test ASYNC_BEGIN/END events 1217 // Test ASYNC_BEGIN/END events
1240 TEST_F(TraceEventTestFixture, AsyncBeginEndPointerMangling) { 1218 TEST_F(TraceEventTestFixture, AsyncBeginEndPointerMangling) {
1241 ManualTestSetUp();
1242
1243 void* ptr = this; 1219 void* ptr = this;
1244 1220
1245 TraceLog::GetInstance()->SetProcessID(100); 1221 TraceLog::GetInstance()->SetProcessID(100);
1246 BeginTrace(); 1222 BeginTrace();
1247 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name1", ptr); 1223 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name1", ptr);
1248 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name2", ptr); 1224 TRACE_EVENT_ASYNC_BEGIN0( "cat", "name2", ptr);
1249 EndTraceAndFlush(); 1225 EndTraceAndFlush();
1250 1226
1251 TraceLog::GetInstance()->SetProcessID(200); 1227 TraceLog::GetInstance()->SetProcessID(200);
1252 BeginTrace(); 1228 BeginTrace();
(...skipping 17 matching lines...) Expand all
1270 ASSERT_TRUE(value->GetAsString(&async_begin2_id_str)); 1246 ASSERT_TRUE(value->GetAsString(&async_begin2_id_str));
1271 ASSERT_TRUE(async_end->Get("id", &value)); 1247 ASSERT_TRUE(async_end->Get("id", &value));
1272 ASSERT_TRUE(value->GetAsString(&async_end_id_str)); 1248 ASSERT_TRUE(value->GetAsString(&async_end_id_str));
1273 1249
1274 EXPECT_STREQ(async_begin_id_str.c_str(), async_begin2_id_str.c_str()); 1250 EXPECT_STREQ(async_begin_id_str.c_str(), async_begin2_id_str.c_str());
1275 EXPECT_STRNE(async_begin_id_str.c_str(), async_end_id_str.c_str()); 1251 EXPECT_STRNE(async_begin_id_str.c_str(), async_end_id_str.c_str());
1276 } 1252 }
1277 1253
1278 // Test that static strings are not copied. 1254 // Test that static strings are not copied.
1279 TEST_F(TraceEventTestFixture, StaticStringVsString) { 1255 TEST_F(TraceEventTestFixture, StaticStringVsString) {
1280 ManualTestSetUp();
1281 TraceLog* tracer = TraceLog::GetInstance(); 1256 TraceLog* tracer = TraceLog::GetInstance();
1282 // Make sure old events are flushed: 1257 // Make sure old events are flushed:
1283 EndTraceAndFlush(); 1258 EndTraceAndFlush();
1284 EXPECT_EQ(0u, tracer->GetEventsSize()); 1259 EXPECT_EQ(0u, tracer->GetEventsSize());
1285 1260
1286 { 1261 {
1287 BeginTrace(); 1262 BeginTrace();
1288 // Test that string arguments are copied. 1263 // Test that string arguments are copied.
1289 TRACE_EVENT2("cat", "name1", 1264 TRACE_EVENT2("cat", "name1",
1290 "arg1", std::string("argval"), "arg2", std::string("argval")); 1265 "arg1", std::string("argval"), "arg2", std::string("argval"));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 EXPECT_STREQ("name1", event1.name()); 1298 EXPECT_STREQ("name1", event1.name());
1324 EXPECT_STREQ("name2", event2.name()); 1299 EXPECT_STREQ("name2", event2.name());
1325 EXPECT_TRUE(event1.parameter_copy_storage() == NULL); 1300 EXPECT_TRUE(event1.parameter_copy_storage() == NULL);
1326 EXPECT_TRUE(event2.parameter_copy_storage() == NULL); 1301 EXPECT_TRUE(event2.parameter_copy_storage() == NULL);
1327 EndTraceAndFlush(); 1302 EndTraceAndFlush();
1328 } 1303 }
1329 } 1304 }
1330 1305
1331 // Test that data sent from other threads is gathered 1306 // Test that data sent from other threads is gathered
1332 TEST_F(TraceEventTestFixture, DataCapturedOnThread) { 1307 TEST_F(TraceEventTestFixture, DataCapturedOnThread) {
1333 ManualTestSetUp();
1334 BeginTrace(); 1308 BeginTrace();
1335 1309
1336 Thread thread("1"); 1310 Thread thread("1");
1337 WaitableEvent task_complete_event(false, false); 1311 WaitableEvent task_complete_event(false, false);
1338 thread.Start(); 1312 thread.Start();
1339 1313
1340 thread.message_loop()->PostTask( 1314 thread.message_loop()->PostTask(
1341 FROM_HERE, base::Bind(&TraceWithAllMacroVariants, &task_complete_event)); 1315 FROM_HERE, base::Bind(&TraceWithAllMacroVariants, &task_complete_event));
1342 task_complete_event.Wait(); 1316 task_complete_event.Wait();
1343 thread.Stop(); 1317 thread.Stop();
1344 1318
1345 EndTraceAndFlush(); 1319 EndTraceAndFlush();
1346 ValidateAllTraceMacrosCreatedData(trace_parsed_); 1320 ValidateAllTraceMacrosCreatedData(trace_parsed_);
1347 } 1321 }
1348 1322
1349 // Test that data sent from multiple threads is gathered 1323 // Test that data sent from multiple threads is gathered
1350 TEST_F(TraceEventTestFixture, DataCapturedManyThreads) { 1324 TEST_F(TraceEventTestFixture, DataCapturedManyThreads) {
1351 ManualTestSetUp();
1352 BeginTrace(); 1325 BeginTrace();
1353 1326
1354 const int num_threads = 4; 1327 const int num_threads = 4;
1355 const int num_events = 4000; 1328 const int num_events = 4000;
1356 Thread* threads[num_threads]; 1329 Thread* threads[num_threads];
1357 WaitableEvent* task_complete_events[num_threads]; 1330 WaitableEvent* task_complete_events[num_threads];
1358 for (int i = 0; i < num_threads; i++) { 1331 for (int i = 0; i < num_threads; i++) {
1359 threads[i] = new Thread(StringPrintf("Thread %d", i).c_str()); 1332 threads[i] = new Thread(StringPrintf("Thread %d", i).c_str());
1360 task_complete_events[i] = new WaitableEvent(false, false); 1333 task_complete_events[i] = new WaitableEvent(false, false);
1361 threads[i]->Start(); 1334 threads[i]->Start();
(...skipping 13 matching lines...) Expand all
1375 } 1348 }
1376 1349
1377 EndTraceAndFlush(); 1350 EndTraceAndFlush();
1378 1351
1379 ValidateInstantEventPresentOnEveryThread(trace_parsed_, 1352 ValidateInstantEventPresentOnEveryThread(trace_parsed_,
1380 num_threads, num_events); 1353 num_threads, num_events);
1381 } 1354 }
1382 1355
1383 // Test that thread and process names show up in the trace 1356 // Test that thread and process names show up in the trace
1384 TEST_F(TraceEventTestFixture, ThreadNames) { 1357 TEST_F(TraceEventTestFixture, ThreadNames) {
1385 ManualTestSetUp();
1386
1387 // Create threads before we enable tracing to make sure 1358 // Create threads before we enable tracing to make sure
1388 // that tracelog still captures them. 1359 // that tracelog still captures them.
1389 const int num_threads = 4; 1360 const int num_threads = 4;
1390 const int num_events = 10; 1361 const int num_events = 10;
1391 Thread* threads[num_threads]; 1362 Thread* threads[num_threads];
1392 PlatformThreadId thread_ids[num_threads]; 1363 PlatformThreadId thread_ids[num_threads];
1393 for (int i = 0; i < num_threads; i++) 1364 for (int i = 0; i < num_threads; i++)
1394 threads[i] = new Thread(StringPrintf("Thread %d", i).c_str()); 1365 threads[i] = new Thread(StringPrintf("Thread %d", i).c_str());
1395 1366
1396 // Enable tracing. 1367 // Enable tracing.
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 tmp_int == static_cast<int>(base::GetCurrentProcId())); 1415 tmp_int == static_cast<int>(base::GetCurrentProcId()));
1445 // If the thread name changes or the tid gets reused, the name will be 1416 // If the thread name changes or the tid gets reused, the name will be
1446 // a comma-separated list of thread names, so look for a substring. 1417 // a comma-separated list of thread names, so look for a substring.
1447 EXPECT_TRUE(item->GetString("args.name", &tmp) && 1418 EXPECT_TRUE(item->GetString("args.name", &tmp) &&
1448 tmp.find(expected_name) != std::string::npos); 1419 tmp.find(expected_name) != std::string::npos);
1449 } 1420 }
1450 } 1421 }
1451 } 1422 }
1452 1423
1453 TEST_F(TraceEventTestFixture, ThreadNameChanges) { 1424 TEST_F(TraceEventTestFixture, ThreadNameChanges) {
1454 ManualTestSetUp();
1455
1456 BeginTrace(); 1425 BeginTrace();
1457 1426
1458 PlatformThread::SetName(""); 1427 PlatformThread::SetName("");
1459 TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD); 1428 TRACE_EVENT_INSTANT0("drink", "water", TRACE_EVENT_SCOPE_THREAD);
1460 1429
1461 PlatformThread::SetName("cafe"); 1430 PlatformThread::SetName("cafe");
1462 TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD); 1431 TRACE_EVENT_INSTANT0("drink", "coffee", TRACE_EVENT_SCOPE_THREAD);
1463 1432
1464 PlatformThread::SetName("shop"); 1433 PlatformThread::SetName("shop");
1465 // No event here, so won't appear in combined name. 1434 // No event here, so won't appear in combined name.
(...skipping 19 matching lines...) Expand all
1485 1454
1486 std::string expected_name = "cafe,pub, bar"; 1455 std::string expected_name = "cafe,pub, bar";
1487 std::string tmp; 1456 std::string tmp;
1488 EXPECT_TRUE(item->GetString("args.name", &tmp)); 1457 EXPECT_TRUE(item->GetString("args.name", &tmp));
1489 EXPECT_EQ(expected_name, tmp); 1458 EXPECT_EQ(expected_name, tmp);
1490 } 1459 }
1491 1460
1492 // Test that the disabled trace categories are included/excluded from the 1461 // Test that the disabled trace categories are included/excluded from the
1493 // trace output correctly. 1462 // trace output correctly.
1494 TEST_F(TraceEventTestFixture, DisabledCategories) { 1463 TEST_F(TraceEventTestFixture, DisabledCategories) {
1495 ManualTestSetUp();
1496
1497 BeginTrace(); 1464 BeginTrace();
1498 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("cc"), "first", 1465 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("cc"), "first",
1499 TRACE_EVENT_SCOPE_THREAD); 1466 TRACE_EVENT_SCOPE_THREAD);
1500 TRACE_EVENT_INSTANT0("included", "first", TRACE_EVENT_SCOPE_THREAD); 1467 TRACE_EVENT_INSTANT0("included", "first", TRACE_EVENT_SCOPE_THREAD);
1501 EndTraceAndFlush(); 1468 EndTraceAndFlush();
1502 { 1469 {
1503 const DictionaryValue* item = NULL; 1470 const DictionaryValue* item = NULL;
1504 ListValue& trace_parsed = trace_parsed_; 1471 ListValue& trace_parsed = trace_parsed_;
1505 EXPECT_NOT_FIND_("disabled-by-default-cc"); 1472 EXPECT_NOT_FIND_("disabled-by-default-cc");
1506 EXPECT_FIND_("included"); 1473 EXPECT_FIND_("included");
1507 } 1474 }
1508 Clear(); 1475 Clear();
1509 1476
1510 BeginSpecificTrace("disabled-by-default-cc"); 1477 BeginSpecificTrace("disabled-by-default-cc");
1511 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("cc"), "second", 1478 TRACE_EVENT_INSTANT0(TRACE_DISABLED_BY_DEFAULT("cc"), "second",
1512 TRACE_EVENT_SCOPE_THREAD); 1479 TRACE_EVENT_SCOPE_THREAD);
1513 TRACE_EVENT_INSTANT0("other_included", "second", TRACE_EVENT_SCOPE_THREAD); 1480 TRACE_EVENT_INSTANT0("other_included", "second", TRACE_EVENT_SCOPE_THREAD);
1514 EndTraceAndFlush(); 1481 EndTraceAndFlush();
1515 1482
1516 { 1483 {
1517 const DictionaryValue* item = NULL; 1484 const DictionaryValue* item = NULL;
1518 ListValue& trace_parsed = trace_parsed_; 1485 ListValue& trace_parsed = trace_parsed_;
1519 EXPECT_FIND_("disabled-by-default-cc"); 1486 EXPECT_FIND_("disabled-by-default-cc");
1520 EXPECT_FIND_("other_included"); 1487 EXPECT_FIND_("other_included");
1521 } 1488 }
1522 } 1489 }
1523 1490
1524 // Test trace calls made after tracing singleton shut down.
1525 //
1526 // The singleton is destroyed by our base::AtExitManager, but there can be
1527 // code still executing as the C++ static objects are destroyed. This test
1528 // forces the singleton to destroy early, and intentinally makes trace calls
1529 // afterwards.
1530 TEST_F(TraceEventTestFixture, AtExit) {
1531 // Repeat this test a few times. Besides just showing robustness, it also
1532 // allows us to test that events at shutdown do not appear with valid events
1533 // recorded after the system is started again.
1534 for (int i = 0; i < 4; i++) {
1535 // Scope to contain the then destroy the TraceLog singleton.
1536 {
1537 base::ShadowingAtExitManager exit_manager_will_destroy_singletons;
1538
1539 // Setup TraceLog singleton inside this test's exit manager scope
1540 // so that it will be destroyed when this scope closes.
1541 ManualTestSetUp();
1542
1543 TRACE_EVENT_INSTANT0("all", "not recorded; system not enabled",
1544 TRACE_EVENT_SCOPE_THREAD);
1545
1546 BeginTrace();
1547
1548 TRACE_EVENT_INSTANT0("all", "is recorded 1; system has been enabled",
1549 TRACE_EVENT_SCOPE_THREAD);
1550 // Trace calls that will cache pointers to categories; they're valid here
1551 TraceCallsWithCachedCategoryPointersPointers(
1552 "is recorded 2; system has been enabled");
1553
1554 EndTraceAndFlush();
1555 } // scope to destroy singleton
1556 ASSERT_FALSE(TraceLog::GetInstance());
1557
1558 // Now that singleton is destroyed, check what trace events were recorded
1559 const DictionaryValue* item = NULL;
1560 ListValue& trace_parsed = trace_parsed_;
1561 EXPECT_FIND_("is recorded 1");
1562 EXPECT_FIND_("is recorded 2");
1563 EXPECT_NOT_FIND_("not recorded");
1564
1565 // Make additional trace event calls on the shutdown system. They should
1566 // all pass cleanly, but the data not be recorded. We'll verify that next
1567 // time around the loop (the only way to flush the trace buffers).
1568 TRACE_EVENT_BEGIN_ETW("not recorded; system shutdown", 0, NULL);
1569 TRACE_EVENT_END_ETW("not recorded; system shutdown", 0, NULL);
1570 TRACE_EVENT_INSTANT_ETW("not recorded; system shutdown", 0, NULL);
1571 TRACE_EVENT0("all", "not recorded; system shutdown");
1572 TRACE_EVENT_INSTANT0("all", "not recorded; system shutdown",
1573 TRACE_EVENT_SCOPE_THREAD);
1574 TRACE_EVENT_BEGIN0("all", "not recorded; system shutdown");
1575 TRACE_EVENT_END0("all", "not recorded; system shutdown");
1576
1577 TRACE_EVENT0("new category 0!", "not recorded; system shutdown");
1578 TRACE_EVENT_INSTANT0("new category 1!", "not recorded; system shutdown",
1579 TRACE_EVENT_SCOPE_THREAD);
1580 TRACE_EVENT_BEGIN0("new category 2!", "not recorded; system shutdown");
1581 TRACE_EVENT_END0("new category 3!", "not recorded; system shutdown");
1582
1583 // Cached categories should be safe to check, and still disable traces
1584 TraceCallsWithCachedCategoryPointersPointers(
1585 "not recorded; system shutdown");
1586 }
1587 }
1588
1589 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) { 1491 TEST_F(TraceEventTestFixture, NormallyNoDeepCopy) {
1590 // Test that the TRACE_EVENT macros do not deep-copy their string. If they 1492 // Test that the TRACE_EVENT macros do not deep-copy their string. If they
1591 // do so it may indicate a performance regression, but more-over it would 1493 // do so it may indicate a performance regression, but more-over it would
1592 // make the DEEP_COPY overloads redundant. 1494 // make the DEEP_COPY overloads redundant.
1593 ManualTestSetUp();
1594
1595 std::string name_string("event name"); 1495 std::string name_string("event name");
1596 1496
1597 BeginTrace(); 1497 BeginTrace();
1598 TRACE_EVENT_INSTANT0("category", name_string.c_str(), 1498 TRACE_EVENT_INSTANT0("category", name_string.c_str(),
1599 TRACE_EVENT_SCOPE_THREAD); 1499 TRACE_EVENT_SCOPE_THREAD);
1600 1500
1601 // Modify the string in place (a wholesale reassignment may leave the old 1501 // Modify the string in place (a wholesale reassignment may leave the old
1602 // string intact on the heap). 1502 // string intact on the heap).
1603 name_string[0] = '@'; 1503 name_string[0] = '@';
1604 1504
1605 EndTraceAndFlush(); 1505 EndTraceAndFlush();
1606 1506
1607 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name")); 1507 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "event name"));
1608 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str())); 1508 EXPECT_TRUE(FindTraceEntry(trace_parsed_, name_string.c_str()));
1609 } 1509 }
1610 1510
1611 TEST_F(TraceEventTestFixture, DeepCopy) { 1511 TEST_F(TraceEventTestFixture, DeepCopy) {
1612 ManualTestSetUp();
1613
1614 static const char kOriginalName1[] = "name1"; 1512 static const char kOriginalName1[] = "name1";
1615 static const char kOriginalName2[] = "name2"; 1513 static const char kOriginalName2[] = "name2";
1616 static const char kOriginalName3[] = "name3"; 1514 static const char kOriginalName3[] = "name3";
1617 std::string name1(kOriginalName1); 1515 std::string name1(kOriginalName1);
1618 std::string name2(kOriginalName2); 1516 std::string name2(kOriginalName2);
1619 std::string name3(kOriginalName3); 1517 std::string name3(kOriginalName3);
1620 std::string arg1("arg1"); 1518 std::string arg1("arg1");
1621 std::string arg2("arg2"); 1519 std::string arg2("arg2");
1622 std::string val1("val1"); 1520 std::string val1("val1");
1623 std::string val2("val2"); 1521 std::string val2("val2");
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
1655 std::string s; 1553 std::string s;
1656 EXPECT_TRUE(entry3->GetString("args.arg1", &s)); 1554 EXPECT_TRUE(entry3->GetString("args.arg1", &s));
1657 EXPECT_EQ("val1", s); 1555 EXPECT_EQ("val1", s);
1658 EXPECT_TRUE(entry3->GetString("args.arg2", &s)); 1556 EXPECT_TRUE(entry3->GetString("args.arg2", &s));
1659 EXPECT_EQ("val2", s); 1557 EXPECT_EQ("val2", s);
1660 } 1558 }
1661 1559
1662 // Test that TraceResultBuffer outputs the correct result whether it is added 1560 // Test that TraceResultBuffer outputs the correct result whether it is added
1663 // in chunks or added all at once. 1561 // in chunks or added all at once.
1664 TEST_F(TraceEventTestFixture, TraceResultBuffer) { 1562 TEST_F(TraceEventTestFixture, TraceResultBuffer) {
1665 ManualTestSetUp();
1666
1667 Clear(); 1563 Clear();
1668 1564
1669 trace_buffer_.Start(); 1565 trace_buffer_.Start();
1670 trace_buffer_.AddFragment("bla1"); 1566 trace_buffer_.AddFragment("bla1");
1671 trace_buffer_.AddFragment("bla2"); 1567 trace_buffer_.AddFragment("bla2");
1672 trace_buffer_.AddFragment("bla3,bla4"); 1568 trace_buffer_.AddFragment("bla3,bla4");
1673 trace_buffer_.Finish(); 1569 trace_buffer_.Finish();
1674 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); 1570 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]");
1675 1571
1676 Clear(); 1572 Clear();
1677 1573
1678 trace_buffer_.Start(); 1574 trace_buffer_.Start();
1679 trace_buffer_.AddFragment("bla1,bla2,bla3,bla4"); 1575 trace_buffer_.AddFragment("bla1,bla2,bla3,bla4");
1680 trace_buffer_.Finish(); 1576 trace_buffer_.Finish();
1681 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]"); 1577 EXPECT_STREQ(json_output_.json_output.c_str(), "[bla1,bla2,bla3,bla4]");
1682 } 1578 }
1683 1579
1684 // Test that trace_event parameters are not evaluated if the tracing 1580 // Test that trace_event parameters are not evaluated if the tracing
1685 // system is disabled. 1581 // system is disabled.
1686 TEST_F(TraceEventTestFixture, TracingIsLazy) { 1582 TEST_F(TraceEventTestFixture, TracingIsLazy) {
1687 ManualTestSetUp();
1688 BeginTrace(); 1583 BeginTrace();
1689 1584
1690 int a = 0; 1585 int a = 0;
1691 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); 1586 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
1692 EXPECT_EQ(1, a); 1587 EXPECT_EQ(1, a);
1693 1588
1694 TraceLog::GetInstance()->SetDisabled(); 1589 TraceLog::GetInstance()->SetDisabled();
1695 1590
1696 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++); 1591 TRACE_EVENT_INSTANT1("category", "test", TRACE_EVENT_SCOPE_THREAD, "a", a++);
1697 EXPECT_EQ(1, a); 1592 EXPECT_EQ(1, a);
1698 1593
1699 EndTraceAndFlush(); 1594 EndTraceAndFlush();
1700 } 1595 }
1701 1596
1702 TEST_F(TraceEventTestFixture, TraceEnableDisable) { 1597 TEST_F(TraceEventTestFixture, TraceEnableDisable) {
1703 ManualTestSetUp();
1704
1705 TraceLog* trace_log = TraceLog::GetInstance(); 1598 TraceLog* trace_log = TraceLog::GetInstance();
1706 CategoryFilter cf_inc_all("*"); 1599 CategoryFilter cf_inc_all("*");
1707 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 1600 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
1708 EXPECT_TRUE(trace_log->IsEnabled()); 1601 EXPECT_TRUE(trace_log->IsEnabled());
1709 trace_log->SetDisabled(); 1602 trace_log->SetDisabled();
1710 EXPECT_FALSE(trace_log->IsEnabled()); 1603 EXPECT_FALSE(trace_log->IsEnabled());
1711 1604
1712 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); 1605 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL);
1713 EXPECT_TRUE(trace_log->IsEnabled()); 1606 EXPECT_TRUE(trace_log->IsEnabled());
1714 const std::vector<std::string> empty; 1607 const std::vector<std::string> empty;
1715 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); 1608 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL);
1716 EXPECT_TRUE(trace_log->IsEnabled()); 1609 EXPECT_TRUE(trace_log->IsEnabled());
1717 trace_log->SetDisabled(); 1610 trace_log->SetDisabled();
1718 EXPECT_TRUE(trace_log->IsEnabled()); 1611 EXPECT_TRUE(trace_log->IsEnabled());
1719 trace_log->SetDisabled(); 1612 trace_log->SetDisabled();
1720 EXPECT_FALSE(trace_log->IsEnabled()); 1613 EXPECT_FALSE(trace_log->IsEnabled());
1721 } 1614 }
1722 1615
1723 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { 1616 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) {
1724 ManualTestSetUp();
1725
1726 TraceLog* trace_log = TraceLog::GetInstance(); 1617 TraceLog* trace_log = TraceLog::GetInstance();
1727 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL); 1618 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL);
1728 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); 1619 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo"));
1729 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); 1620 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
1730 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1621 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1731 trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL); 1622 trace_log->SetEnabled(CategoryFilter("foo2"), TraceLog::RECORD_UNTIL_FULL);
1732 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2")); 1623 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo2"));
1733 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); 1624 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz"));
1734 // The "" becomes the default catergory set when applied. 1625 // The "" becomes the default catergory set when applied.
1735 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); 1626 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL);
(...skipping 29 matching lines...) Expand all
1765 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc")); 1656 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-cc"));
1766 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu")); 1657 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("disabled-by-default-gpu"));
1767 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); 1658 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar"));
1768 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu", 1659 EXPECT_STREQ("disabled-by-default-cc,disabled-by-default-gpu",
1769 trace_log->GetCurrentCategoryFilter().ToString().c_str()); 1660 trace_log->GetCurrentCategoryFilter().ToString().c_str());
1770 trace_log->SetDisabled(); 1661 trace_log->SetDisabled();
1771 trace_log->SetDisabled(); 1662 trace_log->SetDisabled();
1772 } 1663 }
1773 1664
1774 TEST_F(TraceEventTestFixture, TraceOptionsParsing) { 1665 TEST_F(TraceEventTestFixture, TraceOptionsParsing) {
1775 ManualTestSetUp();
1776
1777 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, 1666 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL,
1778 TraceLog::TraceOptionsFromString(std::string())); 1667 TraceLog::TraceOptionsFromString(std::string()));
1779 1668
1780 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL, 1669 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL,
1781 TraceLog::TraceOptionsFromString("record-until-full")); 1670 TraceLog::TraceOptionsFromString("record-until-full"));
1782 EXPECT_EQ(TraceLog::RECORD_CONTINUOUSLY, 1671 EXPECT_EQ(TraceLog::RECORD_CONTINUOUSLY,
1783 TraceLog::TraceOptionsFromString("record-continuously")); 1672 TraceLog::TraceOptionsFromString("record-continuously"));
1784 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL | TraceLog::ENABLE_SAMPLING, 1673 EXPECT_EQ(TraceLog::RECORD_UNTIL_FULL | TraceLog::ENABLE_SAMPLING,
1785 TraceLog::TraceOptionsFromString("enable-sampling")); 1674 TraceLog::TraceOptionsFromString("enable-sampling"));
1786 EXPECT_EQ(TraceLog::RECORD_CONTINUOUSLY | TraceLog::ENABLE_SAMPLING, 1675 EXPECT_EQ(TraceLog::RECORD_CONTINUOUSLY | TraceLog::ENABLE_SAMPLING,
1787 TraceLog::TraceOptionsFromString( 1676 TraceLog::TraceOptionsFromString(
1788 "record-continuously,enable-sampling")); 1677 "record-continuously,enable-sampling"));
1789 } 1678 }
1790 1679
1791 // Not supported in split dll build. http://crbug.com/256965 1680 // Not supported in split dll build. http://crbug.com/256965
1792 #if !defined(CHROME_SPLIT_DLL) 1681 #if !defined(CHROME_SPLIT_DLL)
1793 TEST_F(TraceEventTestFixture, TraceSampling) { 1682 TEST_F(TraceEventTestFixture, TraceSampling) {
1794 ManualTestSetUp();
1795
1796 event_watch_notification_ = 0; 1683 event_watch_notification_ = 0;
1797 TraceLog::GetInstance()->SetEnabled( 1684 TraceLog::GetInstance()->SetEnabled(
1798 CategoryFilter("*"), 1685 CategoryFilter("*"),
1799 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | 1686 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
1800 TraceLog::ENABLE_SAMPLING)); 1687 TraceLog::ENABLE_SAMPLING));
1801 1688
1802 WaitableEvent* sampled = new WaitableEvent(false, false); 1689 WaitableEvent* sampled = new WaitableEvent(false, false);
1803 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled); 1690 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled);
1804 1691
1805 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff"); 1692 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Stuff");
1806 sampled->Wait(); 1693 sampled->Wait();
1807 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things"); 1694 TRACE_EVENT_SET_SAMPLING_STATE_FOR_BUCKET(1, "cc", "Things");
1808 sampled->Wait(); 1695 sampled->Wait();
1809 1696
1810 EndTraceAndFlush(); 1697 EndTraceAndFlush();
1811 1698
1812 // Make sure we hit at least once. 1699 // Make sure we hit at least once.
1813 EXPECT_TRUE(FindNamePhase("Stuff", "P")); 1700 EXPECT_TRUE(FindNamePhase("Stuff", "P"));
1814 EXPECT_TRUE(FindNamePhase("Things", "P")); 1701 EXPECT_TRUE(FindNamePhase("Things", "P"));
1815 } 1702 }
1816 1703
1817 TEST_F(TraceEventTestFixture, TraceSamplingScope) { 1704 TEST_F(TraceEventTestFixture, TraceSamplingScope) {
1818 ManualTestSetUp();
1819
1820 event_watch_notification_ = 0; 1705 event_watch_notification_ = 0;
1821 TraceLog::GetInstance()->SetEnabled( 1706 TraceLog::GetInstance()->SetEnabled(
1822 CategoryFilter("*"), 1707 CategoryFilter("*"),
1823 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL | 1708 TraceLog::Options(TraceLog::RECORD_UNTIL_FULL |
1824 TraceLog::ENABLE_SAMPLING)); 1709 TraceLog::ENABLE_SAMPLING));
1825 1710
1826 WaitableEvent* sampled = new WaitableEvent(false, false); 1711 WaitableEvent* sampled = new WaitableEvent(false, false);
1827 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled); 1712 TraceLog::GetInstance()->InstallWaitableEventForSamplingTesting(sampled);
1828 1713
1829 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name"); 1714 TRACE_EVENT_SCOPED_SAMPLING_STATE("AAA", "name");
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1862 1747
1863 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE { 1748 virtual void AppendAsTraceFormat(std::string* out) const OVERRIDE {
1864 out->append("{\"foo\":1}"); 1749 out->append("{\"foo\":1}");
1865 } 1750 }
1866 1751
1867 private: 1752 private:
1868 DISALLOW_COPY_AND_ASSIGN(MyData); 1753 DISALLOW_COPY_AND_ASSIGN(MyData);
1869 }; 1754 };
1870 1755
1871 TEST_F(TraceEventTestFixture, ConvertableTypes) { 1756 TEST_F(TraceEventTestFixture, ConvertableTypes) {
1872 ManualTestSetUp();
1873 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), 1757 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"),
1874 TraceLog::RECORD_UNTIL_FULL); 1758 TraceLog::RECORD_UNTIL_FULL);
1875 1759
1876 scoped_ptr<MyData> data(new MyData()); 1760 scoped_ptr<MyData> data(new MyData());
1877 scoped_ptr<MyData> data1(new MyData()); 1761 scoped_ptr<MyData> data1(new MyData());
1878 scoped_ptr<MyData> data2(new MyData()); 1762 scoped_ptr<MyData> data2(new MyData());
1879 TRACE_EVENT1("foo", "bar", "data", 1763 TRACE_EVENT1("foo", "bar", "data",
1880 data.PassAs<base::debug::ConvertableToTraceFormat>()); 1764 data.PassAs<base::debug::ConvertableToTraceFormat>());
1881 TRACE_EVENT2("foo", "baz", 1765 TRACE_EVENT2("foo", "baz",
1882 "data1", data1.PassAs<base::debug::ConvertableToTraceFormat>(), 1766 "data1", data1.PassAs<base::debug::ConvertableToTraceFormat>(),
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1972 EXPECT_TRUE(args_dict->Get("convert", &value)); 1856 EXPECT_TRUE(args_dict->Get("convert", &value));
1973 ASSERT_TRUE(value->GetAsDictionary(&convertable_dict)); 1857 ASSERT_TRUE(value->GetAsDictionary(&convertable_dict));
1974 EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val)); 1858 EXPECT_TRUE(convertable_dict->GetInteger("foo", &foo_val));
1975 EXPECT_EQ(1, foo_val); 1859 EXPECT_EQ(1, foo_val);
1976 } 1860 }
1977 1861
1978 class TraceEventCallbackTest : public TraceEventTestFixture { 1862 class TraceEventCallbackTest : public TraceEventTestFixture {
1979 public: 1863 public:
1980 virtual void SetUp() OVERRIDE { 1864 virtual void SetUp() OVERRIDE {
1981 TraceEventTestFixture::SetUp(); 1865 TraceEventTestFixture::SetUp();
1982 ManualTestSetUp();
1983 ASSERT_EQ(NULL, s_instance); 1866 ASSERT_EQ(NULL, s_instance);
1984 s_instance = this; 1867 s_instance = this;
1985 } 1868 }
1986 virtual void TearDown() OVERRIDE { 1869 virtual void TearDown() OVERRIDE {
1987 while (TraceLog::GetInstance()->IsEnabled()) 1870 while (TraceLog::GetInstance()->IsEnabled())
1988 TraceLog::GetInstance()->SetDisabled(); 1871 TraceLog::GetInstance()->SetDisabled();
1989 ASSERT_TRUE(!!s_instance); 1872 ASSERT_TRUE(!!s_instance);
1990 s_instance = NULL; 1873 s_instance = NULL;
1991 TraceEventTestFixture::TearDown(); 1874 TraceEventTestFixture::TearDown();
1992 } 1875 }
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
2036 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); 1919 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL);
2037 TraceLog::GetInstance()->SetEventCallback(NULL); 1920 TraceLog::GetInstance()->SetEventCallback(NULL);
2038 ASSERT_EQ(1u, collected_events_.size()); 1921 ASSERT_EQ(1u, collected_events_.size());
2039 EXPECT_EQ("a snake", collected_events_[0]); 1922 EXPECT_EQ("a snake", collected_events_[0]);
2040 } 1923 }
2041 1924
2042 // TODO(dsinclair): Continuous Tracing unit test. 1925 // TODO(dsinclair): Continuous Tracing unit test.
2043 1926
2044 // Test the category filter. 1927 // Test the category filter.
2045 TEST_F(TraceEventTestFixture, CategoryFilter) { 1928 TEST_F(TraceEventTestFixture, CategoryFilter) {
2046 ManualTestSetUp();
2047
2048 // Using the default filter. 1929 // Using the default filter.
2049 CategoryFilter default_cf = CategoryFilter( 1930 CategoryFilter default_cf = CategoryFilter(
2050 CategoryFilter::kDefaultCategoryFilterString); 1931 CategoryFilter::kDefaultCategoryFilterString);
2051 std::string category_filter_str = default_cf.ToString(); 1932 std::string category_filter_str = default_cf.ToString();
2052 EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str()); 1933 EXPECT_STREQ("-*Debug,-*Test", category_filter_str.c_str());
2053 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category")); 1934 EXPECT_TRUE(default_cf.IsCategoryGroupEnabled("not-excluded-category"));
2054 EXPECT_FALSE( 1935 EXPECT_FALSE(
2055 default_cf.IsCategoryGroupEnabled("disabled-by-default-category")); 1936 default_cf.IsCategoryGroupEnabled("disabled-by-default-category"));
2056 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug")); 1937 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("Category1,CategoryDebug"));
2057 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1")); 1938 EXPECT_FALSE(default_cf.IsCategoryGroupEnabled("CategoryDebug,Category1"));
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
2137 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( 2018 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
2138 " bad_category ")); 2019 " bad_category "));
2139 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( 2020 EXPECT_TRUE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
2140 "")); 2021 ""));
2141 EXPECT_FALSE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace( 2022 EXPECT_FALSE(CategoryFilter::IsEmptyOrContainsLeadingOrTrailingWhitespace(
2142 "good_category")); 2023 "good_category"));
2143 } 2024 }
2144 2025
2145 } // namespace debug 2026 } // namespace debug
2146 } // namespace base 2027 } // namespace base
OLDNEW
« no previous file with comments | « base/debug/trace_event_impl.cc ('k') | base/debug/trace_event_win_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698