Index: client/tests/kvm/tests/guest_s4.py |
diff --git a/client/tests/kvm/tests/guest_s4.py b/client/tests/kvm/tests/guest_s4.py |
index 2eb035be30cae9e2b2fa2ce41f218766a656664c..efd8e3bf9a8d4d23d77fe812e96aa5284cc75c1f 100644 |
--- a/client/tests/kvm/tests/guest_s4.py |
+++ b/client/tests/kvm/tests/guest_s4.py |
@@ -1,8 +1,9 @@ |
import logging, time |
from autotest_lib.client.common_lib import error |
-import kvm_test_utils, kvm_utils |
+import kvm_utils |
+@error.context_aware |
def run_guest_s4(test, params, env): |
""" |
Suspend guest to disk, supports both Linux & Windows OSes. |
@@ -11,16 +12,15 @@ def run_guest_s4(test, params, env): |
@param params: Dictionary with test parameters. |
@param env: Dictionary with the test environment. |
""" |
- vm = kvm_test_utils.get_living_vm(env, params.get("main_vm")) |
+ error.base_context("before S4") |
+ vm = env.get_vm(params["main_vm"]) |
+ vm.verify_alive() |
timeout = int(params.get("login_timeout", 360)) |
- session = kvm_test_utils.wait_for_login(vm, timeout=timeout) |
+ session = vm.wait_for_login(timeout=timeout) |
- logging.info("Checking whether guest OS supports suspend to disk (S4)...") |
- s, o = session.get_command_status_output(params.get("check_s4_support_cmd")) |
- if "not enough space" in o: |
- raise error.TestError("Check S4 support failed: %s" % o) |
- elif s != 0: |
- raise error.TestNAError("Guest OS does not support S4") |
+ error.context("checking whether guest OS supports S4", logging.info) |
+ session.cmd(params.get("check_s4_support_cmd")) |
+ error.context() |
logging.info("Waiting until all guest OS services are fully started...") |
time.sleep(float(params.get("services_up_timeout", 30))) |
@@ -32,20 +32,22 @@ def run_guest_s4(test, params, env): |
time.sleep(5) |
# Get the second session to start S4 |
- session2 = kvm_test_utils.wait_for_login(vm, timeout=timeout) |
+ session2 = vm.wait_for_login(timeout=timeout) |
# Make sure the background program is running as expected |
+ error.context("making sure background program is running") |
check_s4_cmd = params.get("check_s4_cmd") |
- if session2.get_command_status(check_s4_cmd) != 0: |
- raise error.TestError("Failed to launch '%s' as a background process" % |
- test_s4_cmd) |
- logging.info("Launched background command in guest: %s" % test_s4_cmd) |
+ session2.cmd(check_s4_cmd) |
+ logging.info("Launched background command in guest: %s", test_s4_cmd) |
+ error.context() |
+ error.base_context() |
# Suspend to disk |
logging.info("Starting suspend to disk now...") |
session2.sendline(params.get("set_s4_cmd")) |
# Make sure the VM goes down |
+ error.base_context("after S4") |
suspend_timeout = 240 + int(params.get("smp")) * 60 |
if not kvm_utils.wait_for(vm.is_dead, suspend_timeout, 2, 2): |
raise error.TestFail("VM refuses to go down. Suspend failed.") |
@@ -55,24 +57,20 @@ def run_guest_s4(test, params, env): |
# Start vm, and check whether the program is still running |
logging.info("Resuming suspended VM...") |
- if not vm.create(): |
- raise error.TestError("Failed to start VM after suspend to disk") |
+ vm.create() |
# Log into the resumed VM |
relogin_timeout = int(params.get("relogin_timeout", 240)) |
logging.info("Logging into resumed VM, timeout %s", relogin_timeout) |
- session2 = kvm_utils.wait_for(vm.remote_login, relogin_timeout, 0, 2) |
- if not session2: |
- raise error.TestFail("Could not log into VM after resuming from " |
- "suspend to disk") |
+ session2 = vm.wait_for_login(timeout=relogin_timeout) |
# Check whether the test command is still alive |
- logging.info("Checking if background command is still alive...") |
- if session2.get_command_status(check_s4_cmd) != 0: |
- raise error.TestFail("Background command '%s' stopped running. S4 " |
- "failed." % test_s4_cmd) |
+ error.context("making sure background program is still running", |
+ logging.info) |
+ session2.cmd(check_s4_cmd) |
+ error.context() |
logging.info("VM resumed successfuly after suspend to disk") |
- session2.get_command_output(params.get("kill_test_s4_cmd")) |
+ session2.cmd_output(params.get("kill_test_s4_cmd")) |
session.close() |
session2.close() |