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

Side by Side Diff: chrome/test/functional/devtools_test_base.py

Issue 11054014: Add a test for checking objects reported by DevTools memory instrumentation not allocated by tcmall… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import logging 6 import logging
7 import os 7 import os
8 import tempfile
8 from urlparse import urlparse 9 from urlparse import urlparse
9 10
10 import pyauto_functional # Must be imported before pyauto 11 import pyauto_functional # Must be imported before pyauto
11 import pyauto 12 import pyauto
12 import pyauto_utils 13 import pyauto_utils
13 import remote_inspector_client 14 import remote_inspector_client
14 import webpagereplay 15 import webpagereplay
15 16
16 17
17 class DevToolsNativeMemorySnapshotTest(pyauto.PyUITest): 18 class DevToolsTestBase(pyauto.PyUITest):
18 """Test for tracking unknown share in the DevTools native memory snapshots. 19 """Base class for DevTools tests that use replay server
dennis_jeffrey 2012/10/04 01:16:33 add period at end of sentence.
yurys 2012/10/04 15:07:47 Done.
19 20
20 This test navigates the browser to a test page, then takes native memory 21 This class allows to navigate the browser to a test page and take native
21 snapshot over remote debugging protocol and prints render process private 22 memory snapshot over remote debugging protocol.
22 memory size and unknown size extracted from the snapshot. It is used to
23 track size of the memory that is not counted by DevTools memory
24 instrumentation.
25 23
26 The test uses Web Page Replay server as a proxy that allows to replay 24 The test uses Web Page Replay server as a proxy that allows to replay
27 the same state of the test pages and avoid heavy network traffic on the 25 the same state of the test pages and avoid heavy network traffic on the
28 real web sites. See webpagereplay.ReplayServer documentation to learn how 26 real web sites. See webpagereplay.ReplayServer documentation to learn how
29 to record new page archives. 27 to record new page archives.
30 """ 28 """
31 29
32 # DevTools test pages live in src/data/devtools rather than 30 # DevTools test pages live in src/data/devtools rather than
33 # src/chrome/test/data 31 # src/chrome/test/data
34 DATA_PATH = os.path.abspath( 32 DATA_PATH = os.path.abspath(
(...skipping 16 matching lines...) Expand all
51 # Set up a remote inspector client associated with tab 0. 49 # Set up a remote inspector client associated with tab 0.
52 logging.info('Setting up connection to remote inspector...') 50 logging.info('Setting up connection to remote inspector...')
53 self._remote_inspector_client = ( 51 self._remote_inspector_client = (
54 remote_inspector_client.RemoteInspectorClient()) 52 remote_inspector_client.RemoteInspectorClient())
55 logging.info('Connection to remote inspector set up successfully.') 53 logging.info('Connection to remote inspector set up successfully.')
56 54
57 def tearDown(self): 55 def tearDown(self):
58 logging.info('Terminating connection to remote inspector...') 56 logging.info('Terminating connection to remote inspector...')
59 self._remote_inspector_client.Stop() 57 self._remote_inspector_client.Stop()
60 logging.info('Connection to remote inspector terminated.') 58 logging.info('Connection to remote inspector terminated.')
61 super(DevToolsNativeMemorySnapshotTest, self).tearDown() 59 super(DevToolsTestBase, self).tearDown()
62 60
63 def testNytimes(self): 61 def RunTestWithUrl(self, url):
64 self._RunTestWithUrl('http://www.nytimes.com/') 62 """Navigates browser to given URL and takes native memory snapshot."""
65
66 def testCnn(self):
67 self._RunTestWithUrl('http://www.cnn.com/')
68
69 def testGoogle(self):
70 self._RunTestWithUrl('http://www.google.com/')
71
72 def _RunTestWithUrl(self, url):
73 """Dumps native memory snapshot data for given page."""
74 replay_options = None 63 replay_options = None
75 hostname = urlparse(url).hostname 64 hostname = urlparse(url).hostname
76 archive_path = os.path.join(self.DATA_PATH, hostname + '.wpr') 65 archive_path = os.path.join(self.DATA_PATH, hostname + '.wpr')
77 with webpagereplay.ReplayServer(archive_path, replay_options): 66 with webpagereplay.ReplayServer(archive_path, replay_options):
78 self.NavigateToURL(url) 67 self.NavigateToURL(url)
79 snapshot = self._remote_inspector_client.GetProcessMemoryDistribution() 68 snapshot = self._remote_inspector_client.GetProcessMemoryDistribution()
80 total = snapshot.GetProcessPrivateMemorySize() 69 logging.info('Got snapshot for url: %s' % url)
81 unknown = snapshot.GetUnknownSize() 70 self.PrintTestResult(hostname, snapshot)
82 logging.info('Got data for url: %s, total size = %d, unknown size = %d '%
83 (url, total, unknown))
84 71
85 graph_name = 'DevTools Native Snapshot - ' + hostname 72 def PrintTestResult(self, hostname, snapshot):
86 pyauto_utils.PrintPerfResult(graph_name, 'Total', total, 'bytes') 73 pass
dennis_jeffrey 2012/10/04 01:16:33 maybe add a comment that says this is expected to
yurys 2012/10/04 15:07:47 Done.
87 pyauto_utils.PrintPerfResult(graph_name, 'Unknown', unknown, 'bytes')
88 74
89
90 if __name__ == '__main__':
91 pyauto_functional.Main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698