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

Unified Diff: chrome/test/functional/devtools_instrumented_objects_check.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/test/functional/devtools_native_memory_snapshot.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/functional/devtools_instrumented_objects_check.py
diff --git a/chrome/test/functional/devtools_instrumented_objects_check.py b/chrome/test/functional/devtools_instrumented_objects_check.py
new file mode 100755
index 0000000000000000000000000000000000000000..20d8da5d7c461343f5b02c4cc27c495c3113d676
--- /dev/null
+++ b/chrome/test/functional/devtools_instrumented_objects_check.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python
+# Copyright (c) 2012 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.
+
+import logging
+import os
+import tempfile
+
+import devtools_test_base
+import pyauto_functional # Must be imported before pyauto
+import pyauto
+import pyauto_utils
+
+
+class DevToolsInstrumentedObjectsCheck(devtools_test_base.DevToolsTestBase):
+ """Test for checking that all instrumented objects are allocated by tcmalloc.
+
+ This test navigates the browser to a test page, then takes native memory
+ snapshot over remote debugging protocol and prints the number of objects
+ that were counted by the DevTools memory instrumentation and how many of
+ them have not been allocated by tcmalloc. Ideally the latter number should
+ be 0.
+
+ The test starts browser with HEAPPROFILE environment variable to enable
+ tcmalloc heap profiler which is required by the memory instrumentation to
+ check which of the instrumented objects have actually been allocated on the
+ heap.
+
+ The test uses Web Page Replay server as a proxy that allows to replay
+ the same state of the test pages and avoid heavy network traffic on the
+ real web sites. See webpagereplay.ReplayServer documentation to learn how
+ to record new page archives.
+ """
+
+ def setUp(self):
+ # Make sure Chrome is started with tcmalloc heap profiler enabled. Dump
+ # profiles into a temporary directory that will be destroyed when the test
+ # completes.
+ self._tempdir = tempfile.mkdtemp(prefix='devtools-test')
+ os.environ['HEAPPROFILE'] = os.path.join(self._tempdir, 'heap-profile.')
+ super(DevToolsInstrumentedObjectsCheck, self).setUp()
+
+ def tearDown(self):
+ super(DevToolsInstrumentedObjectsCheck, self).tearDown()
+ del os.environ['HEAPPROFILE']
+ if self._tempdir:
+ pyauto_utils.RemovePath(self._tempdir)
+
+ def testNytimes(self):
+ self.RunTestWithUrl('http://www.nytimes.com/')
+
+ def testCnn(self):
+ self.RunTestWithUrl('http://www.cnn.com/')
+
+ def testGoogle(self):
+ self.RunTestWithUrl('http://www.google.com/')
+
+ def PrintTestResult(self, hostname, snapshot):
+ total = snapshot.GetProcessPrivateMemorySize()
+ counted_objects = snapshot.GetInstrumentedObjectsCount()
+ counted_unknown_objects = snapshot.GetNumberOfInstrumentedObjectsNotInHeap()
+ if not counted_objects or not counted_unknown_objects:
+ logging.info('No information about number of instrumented objects.')
+ return
+ logging.info('Got data for: %s, objects count = %d (unknown = %d) ' %
+ (hostname, counted_objects, counted_unknown_objects))
+ graph_name = 'DevTools Instrumented Objects - ' + hostname
+ pyauto_utils.PrintPerfResult(graph_name, 'Reported instrumented objects',
+ counted_objects, 'objects')
+ pyauto_utils.PrintPerfResult(graph_name, 'Not allocated by tcmalloc',
+ counted_unknown_objects, 'objects')
+
+
+if __name__ == '__main__':
+ pyauto_functional.Main()
« no previous file with comments | « no previous file | chrome/test/functional/devtools_native_memory_snapshot.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698