In order to test a special guest configuration (special blkdebug
config files to inject errors on the block subsystem), added a
migration_living_guest param. If the param is set to "no", no
attempt to have a session on the guest will be made, since the
guest block subsystem will stop when the first error is injected.

Signed-off-by: Lucas Meneghel Rodrigues <l...@redhat.com>
---
 client/tests/kvm/tests/migration.py |   78 ++++++++++++++++++++---------------
 1 files changed, 45 insertions(+), 33 deletions(-)

diff --git a/client/tests/kvm/tests/migration.py 
b/client/tests/kvm/tests/migration.py
index 7e877fe..1e02784 100644
--- a/client/tests/kvm/tests/migration.py
+++ b/client/tests/kvm/tests/migration.py
@@ -36,34 +36,40 @@ def run_migration(test, params, env):
         mig_speed = params.get("mig_speed", "1G")
         return vm.monitor.migrate_set_speed(mig_speed)
 
-    vm = env.get_vm(params["main_vm"])
-    vm.verify_alive()
-    timeout = int(params.get("login_timeout", 360))
-    session = vm.wait_for_login(timeout=timeout)
-
     mig_timeout = float(params.get("mig_timeout", "3600"))
     mig_protocol = params.get("migration_protocol", "tcp")
     mig_cancel_delay = int(params.get("mig_cancel") == "yes") * 2
     offline = params.get("offline", "no") == "yes"
     check = params.get("vmstate_check", "no") == "yes"
+    living_guest_os = params.get("migration_living_guest", "yes") == "yes"
+
+    vm = env.get_vm(params["main_vm"])
+    vm.verify_alive()
+    timeout = int(params.get("login_timeout", 360))
+    if living_guest_os:
+        session = vm.wait_for_login(timeout=timeout)
 
     # Get the output of migration_test_command
-    test_command = params.get("migration_test_command")
-    reference_output = session.cmd_output(test_command)
+    if living_guest_os:
+        test_command = params.get("migration_test_command")
+        reference_output = session.cmd_output(test_command)
 
     # Start some process in the background (and leave the session open)
-    background_command = params.get("migration_bg_command", "")
-    session.sendline(background_command)
-    time.sleep(5)
+    if living_guest_os:
+        background_command = params.get("migration_bg_command", "")
+        session.sendline(background_command)
+        time.sleep(5)
 
     # Start another session with the guest and make sure the background
     # process is running
-    session2 = vm.wait_for_login(timeout=timeout)
+    if living_guest_os:
+        session2 = vm.wait_for_login(timeout=timeout)
 
     try:
-        check_command = params.get("migration_bg_check_command", "")
-        session2.cmd(check_command, timeout=30)
-        session2.close()
+        if living_guest_os:
+            check_command = params.get("migration_bg_check_command", "")
+            session2.cmd(check_command, timeout=30)
+            session2.close()
 
         # run some functions before migrate start.
         pre_migrate = get_functions(params.get("pre_migrate"), locals())
@@ -79,32 +85,38 @@ def run_migration(test, params, env):
             func()
 
         # Log into the guest again
-        logging.info("Logging into guest after migration...")
-        session2 = vm.wait_for_login(timeout=30)
-        logging.info("Logged in after migration")
+        if living_guest_os:
+            logging.info("Logging into guest after migration...")
+            session2 = vm.wait_for_login(timeout=30)
+            logging.info("Logged in after migration")
 
         # Make sure the background process is still running
-        session2.cmd(check_command, timeout=30)
+        if living_guest_os:
+            session2.cmd(check_command, timeout=30)
 
         # Get the output of migration_test_command
-        output = session2.cmd_output(test_command)
+        if living_guest_os:
+            output = session2.cmd_output(test_command)
 
         # Compare output to reference output
-        if output != reference_output:
-            logging.info("Command output before migration differs from "
-                         "command output after migration")
-            logging.info("Command: %s", test_command)
-            logging.info("Output before:" +
-                         virt_utils.format_str_for_message(reference_output))
-            logging.info("Output after:" +
-                         virt_utils.format_str_for_message(output))
-            raise error.TestFail("Command '%s' produced different output "
-                                 "before and after migration" % test_command)
+        if living_guest_os:
+            if output != reference_output:
+                logging.info("Command output before migration differs from "
+                             "command output after migration")
+                logging.info("Command: %s", test_command)
+                logging.info("Output before:" +
+                             
virt_utils.format_str_for_message(reference_output))
+                logging.info("Output after:" +
+                             virt_utils.format_str_for_message(output))
+                raise error.TestFail("Command '%s' produced different output "
+                                     "before and after migration" % 
test_command)
 
     finally:
         # Kill the background process
-        if session2 and session2.is_alive():
-            session2.cmd_output(params.get("migration_bg_kill_command", ""))
+        if living_guest_os:
+            if session2 and session2.is_alive():
+                session2.cmd_output(params.get("migration_bg_kill_command", 
""))
 
-    session2.close()
-    session.close()
+    if living_guest_os:
+        session2.close()
+        session.close()
-- 
1.7.6

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to