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

Unified Diff: tools/telemetry/telemetry/core/backends/chrome/inspector_network_unittest.py

Issue 145923002: Added support to listen on Network.responseReceived and expose that through tab.py (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync to HEAD to get latest timeline changes. Created 6 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/backends/chrome/inspector_network_unittest.py
diff --git a/tools/telemetry/telemetry/core/backends/chrome/inspector_network_unittest.py b/tools/telemetry/telemetry/core/backends/chrome/inspector_network_unittest.py
new file mode 100644
index 0000000000000000000000000000000000000000..1ca8c799806ba100cc4b1e5d2212bb3424e66d6c
--- /dev/null
+++ b/tools/telemetry/telemetry/core/backends/chrome/inspector_network_unittest.py
@@ -0,0 +1,69 @@
+# Copyright 2014 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+from telemetry.core import util
+from telemetry.core.backends.chrome import inspector_network
+from telemetry.core.timeline import recording_options
+from telemetry.unittest import tab_test_case
+
+
+class InspectorNetworkTabTest(tab_test_case.TabTestCase):
+ class TestCase(object):
+ def __init__(self, monitoring = False, responses_count = 0,
+ subresources = None):
+ # Whether to monitor network for this case.
+ self.monitoring = monitoring
+ # Number of responses expected for this case.
+ self.responses_count = responses_count
+ # List of subresource links for this case.
+ self.subresources = subresources
+
+ def __init__(self, *args):
+ super(InspectorNetworkTabTest, self).__init__(*args)
+
+ def testHTTPResponseTimelineRecorder(self):
+ self._browser.SetHTTPServerDirectories(util.GetUnittestDataDir())
+ tests = {
+ 'blank.html': InspectorNetworkTabTest.TestCase(),
+ 'green_rect.html': InspectorNetworkTabTest.TestCase(
+ monitoring=True, responses_count=1),
+ 'image_decoding.html': InspectorNetworkTabTest.TestCase(
+ monitoring=True, responses_count=2, subresources=['image.png']),
+ }
+ for page, test in tests.iteritems():
+ opts = recording_options.TimelineRecordingOptions()
+ if test.monitoring:
+ opts.record_network = True
+ self._tab.StartTimelineRecording(opts)
+ self._tab.Navigate(self._browser.http_server.UrlOf(page))
+ self._tab.WaitForDocumentReadyStateToBeComplete()
+ self._tab.StopTimelineRecording()
+
+ self.assertTrue(self._tab.timeline_model)
+ events = self._tab.timeline_model.GetAllEventsOfName('HTTPResponse')
+ self.assertEqual(test.responses_count, len(events))
+ if not test.monitoring:
+ continue
+
+ # Verify required event fields
+ for event in events:
+ self.assertEqual('HTTPResponse', event.name)
+ resp = inspector_network.InspectorNetworkResponseData.FromTimelineEvent(
+ event)
+ self.assertLess(0.0, resp.timestamp)
+
+ self.assertTrue(resp.headers)
+ self.assertTrue(resp.headers['Content-Length'])
+ body, base64_encoded = resp.GetBody()
+
+ link = resp.url[resp.url.rfind('/') + 1 :]
+ self.assertTrue(link == page or link in test.subresources)
+ if link == page:
+ self.assertEqual(resp.GetHeader('Content-Type'), 'text/html')
+ self.assertTrue('<!DOCTYPE HTML>' in body)
+ self.assertEqual(False, base64_encoded)
+ else:
+ # We know this is the only subresource type in our setup.
+ self.assertEqual(resp.GetHeader('Content-Type'), 'image/png')
+ self.assertFalse('<!DOCTYPE HTML>' in body)
+ self.assertEqual(True, base64_encoded)

Powered by Google App Engine
This is Rietveld 408576698