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

Side by Side Diff: chrome/test/functional/devtools_native_memory_snapshot.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: Updated comments of new methods in class NativeMemorySnapshot 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
8 from urlparse import urlparse
9 7
8 import devtools_test_base
10 import pyauto_functional # Must be imported before pyauto 9 import pyauto_functional # Must be imported before pyauto
11 import pyauto 10 import pyauto
12 import pyauto_utils 11 import pyauto_utils
13 import remote_inspector_client
14 import webpagereplay
15 12
16 13
17 class DevToolsNativeMemorySnapshotTest(pyauto.PyUITest): 14 class DevToolsNativeMemorySnapshotTest(devtools_test_base.DevToolsTestBase):
18 """Test for tracking unknown share in the DevTools native memory snapshots. 15 """Test for tracking unknown share in the DevTools native memory snapshots.
19 16
20 This test navigates the browser to a test page, then takes native memory 17 This test navigates the browser to a test page, then takes native memory
21 snapshot over remote debugging protocol and prints render process private 18 snapshot over remote debugging protocol and prints render process private
22 memory size and unknown size extracted from the snapshot. It is used to 19 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 20 track size of the memory that is not counted by DevTools memory
24 instrumentation. 21 instrumentation.
25 22
26 The test uses Web Page Replay server as a proxy that allows to replay 23 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 24 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 25 real web sites. See webpagereplay.ReplayServer documentation to learn how
29 to record new page archives. 26 to record new page archives.
30 """ 27 """
31
32 # DevTools test pages live in src/data/devtools rather than
33 # src/chrome/test/data
34 DATA_PATH = os.path.abspath(
35 os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir,
36 'data', 'devtools_test_pages'))
37
38 def ExtraChromeFlags(self):
39 """Ensures Chrome is launched with custom flags.
40
41 Returns:
42 A list of extra flags to pass to Chrome when it is launched.
43 """
44 # Ensure Chrome enables remote debugging on port 9222. This is required to
45 # interact with Chrome's remote inspector.
46 extra_flags = ['--remote-debugging-port=9222'] + webpagereplay.CHROME_FLAGS
47 return (pyauto.PyUITest.ExtraChromeFlags(self) + extra_flags)
48
49 def setUp(self):
50 pyauto.PyUITest.setUp(self)
51 # Set up a remote inspector client associated with tab 0.
52 logging.info('Setting up connection to remote inspector...')
53 self._remote_inspector_client = (
54 remote_inspector_client.RemoteInspectorClient())
55 logging.info('Connection to remote inspector set up successfully.')
56
57 def tearDown(self):
58 logging.info('Terminating connection to remote inspector...')
59 self._remote_inspector_client.Stop()
60 logging.info('Connection to remote inspector terminated.')
61 super(DevToolsNativeMemorySnapshotTest, self).tearDown()
62
63 def testNytimes(self): 28 def testNytimes(self):
64 self._RunTestWithUrl('http://www.nytimes.com/') 29 self.RunTestWithUrl('http://www.nytimes.com/')
65 30
66 def testCnn(self): 31 def testCnn(self):
67 self._RunTestWithUrl('http://www.cnn.com/') 32 self.RunTestWithUrl('http://www.cnn.com/')
68 33
69 def testGoogle(self): 34 def testGoogle(self):
70 self._RunTestWithUrl('http://www.google.com/') 35 self.RunTestWithUrl('http://www.google.com/')
71 36
72 def _RunTestWithUrl(self, url): 37 def PrintTestResult(self, hostname, snapshot):
73 """Dumps native memory snapshot data for given page."""
74 replay_options = None
75 hostname = urlparse(url).hostname
76 archive_path = os.path.join(self.DATA_PATH, hostname + '.wpr')
77 with webpagereplay.ReplayServer(archive_path, replay_options):
78 self.NavigateToURL(url)
79 snapshot = self._remote_inspector_client.GetProcessMemoryDistribution()
80 total = snapshot.GetProcessPrivateMemorySize() 38 total = snapshot.GetProcessPrivateMemorySize()
81 unknown = snapshot.GetUnknownSize() 39 unknown = snapshot.GetUnknownSize()
82 logging.info('Got data for url: %s, total size = %d, unknown size = %d '% 40 logging.info('Got data for: %s, total size = %d, unknown size = %d' %
83 (url, total, unknown)) 41 (hostname, total, unknown))
84
85 graph_name = 'DevTools Native Snapshot - ' + hostname 42 graph_name = 'DevTools Native Snapshot - ' + hostname
86 pyauto_utils.PrintPerfResult(graph_name, 'Total', total, 'bytes') 43 pyauto_utils.PrintPerfResult(graph_name, 'Total', total, 'bytes')
87 pyauto_utils.PrintPerfResult(graph_name, 'Unknown', unknown, 'bytes') 44 pyauto_utils.PrintPerfResult(graph_name, 'Unknown', unknown, 'bytes')
88 45
89 46
90 if __name__ == '__main__': 47 if __name__ == '__main__':
91 pyauto_functional.Main() 48 pyauto_functional.Main()
OLDNEW
« no previous file with comments | « chrome/test/functional/devtools_instrumented_objects_check.py ('k') | chrome/test/functional/devtools_test_base.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698