OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/test/chromedriver/performance_logger.h" | 5 #include "chrome/test/chromedriver/performance_logger.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/format_macros.h" | 8 #include "base/format_macros.h" |
9 #include "base/json/json_reader.h" | 9 #include "base/json/json_reader.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
11 #include "base/time/time.h" | 11 #include "base/time/time.h" |
12 #include "base/values.h" | 12 #include "base/values.h" |
13 #include "chrome/test/chromedriver/chrome/log.h" | 13 #include "chrome/test/chromedriver/chrome/log.h" |
14 #include "chrome/test/chromedriver/chrome/status.h" | 14 #include "chrome/test/chromedriver/chrome/status.h" |
15 #include "chrome/test/chromedriver/chrome/stub_devtools_client.h" | 15 #include "chrome/test/chromedriver/chrome/stub_devtools_client.h" |
| 16 #include "chrome/test/chromedriver/session.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
17 | 18 |
18 namespace { | 19 namespace { |
19 | 20 |
20 class FakeDevToolsClient : public StubDevToolsClient { | 21 class FakeDevToolsClient : public StubDevToolsClient { |
21 public: | 22 public: |
22 explicit FakeDevToolsClient(const std::string& id) | 23 explicit FakeDevToolsClient(const std::string& id) |
23 : id_(id), listener_(NULL) {} | 24 : id_(id), listener_(NULL) {} |
24 virtual ~FakeDevToolsClient() {} | 25 virtual ~FakeDevToolsClient() {} |
25 | 26 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 EXPECT_EQ("Page.enable", client.PopSentCommand()); | 143 EXPECT_EQ("Page.enable", client.PopSentCommand()); |
143 EXPECT_EQ("Timeline.start", client.PopSentCommand()); | 144 EXPECT_EQ("Timeline.start", client.PopSentCommand()); |
144 EXPECT_TRUE(client.PopSentCommand().empty()); | 145 EXPECT_TRUE(client.PopSentCommand().empty()); |
145 } | 146 } |
146 | 147 |
147 } // namespace | 148 } // namespace |
148 | 149 |
149 TEST(PerformanceLogger, OneWebView) { | 150 TEST(PerformanceLogger, OneWebView) { |
150 FakeDevToolsClient client("webview-1"); | 151 FakeDevToolsClient client("webview-1"); |
151 FakeLog log; | 152 FakeLog log; |
152 PerformanceLogger logger(&log); | 153 Session session("test"); |
| 154 PerformanceLogger logger(&log, &session); |
153 | 155 |
154 client.AddListener(&logger); | 156 client.AddListener(&logger); |
155 logger.OnConnected(&client); | 157 logger.OnConnected(&client); |
156 ExpectEnableDomains(client); | 158 ExpectEnableDomains(client); |
157 ASSERT_EQ(kOk, client.TriggerEvent("Network.gaga").code()); | 159 ASSERT_EQ(kOk, client.TriggerEvent("Network.gaga").code()); |
158 ASSERT_EQ(kOk, client.TriggerEvent("Page.ulala").code()); | 160 ASSERT_EQ(kOk, client.TriggerEvent("Page.ulala").code()); |
159 // Ignore -- different domain. | 161 // Ignore -- different domain. |
160 ASSERT_EQ(kOk, client.TriggerEvent("Console.bad").code()); | 162 ASSERT_EQ(kOk, client.TriggerEvent("Console.bad").code()); |
161 | 163 |
162 ASSERT_EQ(2u, log.GetEntries().size()); | 164 ASSERT_EQ(2u, log.GetEntries().size()); |
163 ValidateLogEntry(log.GetEntries()[0], "webview-1", "Network.gaga"); | 165 ValidateLogEntry(log.GetEntries()[0], "webview-1", "Network.gaga"); |
164 ValidateLogEntry(log.GetEntries()[1], "webview-1", "Page.ulala"); | 166 ValidateLogEntry(log.GetEntries()[1], "webview-1", "Page.ulala"); |
165 } | 167 } |
166 | 168 |
167 TEST(PerformanceLogger, TwoWebViews) { | 169 TEST(PerformanceLogger, TwoWebViews) { |
168 FakeDevToolsClient client1("webview-1"); | 170 FakeDevToolsClient client1("webview-1"); |
169 FakeDevToolsClient client2("webview-2"); | 171 FakeDevToolsClient client2("webview-2"); |
170 FakeLog log; | 172 FakeLog log; |
171 PerformanceLogger logger(&log); | 173 Session session("test"); |
| 174 PerformanceLogger logger(&log, &session); |
172 | 175 |
173 client1.AddListener(&logger); | 176 client1.AddListener(&logger); |
174 client2.AddListener(&logger); | 177 client2.AddListener(&logger); |
175 logger.OnConnected(&client1); | 178 logger.OnConnected(&client1); |
176 logger.OnConnected(&client2); | 179 logger.OnConnected(&client2); |
177 ExpectEnableDomains(client1); | 180 ExpectEnableDomains(client1); |
178 ExpectEnableDomains(client2); | 181 ExpectEnableDomains(client2); |
179 // OnConnected sends the enable command only to that client, not others. | 182 // OnConnected sends the enable command only to that client, not others. |
180 client1.ConnectIfNecessary(); | 183 client1.ConnectIfNecessary(); |
181 ExpectEnableDomains(client1); | 184 ExpectEnableDomains(client1); |
182 EXPECT_TRUE(client2.PopSentCommand().empty()); | 185 EXPECT_TRUE(client2.PopSentCommand().empty()); |
183 | 186 |
184 ASSERT_EQ(kOk, client1.TriggerEvent("Page.gaga1").code()); | 187 ASSERT_EQ(kOk, client1.TriggerEvent("Page.gaga1").code()); |
185 ASSERT_EQ(kOk, client2.TriggerEvent("Timeline.gaga2").code()); | 188 ASSERT_EQ(kOk, client2.TriggerEvent("Timeline.gaga2").code()); |
186 | 189 |
187 ASSERT_EQ(2u, log.GetEntries().size()); | 190 ASSERT_EQ(2u, log.GetEntries().size()); |
188 ValidateLogEntry(log.GetEntries()[0], "webview-1", "Page.gaga1"); | 191 ValidateLogEntry(log.GetEntries()[0], "webview-1", "Page.gaga1"); |
189 ValidateLogEntry(log.GetEntries()[1], "webview-2", "Timeline.gaga2"); | 192 ValidateLogEntry(log.GetEntries()[1], "webview-2", "Timeline.gaga2"); |
190 } | 193 } |
191 | 194 |
192 TEST(PerformanceLogger, PerfLoggingPrefs) { | 195 TEST(PerformanceLogger, PerfLoggingPrefs) { |
193 FakeDevToolsClient client("webview-1"); | 196 FakeDevToolsClient client("webview-1"); |
194 FakeLog log; | 197 FakeLog log; |
| 198 Session session("test"); |
195 PerfLoggingPrefs prefs; | 199 PerfLoggingPrefs prefs; |
196 ASSERT_EQ(PerfLoggingPrefs::InspectorDomainStatus::kDefaultEnabled, | 200 ASSERT_EQ(PerfLoggingPrefs::InspectorDomainStatus::kDefaultEnabled, |
197 prefs.network); | 201 prefs.network); |
198 prefs.network = PerfLoggingPrefs::InspectorDomainStatus::kExplicitlyDisabled; | 202 prefs.network = PerfLoggingPrefs::InspectorDomainStatus::kExplicitlyDisabled; |
199 // Trace categories should be ignored until tracing support is implemented. | |
200 prefs.trace_categories = "benchmark,webkit.console"; | 203 prefs.trace_categories = "benchmark,webkit.console"; |
201 PerformanceLogger logger(&log, prefs); | 204 PerformanceLogger logger(&log, &session, prefs); |
202 | 205 |
203 client.AddListener(&logger); | 206 client.AddListener(&logger); |
204 logger.OnConnected(&client); | 207 logger.OnConnected(&client); |
205 EXPECT_EQ("Page.enable", client.PopSentCommand()); | 208 EXPECT_EQ("Page.enable", client.PopSentCommand()); |
206 // Trace categories ignored, so Timeline shouldn't be implicitly disabled. | 209 // No Timeline.enable command since specifying trace categories implicitly |
207 EXPECT_EQ("Timeline.start", client.PopSentCommand()); | 210 // disables Timeline feed. |
208 EXPECT_TRUE(client.PopSentCommand().empty()); | 211 EXPECT_TRUE(client.PopSentCommand().empty()); |
209 } | 212 } |
OLD | NEW |