| # Copyright (c) 2013 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 os, time |
| |
| from autotest_lib.client.bin import test |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.common_lib.cros import chrome |
| from autotest_lib.client.cros.power import power_suspend, power_utils |
| |
| |
| class dummy_IdleSuspend(test.test): |
| """ |
| This is not a complete test. It is a dummy test that must be run in parallel |
| with power_SuspendStress(method='idle') to control powerd idle values and |
| perform a login. |
| """ |
| version = 1 |
| |
| _IDLE_TIMINGS = { |
| 'disable_idle_suspend': 0, |
| 'ignore_external_policy': 1, |
| 'unplugged_dim_ms': 4000, |
| 'unplugged_off_ms': 6000, |
| 'unplugged_suspend_ms': 8000, |
| 'plugged_dim_ms': 4000, |
| 'plugged_off_ms': 6000, |
| 'plugged_suspend_ms': 8000, |
| } |
| |
| # Don't wait longer than this to start... if power_SuspendStress died before |
| # creating the HWCLOCK_FILE, we might otherwise wait forever |
| _TEST_START_TIMEOUT = 70 |
| |
| def run_once(self): |
| with chrome.Chrome(): |
| # Just idle while power_SuspendStress does all the work. Existence |
| # of the HWCLOCK_FILE tells us when it starts and when it's done. |
| for _ in xrange(self._TEST_START_TIMEOUT): |
| time.sleep(1) |
| if os.path.exists(power_suspend.Suspender.HWCLOCK_FILE): |
| break |
| else: |
| raise error.TestError("Parallel test didn't create Suspender.") |
| |
| # These must not be enabled too soon, or the system might suspend |
| # before a wakeup is scheduled. They must not be disabled too late |
| # either, or we might suspend again after the parallel test is done. |
| power_prefs = power_utils.PowerPrefChanger(self._IDLE_TIMINGS) |
| |
| while os.path.exists(power_suspend.Suspender.HWCLOCK_FILE): |
| time.sleep(1) |
| |
| power_prefs.finalize() |