| 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 |