summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-12 20:41:28 +0000
committeraberent@chromium.org <aberent@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-12-12 20:41:28 +0000
commit46a20dedad3c121fa8368641d01962f20b21f79f (patch)
tree5f7de17f9777ac2dbb77071076786c9158a29bc2
parent04b86011f60f5aebc332a291f48ec6eace320d32 (diff)
downloadchromium_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.py48
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])