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

Unified Diff: tools/chrome_remote_control/chrome_remote_control/page_runner.py

Issue 11361165: [chrome_remote_control] Rename chrome_remote_control to telemetry. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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
Index: tools/chrome_remote_control/chrome_remote_control/page_runner.py
diff --git a/tools/chrome_remote_control/chrome_remote_control/page_runner.py b/tools/chrome_remote_control/chrome_remote_control/page_runner.py
deleted file mode 100644
index 1295311e07cdd4abf5803491de5ec19237af462f..0000000000000000000000000000000000000000
--- a/tools/chrome_remote_control/chrome_remote_control/page_runner.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# 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 time
-import traceback
-import urlparse
-import random
-import csv
-
-from chrome_remote_control import page_test
-from chrome_remote_control import util
-from chrome_remote_control import wpr_modes
-
-class PageState(object):
- def __init__(self):
- self.did_login = False
-
-class PageRunner(object):
- """Runs a given test against a given test."""
- def __init__(self, page_set):
- self.page_set = page_set
-
- def __enter__(self):
- return self
-
- def __exit__(self, *args):
- self.Close()
-
- def _ReorderPageSet(self, test_shuffle_order_file):
- page_set_dict = {}
- for page in self.page_set:
- page_set_dict[page.url] = page
-
- self.page_set.pages = []
- with open(test_shuffle_order_file, 'rb') as csv_file:
- csv_reader = csv.reader(csv_file)
- csv_header = csv_reader.next()
-
- if 'url' not in csv_header:
- raise Exception('Unusable test_shuffle_order_file.')
-
- url_index = csv_header.index('url')
-
- for csv_row in csv_reader:
- if csv_row[url_index] in page_set_dict:
- self.page_set.pages.append(page_set_dict[csv_row[url_index]])
- else:
- raise Exception('Unusable test_shuffle_order_file.')
-
- def Run(self, options, possible_browser, test, results):
- archive_path = os.path.abspath(os.path.join(self.page_set.base_dir,
- self.page_set.archive_path))
- if options.wpr_mode == wpr_modes.WPR_OFF:
- if os.path.isfile(archive_path):
- possible_browser.options.wpr_mode = wpr_modes.WPR_REPLAY
- else:
- possible_browser.options.wpr_mode = wpr_modes.WPR_OFF
- if not self.page_set.ContainsOnlyFileURLs():
- logging.warning("""
-The page set archive %s does not exist, benchmarking against live sites!
-Results won't be repeatable or comparable.
-
-To fix this, either add svn-internal to your .gclient using
-http://goto/read-src-internal, or create a new archive using --record.
-""", os.path.relpath(archive_path))
-
- credentials_path = None
- if self.page_set.credentials_path:
- credentials_path = os.path.join(self.page_set.base_dir,
- self.page_set.credentials_path)
- if not os.path.exists(credentials_path):
- credentials_path = None
-
- with possible_browser.Create() as b:
- b.credentials.credentials_path = credentials_path
- test.SetUpBrowser(b)
-
- b.credentials.WarnIfMissingCredentials(self.page_set)
-
- if not options.test_shuffle and options.test_shuffle_order_file is not\
- None:
- raise Exception('--test-shuffle-order-file requires --test-shuffle.')
-
- # Set up a random generator for shuffling the page running order.
- test_random = random.Random()
-
- b.SetReplayArchivePath(archive_path)
- with b.ConnectToNthTab(0) as tab:
- if options.test_shuffle_order_file is None:
- for _ in range(int(options.pageset_repeat)):
- if options.test_shuffle:
- test_random.shuffle(self.page_set)
- for page in self.page_set:
- for _ in range(int(options.page_repeat)):
- self._RunPage(options, page, tab, test, results)
- else:
- self._ReorderPageSet(options.test_shuffle_order_file)
- for page in self.page_set:
- self._RunPage(options, page, tab, test, results)
-
- def _RunPage(self, options, page, tab, test, results):
- logging.info('Running %s' % page.url)
-
- page_state = PageState()
- try:
- did_prepare = self.PreparePage(page, tab, page_state, results)
- except Exception, ex:
- logging.error('Unexpected failure while running %s: %s',
- page.url, traceback.format_exc())
- self.CleanUpPage(page, tab, page_state)
- raise
-
- if not did_prepare:
- self.CleanUpPage(page, tab, page_state)
- return
-
- try:
- test.Run(options, page, tab, results)
- except page_test.Failure, ex:
- logging.info('%s: %s', ex, page.url)
- results.AddFailure(page, ex, traceback.format_exc())
- return
- except util.TimeoutException, ex:
- logging.warning('Timed out while running %s', page.url)
- results.AddFailure(page, ex, traceback.format_exc())
- return
- except Exception, ex:
- logging.error('Unexpected failure while running %s: %s',
- page.url, traceback.format_exc())
- raise
- finally:
- self.CleanUpPage(page, tab, page_state)
-
- def Close(self):
- pass
-
- @staticmethod
- def WaitForPageToLoad(expression, tab):
- def IsPageLoaded():
- return tab.runtime.Evaluate(expression)
-
- # Wait until the form is submitted and the page completes loading.
- util.WaitFor(lambda: IsPageLoaded(), 60) # pylint: disable=W0108
-
- def PreparePage(self, page, tab, page_state, results):
- parsed_url = urlparse.urlparse(page.url)
- if parsed_url[0] == 'file':
- path = os.path.join(self.page_set.base_dir,
- parsed_url.netloc,
- parsed_url.path) # pylint: disable=E1101
- dirname, filename = os.path.split(path)
- tab.browser.SetHTTPServerDirectory(dirname)
- target_side_url = tab.browser.http_server.UrlOf(filename)
- else:
- target_side_url = page.url
-
- if page.credentials:
- page_state.did_login = tab.browser.credentials.LoginNeeded(
- tab, page.credentials)
- if not page_state.did_login:
- msg = 'Could not login to %s on %s' % (page.credentials,
- target_side_url)
- logging.info(msg)
- results.AddFailure(page, msg, "")
- return False
-
- tab.page.Navigate(target_side_url)
-
- # Wait for unpredictable redirects.
- if page.wait_time_after_navigate:
- time.sleep(page.wait_time_after_navigate)
- if page.wait_for_javascript_expression is not None:
- self.WaitForPageToLoad(page.wait_for_javascript_expression, tab)
-
- tab.WaitForDocumentReadyStateToBeInteractiveOrBetter()
- return True
-
- def CleanUpPage(self, page, tab, page_state): # pylint: disable=R0201
- if page.credentials and page_state.did_login:
- tab.browser.credentials.LoginNoLongerNeeded(tab, page.credentials)
- tab.runtime.Evaluate("""window.chrome && chrome.benchmarking &&
- chrome.benchmarking.closeConnections()""")

Powered by Google App Engine
This is Rietveld 408576698