diff mbox

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

Message ID 1294751618-21631-8-git-send-email-mgoldish@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michael Goldish Jan. 11, 2011, 1:13 p.m. UTC
None
diff mbox

Patch

diff --git a/client/tests/kvm/tests/unattended_install.py b/client/tests/kvm/tests/unattended_install.py
index 9617603..57d3d00 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
 from autotest_lib.client.common_lib import error
-import kvm_utils, kvm_test_utils
+import kvm_utils, kvm_test_utils, kvm_vm
 
 
+@error.context_aware
 def run_unattended_install(test, params, env):
     """
     Unattended install test:
@@ -13,47 +14,38 @@  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))
-    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
-        time.sleep(1)
+        try:
+            client.connect((vm.get_address(), port))
+            if client.recv(1024) == "done":
+                break
+        except (socket.error, kvm_vm.VMAddressError):
+            pass
         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)
+        time.sleep(10)
     else:
-        raise error.TestFail('Timeout elapsed while waiting for install to '
-                             'finish.')
+        raise error.TestFail("Timeout elapsed while waiting for installation "
+                             "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)