76 lines
2.9 KiB
Python
76 lines
2.9 KiB
Python
# Copyright (c) 2010 The Chromium OS 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, os, time
|
|
from autotest_lib.client.bin import test, utils
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.cros import constants, cros_ui
|
|
from autotest_lib.client.cros.graphics import graphics_utils
|
|
|
|
class desktopui_GmailLatency(test.test):
|
|
version = 1
|
|
|
|
def run_once(self):
|
|
url = 'http://azlaba29.mtv.corp.google.com:9380/auto/google3/java/'\
|
|
'com/google/caribou/ui/pinto/modules/auto/tests/'\
|
|
'latencytest_auto.html'
|
|
js_expr = 'domAutomationController.send(!!window.G_testRunner'\
|
|
'&& window.G_testRunner.isFinished())'
|
|
|
|
# timeout is in ms, so allow a 5 minute timeout
|
|
# as of jan-11 it normally takes about 2 minutes on x86-mario
|
|
timeout = 5 * 60 * 1000
|
|
|
|
os.chdir(self.bindir)
|
|
|
|
# Select correct binary.
|
|
cpuType = utils.get_cpu_arch()
|
|
url_fetch_test = 'url_fetch_test'
|
|
if cpuType == "arm":
|
|
url_fetch_test += '.arm'
|
|
|
|
# Stop chrome from restarting and kill login manager.
|
|
try:
|
|
orig_pid = utils.system_output('pgrep %s' %
|
|
constants.SESSION_MANAGER)
|
|
open(constants.DISABLE_BROWSER_RESTART_MAGIC_FILE, 'w').close()
|
|
except IOError, e:
|
|
logging.debug(e)
|
|
raise error.TestError('Failed to disable browser restarting.')
|
|
|
|
# We could kill with signal 9 so that the session manager doesn't exit.
|
|
# But this seems to leave the screen blank while the test is running.
|
|
# So do it this way (which means clean_exit is always False)
|
|
utils.nuke_process_by_name(name=constants.BROWSER)
|
|
|
|
clean_exit = False
|
|
try:
|
|
time.sleep(1)
|
|
new_pid = utils.system_output('pgrep %s' %
|
|
constants.SESSION_MANAGER)
|
|
if orig_pid != new_pid:
|
|
# This is expected behaviour of the session manager.
|
|
pass
|
|
|
|
# Copy over chrome, chrome.pak, locales, chromeos needed for test.
|
|
utils.system('cp -r %s/* .' % '/opt/google/chrome')
|
|
|
|
# Setup parameters
|
|
params = ('--url="%s" --wait_js_expr="%s" --wait_js_timeout=%d' %
|
|
(url, js_expr, timeout))
|
|
utils.system('./%s %s' % (url_fetch_test, params))
|
|
|
|
except error.CmdError, e:
|
|
logging.debug(e)
|
|
raise error.TestFail('Gmail Latency test was unsuccessful in %s'
|
|
% os.getcwd())
|
|
|
|
finally:
|
|
# Allow chrome to be restarted again.
|
|
os.unlink(constants.DISABLE_BROWSER_RESTART_MAGIC_FILE)
|
|
|
|
# Reset the UI but only if we need to (avoid double reset).
|
|
if not clean_exit:
|
|
cros_ui.nuke()
|