| # Copyright 2018 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 |
| import time |
| |
| from autotest_lib.server import autotest |
| from autotest_lib.server import test |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.server.cros.faft.firmware_test import FirmwareTest |
| |
| |
| class power_BootUpTime(FirmwareTest): |
| """Checks the device boot up time""" |
| version = 1 |
| _WAIT_TIME_OPEN_LID = _WAIT_TIME_CLOSE_LID = 10 |
| |
| def initialize(self, host, cmdline_args, ec_wp=None): |
| """Autotest initialize method""" |
| self.host = host |
| super(power_BootUpTime, self).initialize(self.host, cmdline_args, |
| ec_wp=ec_wp) |
| self.switcher.setup_mode('normal') |
| |
| def run_once(self, bootup_time=8, boot_type='reboot'): |
| """Checks the boot up time |
| |
| @param bootup_time: Expected boot up time |
| @param boot_type: Reboot type, Ex: Reboot, lid_close_open etc |
| """ |
| autotest_client = autotest.Autotest(self.host) |
| |
| # Assume that running the test case after immediate flash and |
| # keeping the DUT at logout screen. |
| autotest_client.run_test('login_LoginSuccess', disable_sysinfo=True) |
| if boot_type == 'reboot': |
| self.host.reboot() |
| elif boot_type == 'lid_close_open': |
| logging.info("Closing lid") |
| self.host.servo.lid_close() |
| self.switcher.wait_for_client_offline( |
| timeout=self._WAIT_TIME_CLOSE_LID) |
| logging.info('Opening lid') |
| self.host.servo.lid_open() |
| if not self.faft_config.lid_wake_from_power_off: |
| logging.info('Pressing power button') |
| self.host.servo.power_normal_press() |
| self.switcher.wait_for_client(timeout=self._WAIT_TIME_OPEN_LID) |
| else: |
| raise error.TestError("Invalid boot_type, check the boot_type" |
| " in control file") |
| |
| autotest_client.run_test('platform_BootPerf', constraints=[ |
| 'seconds_power_on_to_login <= %d' % bootup_time]) |