blob: 0988ef42bacd92ad80041c21ae26fe80bcd5509a [file] [log] [blame]
# 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, re, time
from autotest_lib.client.bin import utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.cros import cros_ui_test
class desktopui_ChromeFirstRender(cros_ui_test.UITest):
version = 1
_LOGIN_SUCCESS_FILE = '/tmp/uptime-login-success'
_FIRST_RENDER_FILE = '/tmp/uptime-chrome-first-render'
def __parse_uptime(self, target_file):
data = file(target_file).read()
time = re.split(r' +', data.strip())[0]
return float(time)
def __check_logfile(self, target_file):
# The data log file is written with one write(), this should be safe.
return lambda: (os.access(target_file, os.F_OK)
and os.path.getsize(target_file))
def initialize(self, creds='$default'):
super(desktopui_ChromeFirstRender, self).initialize(creds)
def run_once(self):
try:
utils.poll_for_condition(
self.__check_logfile(self._LOGIN_SUCCESS_FILE),
utils.TimeoutError('Timeout waiting for initial login'))
utils.poll_for_condition(
self.__check_logfile(self._FIRST_RENDER_FILE),
utils.TimeoutError('Timeout waiting for initial render'),
timeout=60)
start_time = self.__parse_uptime(self._LOGIN_SUCCESS_FILE)
end_time = self.__parse_uptime(self._FIRST_RENDER_FILE)
self.write_perf_keyval(
{ 'seconds_chrome_first_tab': end_time - start_time })
except IOError, e:
logging.debug(e)
raise error.TestFail('Login information missing')