# 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 logging from autotest_lib.client.bin import test, utils from autotest_lib.client.common_lib import error from autotest_lib.client.cros.power import sys_power class power_MemorySuspend(test.test): """Suspend the system via memory_suspend_test.""" version = 1 def initialize(self): utils.system('stop ui', ignore_status=True) def run_once(self, num_suspends=1, max_spurious_wakeup_ratio=0.01): spurious_wakeup_count = 0 max_spurious_wakeup = num_suspends * max_spurious_wakeup_ratio for _ in range(num_suspends): try: sys_power.memory_suspend(10) except sys_power.SpuriousWakeupError: spurious_wakeup_count += 1 if spurious_wakeup_count > max_spurious_wakeup: raise error.TestFail('Too many SpuriousWakeupError.') if spurious_wakeup_count > 0: logging.info("Have %d SpuriousWakeupError", spurious_wakeup_count) keyval = { 'numSpuriousWakeupError' : spurious_wakeup_count } self.write_perf_keyval(keyval) def cleanup(self): utils.system('start ui')