[KVM-AUTOTEST 08/26 v3] KVM test: unattended_install.py style changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



- Use vm.verify_alive() instead of vm.is_alive().
- Use error.context() so that if verify_alive() fails the resulting
  error
  message will be clearer.
- Make the code a little bit shorter.
- Catch VMAddressError (can be raised by vm.get_address()).
- Use double quotes for consistency.
- Modify debug messages.

Changes from v2:
- Re-added the decorator error.context_aware

Changes from v1:
- Rebase against latest upstream

Signed-off-by: Michael Goldish <mgoldish@xxxxxxxxxx>
---
 client/tests/kvm/tests/unattended_install.py |   59 +++++++++++---------------
 1 files changed, 25 insertions(+), 34 deletions(-)

diff --git a/client/tests/kvm/tests/unattended_install.py b/client/tests/kvm/tests/unattended_install.py
index fdb020a..c115416 100644
--- a/client/tests/kvm/tests/unattended_install.py
+++ b/client/tests/kvm/tests/unattended_install.py
@@ -1,8 +1,9 @@
 import logging, time, socket, re
 from autotest_lib.client.common_lib import error
-import kvm_utils, kvm_test_utils
+import kvm_utils, kvm_test_utils, kvm_vm
 
 
+@xxxxxxxxxxxxxxxxxxx
 def run_unattended_install(test, params, env):
     """
     Unattended install test:
@@ -13,45 +14,32 @@ def run_unattended_install(test, params, env):
     @param params: Dictionary with the test parameters.
     @param env: Dictionary with test environment.
     """
-    buf = 1024
     vm = env.get_vm(params["main_vm"])
     vm.verify_alive()
 
+    install_timeout = int(params.get("timeout", 3000))
+    post_install_delay = int(params.get("post_install_delay", 0))
     port = vm.get_port(int(params.get("guest_port_unattended_install")))
-    if params.get("post_install_delay"):
-        post_install_delay = int(params.get("post_install_delay"))
-    else:
-        post_install_delay = 0
 
-    install_timeout = float(params.get("timeout", 3000))
     migrate_background = params.get("migrate_background") == "yes"
     if migrate_background:
         mig_timeout = float(params.get("mig_timeout", "3600"))
         mig_protocol = params.get("migration_protocol", "tcp")
 
-    logging.info("Starting unattended install watch process. "
-                 "Timeout set to %ds (%d min)", install_timeout,
-                 install_timeout/60)
+    logging.info("Waiting for installation to finish. Timeout set to %ds "
+                 "(%d min).", install_timeout, install_timeout/60)
+    error.context("waiting for installation to finish")
+
     start_time = time.time()
-    time_elapsed = 0
-    while time_elapsed < install_timeout:
-        if not vm.is_alive():
-            raise error.TestError("Guest died before end of OS install")
+    while (time.time() - start_time) < install_timeout:
+        vm.verify_alive()
         client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        addr = vm.get_address()
-        if addr is not None:
-            try:
-                client.connect((addr, port))
-                msg = client.recv(1024)
-                if msg == 'done':
-                    if post_install_delay:
-                        logging.debug("Post install delay specified, "
-                                      "waiting %ss...", post_install_delay)
-                        time.sleep(post_install_delay)
-                    break
-            except socket.error:
-                pass
-
+        try:
+            client.connect((vm.get_address(), port))
+            if client.recv(1024) == "done":
+                break
+        except (socket.error, kvm_vm.VMAddressError):
+            pass
         if migrate_background:
             # Drop the params which may break the migration
             # Better method is to used dnsmasq to do the unattended installation
@@ -66,12 +54,15 @@ def run_unattended_install(test, params, env):
         else:
             time.sleep(1)
         client.close()
-        end_time = time.time()
-        time_elapsed = int(end_time - start_time)
-
-    if time_elapsed < install_timeout:
-        logging.info('Guest reported successful installation after %ds '
-                     '(%d min)', time_elapsed, time_elapsed/60)
     else:
         raise error.TestFail('Timeout elapsed while waiting for install to '
                              'finish.')
+
+    time_elapsed = time.time() - start_time
+    logging.info("Guest reported successful installation after %ds (%d min)",
+                 time_elapsed, time_elapsed/60)
+
+    if post_install_delay:
+        logging.debug("Post install delay specified, waiting %ss...",
+                      post_install_delay)
+        time.sleep(post_install_delay)
-- 
1.7.3.4

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


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux