| import logging, time |
| from autotest_lib.client.common_lib import error |
| |
| |
| def run_linux_s3(test, params, env): |
| """ |
| Suspend a guest Linux OS to memory. |
| |
| @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) |
| |
| logging.info("Checking that VM supports S3") |
| session.cmd("grep -q mem /sys/power/state") |
| |
| logging.info("Waiting for a while for X to start") |
| time.sleep(10) |
| |
| src_tty = session.cmd_output("fgconsole").strip() |
| logging.info("Current virtual terminal is %s", src_tty) |
| if src_tty not in map(str, range(1, 10)): |
| raise error.TestFail("Got a strange current vt (%s)" % src_tty) |
| |
| dst_tty = "1" |
| if src_tty == "1": |
| dst_tty = "2" |
| |
| logging.info("Putting VM into S3") |
| command = "chvt %s && echo mem > /sys/power/state && chvt %s" % (dst_tty, |
| src_tty) |
| suspend_timeout = 120 + int(params.get("smp")) * 60 |
| session.cmd(command, timeout=suspend_timeout) |
| |
| logging.info("VM resumed after S3") |
| |
| session.close() |