Home | History | Annotate | Download | only in power_CheckAfterSuspend
      1 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 import random, time
      6 
      7 from autotest_lib.client.bin import test
      8 from autotest_lib.client.cros import sys_power
      9 
     10 
     11 # Suspend tests need to allow time for the kernel to settle.
     12 MIN_ALLOWED_SUSPEND_S = 10
     13 
     14 
     15 class power_CheckAfterSuspend(test.test):
     16     """Checks capabilities by running tests after suspend/resume cycle.
     17 
     18     This can easily run multiple iterations with the built in Autotest
     19     iterations parameter to run_test():
     20 
     21       test_that -b <board> --iterations=3 ${MACHINE_IP} \
     22           f:client/site_tests/power_CheckAfterSuspend/control
     23     """
     24     version = 1
     25 
     26 
     27     def initialize(self, tests=[], min_suspend_s=2, enable_baseline=False):
     28         """
     29         @param tests: list of client tests to run before/after suspend.
     30         @param min_suspend_s: suspend durations (in seconds).
     31         @param enable_baseline: If True, run one pass of tests before suspend,
     32                                 otherwise only run tests after suspend.
     33         """
     34         self._tests = tests
     35         self._min_suspend_s = min_suspend_s
     36         self._enable_baseline = enable_baseline
     37 
     38 
     39     def run_once(self):
     40         """Run a series of tests supplied by the control file.
     41 
     42         Handles iterations by adding tags with the iteration#.
     43 
     44         Normally runs each test once after each suspend.  If enable_baseline
     45         is True then run an initial pass through the tests before any suspend.
     46 
     47         The test runs a series
     48         """
     49         if self.iteration is not None and self.iteration > 1:
     50             test_tag = '%03d' % self.iteration
     51         else:
     52             test_tag = ''
     53             if self._enable_baseline:
     54                 for t in self._tests:
     55                     self.job.run_test(t, tag=test_tag+'preSuspend', disable_sysinfo=True)
     56 
     57         time.sleep(random.randint(0, 3))
     58         sys_power.do_suspend(max(self._min_suspend_s, MIN_ALLOWED_SUSPEND_S))
     59 
     60         for t in self._tests:
     61             self.job.run_test(t, tag=test_tag+'postSuspend', disable_sysinfo=True)
     62