OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/debug/trace_event_unittest.h" | 5 #include "base/debug/trace_event_unittest.h" |
6 | 6 |
7 #include <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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
97 Thread flush_thread("flush"); | 97 Thread flush_thread("flush"); |
98 flush_thread.Start(); | 98 flush_thread.Start(); |
99 flush_thread.message_loop()->PostTask(FROM_HERE, | 99 flush_thread.message_loop()->PostTask(FROM_HERE, |
100 base::Bind(&TraceEventTestFixture::EndTraceAndFlushAsync, | 100 base::Bind(&TraceEventTestFixture::EndTraceAndFlushAsync, |
101 base::Unretained(this), | 101 base::Unretained(this), |
102 &flush_complete_event)); | 102 &flush_complete_event)); |
103 flush_complete_event.Wait(); | 103 flush_complete_event.Wait(); |
104 } | 104 } |
105 | 105 |
106 void EndTraceAndFlushAsync(WaitableEvent* flush_complete_event) { | 106 void EndTraceAndFlushAsync(WaitableEvent* flush_complete_event) { |
107 while (TraceLog::GetInstance()->IsEnabled()) | 107 TraceLog::GetInstance()->SetDisabled(); |
108 TraceLog::GetInstance()->SetDisabled(); | |
109 TraceLog::GetInstance()->Flush( | 108 TraceLog::GetInstance()->Flush( |
110 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, | 109 base::Bind(&TraceEventTestFixture::OnTraceDataCollected, |
111 base::Unretained(static_cast<TraceEventTestFixture*>(this)), | 110 base::Unretained(static_cast<TraceEventTestFixture*>(this)), |
112 base::Unretained(flush_complete_event))); | 111 base::Unretained(flush_complete_event))); |
113 } | 112 } |
114 | 113 |
115 void FlushMonitoring() { | 114 void FlushMonitoring() { |
116 WaitableEvent flush_complete_event(false, false); | 115 WaitableEvent flush_complete_event(false, false); |
117 FlushMonitoring(&flush_complete_event); | 116 FlushMonitoring(&flush_complete_event); |
118 flush_complete_event.Wait(); | 117 flush_complete_event.Wait(); |
(...skipping 789 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 TraceLog::RECORD_UNTIL_FULL); | 907 TraceLog::RECORD_UNTIL_FULL); |
909 testing::Mock::VerifyAndClear(&observer); | 908 testing::Mock::VerifyAndClear(&observer); |
910 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); | 909 EXPECT_TRUE(TraceLog::GetInstance()->IsEnabled()); |
911 | 910 |
912 // Cleanup. | 911 // Cleanup. |
913 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 912 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
914 TraceLog::GetInstance()->SetDisabled(); | 913 TraceLog::GetInstance()->SetDisabled(); |
915 TraceLog::GetInstance()->SetDisabled(); | 914 TraceLog::GetInstance()->SetDisabled(); |
916 } | 915 } |
917 | 916 |
918 TEST_F(TraceEventTestFixture, EnabledObserverDoesntFireOnNestedDisable) { | 917 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnFirstDisable) { |
919 CategoryFilter cf_inc_all("*"); | 918 CategoryFilter cf_inc_all("*"); |
920 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); | 919 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
921 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); | 920 TraceLog::GetInstance()->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
922 | 921 |
923 testing::StrictMock<MockEnabledStateChangedObserver> observer; | 922 testing::StrictMock<MockEnabledStateChangedObserver> observer; |
924 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); | 923 TraceLog::GetInstance()->AddEnabledStateObserver(&observer); |
925 | 924 |
926 EXPECT_CALL(observer, OnTraceLogEnabled()) | 925 EXPECT_CALL(observer, OnTraceLogEnabled()) |
927 .Times(0); | 926 .Times(0); |
928 EXPECT_CALL(observer, OnTraceLogDisabled()) | 927 EXPECT_CALL(observer, OnTraceLogDisabled()) |
929 .Times(0); | 928 .Times(1); |
930 TraceLog::GetInstance()->SetDisabled(); | 929 TraceLog::GetInstance()->SetDisabled(); |
931 testing::Mock::VerifyAndClear(&observer); | 930 testing::Mock::VerifyAndClear(&observer); |
932 | 931 |
933 // Cleanup. | 932 // Cleanup. |
934 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); | 933 TraceLog::GetInstance()->RemoveEnabledStateObserver(&observer); |
935 TraceLog::GetInstance()->SetDisabled(); | 934 TraceLog::GetInstance()->SetDisabled(); |
936 } | 935 } |
937 | 936 |
938 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { | 937 TEST_F(TraceEventTestFixture, EnabledObserverFiresOnDisable) { |
939 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 938 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
(...skipping 734 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1674 EXPECT_TRUE(trace_log->IsEnabled()); | 1673 EXPECT_TRUE(trace_log->IsEnabled()); |
1675 trace_log->SetDisabled(); | 1674 trace_log->SetDisabled(); |
1676 EXPECT_FALSE(trace_log->IsEnabled()); | 1675 EXPECT_FALSE(trace_log->IsEnabled()); |
1677 | 1676 |
1678 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); | 1677 trace_log->SetEnabled(cf_inc_all, TraceLog::RECORD_UNTIL_FULL); |
1679 EXPECT_TRUE(trace_log->IsEnabled()); | 1678 EXPECT_TRUE(trace_log->IsEnabled()); |
1680 const std::vector<std::string> empty; | 1679 const std::vector<std::string> empty; |
1681 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); | 1680 trace_log->SetEnabled(CategoryFilter(""), TraceLog::RECORD_UNTIL_FULL); |
1682 EXPECT_TRUE(trace_log->IsEnabled()); | 1681 EXPECT_TRUE(trace_log->IsEnabled()); |
1683 trace_log->SetDisabled(); | 1682 trace_log->SetDisabled(); |
1684 EXPECT_TRUE(trace_log->IsEnabled()); | 1683 EXPECT_FALSE(trace_log->IsEnabled()); |
1685 trace_log->SetDisabled(); | 1684 trace_log->SetDisabled(); |
1686 EXPECT_FALSE(trace_log->IsEnabled()); | 1685 EXPECT_FALSE(trace_log->IsEnabled()); |
1687 } | 1686 } |
1688 | 1687 |
1689 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { | 1688 TEST_F(TraceEventTestFixture, TraceCategoriesAfterNestedEnable) { |
1690 TraceLog* trace_log = TraceLog::GetInstance(); | 1689 TraceLog* trace_log = TraceLog::GetInstance(); |
1691 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL); | 1690 trace_log->SetEnabled(CategoryFilter("foo,bar"), TraceLog::RECORD_UNTIL_FULL); |
1692 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); | 1691 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("foo")); |
1693 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); | 1692 EXPECT_TRUE(*trace_log->GetCategoryGroupEnabled("bar")); |
1694 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); | 1693 EXPECT_FALSE(*trace_log->GetCategoryGroupEnabled("baz")); |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1970 } | 1969 } |
1971 | 1970 |
1972 class TraceEventCallbackTest : public TraceEventTestFixture { | 1971 class TraceEventCallbackTest : public TraceEventTestFixture { |
1973 public: | 1972 public: |
1974 virtual void SetUp() OVERRIDE { | 1973 virtual void SetUp() OVERRIDE { |
1975 TraceEventTestFixture::SetUp(); | 1974 TraceEventTestFixture::SetUp(); |
1976 ASSERT_EQ(NULL, s_instance); | 1975 ASSERT_EQ(NULL, s_instance); |
1977 s_instance = this; | 1976 s_instance = this; |
1978 } | 1977 } |
1979 virtual void TearDown() OVERRIDE { | 1978 virtual void TearDown() OVERRIDE { |
1980 while (TraceLog::GetInstance()->IsEnabled()) | 1979 TraceLog::GetInstance()->SetDisabled(); |
1981 TraceLog::GetInstance()->SetDisabled(); | |
1982 ASSERT_TRUE(!!s_instance); | 1980 ASSERT_TRUE(!!s_instance); |
1983 s_instance = NULL; | 1981 s_instance = NULL; |
1984 TraceEventTestFixture::TearDown(); | 1982 TraceEventTestFixture::TearDown(); |
1985 } | 1983 } |
1986 | 1984 |
1987 protected: | 1985 protected: |
1988 std::vector<std::string> collected_events_; | 1986 // For TraceEventCallbackAndRecordingX tests. |
1989 std::vector<unsigned char> collected_event_phases_; | 1987 void VerifyCallbackAndRecordedEvents(size_t expected_callback_count, |
| 1988 size_t expected_recorded_count) { |
| 1989 // Callback events. |
| 1990 EXPECT_EQ(expected_callback_count, collected_events_names_.size()); |
| 1991 for (size_t i = 0; i < collected_events_names_.size(); ++i) { |
| 1992 EXPECT_EQ("callback", collected_events_categories_[i]); |
| 1993 EXPECT_EQ("yes", collected_events_names_[i]); |
| 1994 } |
| 1995 |
| 1996 // Recorded events. |
| 1997 EXPECT_EQ(expected_recorded_count, trace_parsed_.GetSize()); |
| 1998 EXPECT_TRUE(FindTraceEntry(trace_parsed_, "recording")); |
| 1999 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "callback")); |
| 2000 EXPECT_TRUE(FindTraceEntry(trace_parsed_, "yes")); |
| 2001 EXPECT_FALSE(FindTraceEntry(trace_parsed_, "no")); |
| 2002 } |
| 2003 |
| 2004 void VerifyCollectedEvent(size_t i, |
| 2005 unsigned phase, |
| 2006 const std::string& category, |
| 2007 const std::string& name) { |
| 2008 EXPECT_EQ(phase, collected_events_phases_[i]); |
| 2009 EXPECT_EQ(category, collected_events_categories_[i]); |
| 2010 EXPECT_EQ(name, collected_events_names_[i]); |
| 2011 } |
| 2012 |
| 2013 std::vector<std::string> collected_events_categories_; |
| 2014 std::vector<std::string> collected_events_names_; |
| 2015 std::vector<unsigned char> collected_events_phases_; |
1990 std::vector<TimeTicks> collected_events_timestamps_; | 2016 std::vector<TimeTicks> collected_events_timestamps_; |
1991 | 2017 |
1992 static TraceEventCallbackTest* s_instance; | 2018 static TraceEventCallbackTest* s_instance; |
1993 static void Callback(TimeTicks timestamp, | 2019 static void Callback(TimeTicks timestamp, |
1994 char phase, | 2020 char phase, |
1995 const unsigned char* category_enabled, | 2021 const unsigned char* category_group_enabled, |
1996 const char* name, | 2022 const char* name, |
1997 unsigned long long id, | 2023 unsigned long long id, |
1998 int num_args, | 2024 int num_args, |
1999 const char* const arg_names[], | 2025 const char* const arg_names[], |
2000 const unsigned char arg_types[], | 2026 const unsigned char arg_types[], |
2001 const unsigned long long arg_values[], | 2027 const unsigned long long arg_values[], |
2002 unsigned char flags) { | 2028 unsigned char flags) { |
2003 s_instance->collected_events_.push_back(name); | 2029 s_instance->collected_events_phases_.push_back(phase); |
2004 s_instance->collected_event_phases_.push_back(phase); | 2030 s_instance->collected_events_categories_.push_back( |
| 2031 TraceLog::GetCategoryGroupName(category_group_enabled)); |
| 2032 s_instance->collected_events_names_.push_back(name); |
2005 s_instance->collected_events_timestamps_.push_back(timestamp); | 2033 s_instance->collected_events_timestamps_.push_back(timestamp); |
2006 } | 2034 } |
2007 }; | 2035 }; |
2008 | 2036 |
2009 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; | 2037 TraceEventCallbackTest* TraceEventCallbackTest::s_instance; |
2010 | 2038 |
2011 TEST_F(TraceEventCallbackTest, TraceEventCallback) { | 2039 TEST_F(TraceEventCallbackTest, TraceEventCallback) { |
2012 TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_THREAD); | 2040 TRACE_EVENT_INSTANT0("all", "before enable", TRACE_EVENT_SCOPE_THREAD); |
2013 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2041 TraceLog::GetInstance()->SetEventCallbackEnabled( |
2014 TraceLog::RECORD_UNTIL_FULL); | 2042 CategoryFilter("*"), Callback); |
2015 TRACE_EVENT_INSTANT0("all", "before callback set", TRACE_EVENT_SCOPE_THREAD); | |
2016 TraceLog::GetInstance()->SetEventCallback(Callback); | |
2017 TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL); | 2043 TRACE_EVENT_INSTANT0("all", "event1", TRACE_EVENT_SCOPE_GLOBAL); |
2018 TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL); | 2044 TRACE_EVENT_INSTANT0("all", "event2", TRACE_EVENT_SCOPE_GLOBAL); |
2019 { | 2045 { |
2020 TRACE_EVENT0("all", "duration"); | 2046 TRACE_EVENT0("all", "duration"); |
2021 TRACE_EVENT_INSTANT0("all", "event3", TRACE_EVENT_SCOPE_GLOBAL); | 2047 TRACE_EVENT_INSTANT0("all", "event3", TRACE_EVENT_SCOPE_GLOBAL); |
2022 } | 2048 } |
2023 TraceLog::GetInstance()->SetEventCallback(NULL); | 2049 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2024 TRACE_EVENT_INSTANT0("all", "after callback removed", | 2050 TRACE_EVENT_INSTANT0("all", "after callback removed", |
2025 TRACE_EVENT_SCOPE_GLOBAL); | 2051 TRACE_EVENT_SCOPE_GLOBAL); |
2026 ASSERT_EQ(5u, collected_events_.size()); | 2052 ASSERT_EQ(5u, collected_events_names_.size()); |
2027 EXPECT_EQ("event1", collected_events_[0]); | 2053 EXPECT_EQ("event1", collected_events_names_[0]); |
2028 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_event_phases_[0]); | 2054 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_events_phases_[0]); |
2029 EXPECT_EQ("event2", collected_events_[1]); | 2055 EXPECT_EQ("event2", collected_events_names_[1]); |
2030 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_event_phases_[1]); | 2056 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_events_phases_[1]); |
2031 EXPECT_EQ("duration", collected_events_[2]); | 2057 EXPECT_EQ("duration", collected_events_names_[2]); |
2032 EXPECT_EQ(TRACE_EVENT_PHASE_BEGIN, collected_event_phases_[2]); | 2058 EXPECT_EQ(TRACE_EVENT_PHASE_BEGIN, collected_events_phases_[2]); |
2033 EXPECT_EQ("event3", collected_events_[3]); | 2059 EXPECT_EQ("event3", collected_events_names_[3]); |
2034 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_event_phases_[3]); | 2060 EXPECT_EQ(TRACE_EVENT_PHASE_INSTANT, collected_events_phases_[3]); |
2035 EXPECT_EQ("duration", collected_events_[4]); | 2061 EXPECT_EQ("duration", collected_events_names_[4]); |
2036 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_event_phases_[4]); | 2062 EXPECT_EQ(TRACE_EVENT_PHASE_END, collected_events_phases_[4]); |
2037 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { | 2063 for (size_t i = 1; i < collected_events_timestamps_.size(); i++) { |
2038 EXPECT_LE(collected_events_timestamps_[i - 1], | 2064 EXPECT_LE(collected_events_timestamps_[i - 1], |
2039 collected_events_timestamps_[i]); | 2065 collected_events_timestamps_[i]); |
2040 } | 2066 } |
2041 } | 2067 } |
2042 | 2068 |
2043 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { | 2069 TEST_F(TraceEventCallbackTest, TraceEventCallbackWhileFull) { |
2044 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2070 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
2045 TraceLog::RECORD_UNTIL_FULL); | 2071 TraceLog::RECORD_UNTIL_FULL); |
2046 do { | 2072 do { |
2047 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); | 2073 TRACE_EVENT_INSTANT0("all", "badger badger", TRACE_EVENT_SCOPE_GLOBAL); |
2048 } while ((notifications_received_ & TraceLog::TRACE_BUFFER_FULL) == 0); | 2074 } while ((notifications_received_ & TraceLog::TRACE_BUFFER_FULL) == 0); |
2049 TraceLog::GetInstance()->SetEventCallback(Callback); | 2075 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), |
| 2076 Callback); |
2050 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); | 2077 TRACE_EVENT_INSTANT0("all", "a snake", TRACE_EVENT_SCOPE_GLOBAL); |
2051 TraceLog::GetInstance()->SetEventCallback(NULL); | 2078 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
2052 ASSERT_EQ(1u, collected_events_.size()); | 2079 ASSERT_EQ(1u, collected_events_names_.size()); |
2053 EXPECT_EQ("a snake", collected_events_[0]); | 2080 EXPECT_EQ("a snake", collected_events_names_[0]); |
| 2081 } |
| 2082 |
| 2083 // 1: Enable callback, enable recording, disable callback, disable recording. |
| 2084 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording1) { |
| 2085 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2086 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2087 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2088 Callback); |
| 2089 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2090 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2091 TraceLog::GetInstance()->SetEnabled( |
| 2092 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); |
| 2093 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2094 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2095 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2096 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2097 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2098 EndTraceAndFlush(); |
| 2099 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2100 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2101 |
| 2102 VerifyCallbackAndRecordedEvents(2, 2); |
| 2103 } |
| 2104 |
| 2105 // 2: Enable callback, enable recording, disable recording, disable callback. |
| 2106 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording2) { |
| 2107 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2108 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2109 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2110 Callback); |
| 2111 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2112 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2113 TraceLog::GetInstance()->SetEnabled( |
| 2114 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); |
| 2115 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2116 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2117 EndTraceAndFlush(); |
| 2118 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2119 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2120 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2121 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2122 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2123 |
| 2124 VerifyCallbackAndRecordedEvents(3, 1); |
| 2125 } |
| 2126 |
| 2127 // 3: Enable recording, enable callback, disable callback, disable recording. |
| 2128 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording3) { |
| 2129 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2130 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2131 TraceLog::GetInstance()->SetEnabled( |
| 2132 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); |
| 2133 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2134 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2135 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2136 Callback); |
| 2137 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2138 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2139 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2140 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2141 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2142 EndTraceAndFlush(); |
| 2143 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2144 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2145 |
| 2146 VerifyCallbackAndRecordedEvents(1, 3); |
| 2147 } |
| 2148 |
| 2149 // 4: Enable recording, enable callback, disable recording, disable callback. |
| 2150 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecording4) { |
| 2151 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2152 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2153 TraceLog::GetInstance()->SetEnabled( |
| 2154 CategoryFilter("recording"), TraceLog::RECORD_UNTIL_FULL); |
| 2155 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2156 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2157 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("callback"), |
| 2158 Callback); |
| 2159 TRACE_EVENT_INSTANT0("recording", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2160 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2161 EndTraceAndFlush(); |
| 2162 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2163 TRACE_EVENT_INSTANT0("callback", "yes", TRACE_EVENT_SCOPE_GLOBAL); |
| 2164 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2165 TRACE_EVENT_INSTANT0("recording", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2166 TRACE_EVENT_INSTANT0("callback", "no", TRACE_EVENT_SCOPE_GLOBAL); |
| 2167 |
| 2168 VerifyCallbackAndRecordedEvents(2, 2); |
| 2169 } |
| 2170 |
| 2171 TEST_F(TraceEventCallbackTest, TraceEventCallbackAndRecordingDuration) { |
| 2172 TraceLog::GetInstance()->SetEventCallbackEnabled(CategoryFilter("*"), |
| 2173 Callback); |
| 2174 { |
| 2175 TRACE_EVENT0("callback", "duration1"); |
| 2176 TraceLog::GetInstance()->SetEnabled( |
| 2177 CategoryFilter("*"), TraceLog::RECORD_UNTIL_FULL); |
| 2178 TRACE_EVENT0("callback", "duration2"); |
| 2179 EndTraceAndFlush(); |
| 2180 TRACE_EVENT0("callback", "duration3"); |
| 2181 } |
| 2182 TraceLog::GetInstance()->SetEventCallbackDisabled(); |
| 2183 |
| 2184 ASSERT_EQ(6u, collected_events_names_.size()); |
| 2185 VerifyCollectedEvent(0, TRACE_EVENT_PHASE_BEGIN, "callback", "duration1"); |
| 2186 VerifyCollectedEvent(1, TRACE_EVENT_PHASE_BEGIN, "callback", "duration2"); |
| 2187 VerifyCollectedEvent(2, TRACE_EVENT_PHASE_BEGIN, "callback", "duration3"); |
| 2188 VerifyCollectedEvent(3, TRACE_EVENT_PHASE_END, "callback", "duration3"); |
| 2189 VerifyCollectedEvent(4, TRACE_EVENT_PHASE_END, "callback", "duration2"); |
| 2190 VerifyCollectedEvent(5, TRACE_EVENT_PHASE_END, "callback", "duration1"); |
2054 } | 2191 } |
2055 | 2192 |
2056 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { | 2193 TEST_F(TraceEventTestFixture, TraceBufferRingBufferGetReturnChunk) { |
2057 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), | 2194 TraceLog::GetInstance()->SetEnabled(CategoryFilter("*"), |
2058 TraceLog::RECORD_CONTINUOUSLY); | 2195 TraceLog::RECORD_CONTINUOUSLY); |
2059 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); | 2196 TraceBuffer* buffer = TraceLog::GetInstance()->trace_buffer(); |
2060 size_t capacity = buffer->Capacity(); | 2197 size_t capacity = buffer->Capacity(); |
2061 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; | 2198 size_t num_chunks = capacity / TraceBufferChunk::kTraceBufferChunkSize; |
2062 uint32 last_seq = 0; | 2199 uint32 last_seq = 0; |
2063 size_t chunk_index; | 2200 size_t chunk_index; |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2440 double timestamp; | 2577 double timestamp; |
2441 EXPECT_TRUE(item->GetDouble("ts", ×tamp)); | 2578 EXPECT_TRUE(item->GetDouble("ts", ×tamp)); |
2442 EXPECT_GE(timestamp, last_timestamp); | 2579 EXPECT_GE(timestamp, last_timestamp); |
2443 EXPECT_LE(timestamp, end_time); | 2580 EXPECT_LE(timestamp, end_time); |
2444 last_timestamp = timestamp; | 2581 last_timestamp = timestamp; |
2445 } | 2582 } |
2446 } | 2583 } |
2447 | 2584 |
2448 } // namespace debug | 2585 } // namespace debug |
2449 } // namespace base | 2586 } // namespace base |
OLD | NEW |