Home | History | Annotate | Download | only in desktopui_KillRestart
      1 # Copyright (c) 2009 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 logging, os, time
      6 from autotest_lib.client.bin import test, utils
      7 from autotest_lib.client.common_lib import error
      8 from autotest_lib.client.cros import cros_ui
      9 
     10 class desktopui_KillRestart(test.test):
     11     """Validate that the given binary can crash and get restarted."""
     12     version = 1
     13 
     14     def initialize(self):
     15         """Clear out respawn timestamp files."""
     16         cros_ui.clear_respawn_state()
     17 
     18     def run_once(self, binary = 'chrome'):
     19         # Ensure the binary is running.
     20         utils.poll_for_condition(
     21             lambda: os.system('pgrep %s >/dev/null' % binary) == 0,
     22             error.TestFail('%s is not running at start of test' % binary),
     23             timeout=60)
     24 
     25         # Try to kill all running instances of the binary.
     26         try:
     27             utils.system('pkill -KILL %s' % binary)
     28         except error.CmdError, e:
     29             logging.debug(e)
     30             raise error.TestFail('%s is not running before kill' % binary)
     31 
     32         # Check if the binary is running again (using os.system(), since it
     33         # doesn't raise an exception if the command fails).
     34         utils.poll_for_condition(
     35             lambda: os.system('pgrep %s >/dev/null' % binary) == 0,
     36             error.TestFail('%s is not running after kill' % binary),
     37             timeout=60)
     38 
     39 
     40     def cleanup(self):
     41         """Ensure that state from testing is cleared out."""
     42         cros_ui.clear_respawn_state()
     43