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

Unified Diff: tools/telemetry/telemetry/page_test.py

Issue 11273081: Adding a test for measuring memory usage. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review (tonyg, nduca) Created 8 years, 1 month 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 | « tools/telemetry/telemetry/page_runner.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/telemetry/telemetry/page_test.py
diff --git a/tools/telemetry/telemetry/page_test.py b/tools/telemetry/telemetry/page_test.py
index 2d4d24fd97c3b1a19e3634133523b2da57fd9db8..a55ee9e16c8c5b26d5100b278098c464f53abd17 100644
--- a/tools/telemetry/telemetry/page_test.py
+++ b/tools/telemetry/telemetry/page_test.py
@@ -9,24 +9,31 @@ class Failure(Exception):
class PageTestResults(object):
def __init__(self):
self.page_failures = []
+ self.skipped_pages = []
def AddFailure(self, page, message, details):
self.page_failures.append({'page': page,
'message': message,
'details': details})
+ def AddSkippedPage(self, page, message, details):
+ self.skipped_pages.append({'page': page,
+ 'message': message,
+ 'details': details})
+
class PageTest(object):
"""A class styled on unittest.TestCase for creating page-specific tests."""
- def __init__(self, test_method_name):
+ def __init__(self, test_method_name, interaction_name_to_run=''):
self.options = None
try:
self._test_method = getattr(self, test_method_name)
except AttributeError:
raise ValueError, 'No such method %s.%s' % (
self.__class_, test_method_name) # pylint: disable=E1101
+ self._interaction_name_to_run = interaction_name_to_run
- def AddOptions(self, parser):
+ def AddCommandLineOptions(self, parser):
"""Override to expose command-line options for this benchmark.
The provided parser is an optparse.OptionParser instance and accepts all
@@ -38,13 +45,47 @@ class PageTest(object):
"""Override to add test-specific options to the BrowserOptions object"""
pass
+ def CustomizeBrowserOptionsForPage(self, page, options):
+ """Add options specific to the test and the given page."""
+ if not self.CanRunForPage(page):
+ return
+ interaction = self.GetInteraction(page)
+ if interaction:
+ interaction.CustomizeBrowserOptions(options)
+
def SetUpBrowser(self, browser):
"""Override to customize the browser right after it has launched."""
pass
+ def CanRunForPage(self, page): #pylint: disable=W0613
+ """Override to customize if the test can be ran for the given page."""
+ return True
+
+ def WillRunInteraction(self, page, tab):
+ """Override to do operations before running the interaction on the page."""
+ pass
+
+ def DidRunInteraction(self, page, tab):
+ """Override to do operations after running the interaction on the page."""
+ pass
+
def Run(self, options, page, tab, results):
self.options = options
+ interaction = self.GetInteraction(page)
+ if interaction:
+ tab.WaitForDocumentReadyStateToBeComplete()
+ self.WillRunInteraction(page, tab)
+ interaction.PerformInteraction(page, tab)
+ self.DidRunInteraction(page, tab)
try:
self._test_method(page, tab, results)
finally:
self.options = None
+
+ def GetInteraction(self, page):
+ if not self._interaction_name_to_run:
+ return None
+ interaction_data = getattr(page, self._interaction_name_to_run)
+ from telemetry import all_page_interactions
+ return all_page_interactions.FindClassWithName(
+ interaction_data['action'])(interaction_data)
« no previous file with comments | « tools/telemetry/telemetry/page_runner.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698