import logging, time, shutil from autotest_lib.client.common_lib import error from autotest_lib.client.virt import virt_utils def run_watchdog(test, params, env): """ Configure watchdog, crash the guest and check if watchdog_action occurs. @param test: kvm test object. @param params: Dictionary with test parameters. @param env: Dictionary with the test environment. """ vm = env.get_vm(params["main_vm"]) vm.verify_alive() timeout = int(params.get("login_timeout", 360)) session = vm.wait_for_login(timeout=timeout) relogin_timeout = int(params.get("relogin_timeout", 240)) watchdog_enable_cmd = "chkconfig watchdog on && service watchdog start" def watchdog_action_reset(): """ Trigger a crash dump through sysrq-trigger Ensure watchdog_action(reset) occur. """ session = vm.wait_for_login(timeout=timeout) logging.info("Triggering crash on vm") crash_cmd = "echo c > /proc/sysrq-trigger" session.sendline(crash_cmd) if not virt_utils.wait_for(lambda: not session.is_responsive(), 240, 0, 1): raise error.TestFail("Could not trigger crash") logging.info("Waiting for kernel watchdog_action to take place") session = vm.wait_for_login(timeout=relogin_timeout) logging.info("Enabling watchdog service...") session.cmd(watchdog_enable_cmd, timeout=320) watchdog_action_reset() # Close stablished session session.close()