diff options
author | aberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-12 20:41:28 +0000 |
---|---|---|
committer | aberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-12-12 20:41:28 +0000 |
commit | 46a20dedad3c121fa8368641d01962f20b21f79f (patch) | |
tree | 5f7de17f9777ac2dbb77071076786c9158a29bc2 | |
parent | 04b86011f60f5aebc332a291f48ec6eace320d32 (diff) | |
download | chromium_src-46a20dedad3c121fa8368641d01962f20b21f79f.zip chromium_src-46a20dedad3c121fa8368641d01962f20b21f79f.tar.gz chromium_src-46a20dedad3c121fa8368641d01962f20b21f79f.tar.bz2 |
[Android] Fix session_restore tests on occam svelte
The session restore tests are failing on occam svelte because it
doesn't have enough memory to load one of the background tabs. Fix
this by catching the timeout when trying to access the tab, and
ignoring the results for that tab.
BUG=
Review URL: https://codereview.chromium.org/103963004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@240397 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | tools/perf/metrics/startup_metric.py | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/tools/perf/metrics/startup_metric.py b/tools/perf/metrics/startup_metric.py index 07172d6..d0d400c 100644 --- a/tools/perf/metrics/startup_metric.py +++ b/tools/perf/metrics/startup_metric.py @@ -3,10 +3,13 @@ # found in the LICENSE file. import collections import json +import logging from metrics import Metric from metrics import histogram_util +from telemetry.core import util + class StartupMetric(Metric): "A metric for browser startup time." @@ -47,26 +50,35 @@ class StartupMetric(Metric): ['load_start_ms', 'load_duration_ms', 'is_foreground_tab']) num_open_tabs = len(tab.browser.tabs) for i in xrange(num_open_tabs): - t = tab.browser.tabs[i] - t.WaitForDocumentReadyStateToBeComplete() - result = t.EvaluateJavaScript('statsCollectionController.tabLoadTiming()') - result = json.loads(result) - - if 'load_start_ms' not in result or 'load_duration_ms' not in result: - raise Exception("Outdated Chrome version, " - "statsCollectionController.tabLoadTiming() not present") - return - if result['load_duration_ms'] is None: - tab_title = t.EvaluateJavaScript('document.title') - print "Page: ", tab_title, " didn't finish loading." + try: + t = tab.browser.tabs[i] + t.WaitForDocumentReadyStateToBeComplete() + + result = t.EvaluateJavaScript( + 'statsCollectionController.tabLoadTiming()') + result = json.loads(result) + + if 'load_start_ms' not in result or 'load_duration_ms' not in result: + raise Exception("Outdated Chrome version, " + "statsCollectionController.tabLoadTiming() not present") + return + if result['load_duration_ms'] is None: + tab_title = t.EvaluateJavaScript('document.title') + print "Page: ", tab_title, " didn't finish loading." + continue + + is_foreground_tab = t.EvaluateJavaScript('!document.hidden') + tab_load_times.append(TabLoadTime( + int(result['load_start_ms']), + int(result['load_duration_ms']), + is_foreground_tab)) + except util.TimeoutException: + # Low memory Android devices may not be able to load more than + # one tab at a time, so may timeout when the test attempts to + # access a background tab. Ignore these tabs. + logging.error("Tab number: %d timed out on JavaScript access" % i) continue - is_foreground_tab = t.EvaluateJavaScript('!document.hidden') - tab_load_times.append(TabLoadTime( - int(result['load_start_ms']), - int(result['load_duration_ms']), - is_foreground_tab)) - # Postprocess results load_complete_times = ( [t.load_start_ms + t.load_duration_ms for t in tab_load_times]) |