[PATCH] KVM test: Ensure multiple pre/post commands can run

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

 



The way tests are currently defined, running unattended
install + hugepages will allways skip unattended install
setup step (coincidentally the tests on our test farm
were working because previous executions of the unattended
install script ran, leaving the environment prepared for
unattended install).

So, make sure pre_commands on default tests.cfg file are
additive, and the preprocessor splits the pre_command
string, and executes pre/post commands in sequence.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>
---
 client/tests/kvm/kvm_preprocessing.py  |   29 ++++++++++++++++-------------
 client/tests/kvm/tests_base.cfg.sample |    4 ++--
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/client/tests/kvm/kvm_preprocessing.py b/client/tests/kvm/kvm_preprocessing.py
index 8a0c151..2e35d9f 100644
--- a/client/tests/kvm/kvm_preprocessing.py
+++ b/client/tests/kvm/kvm_preprocessing.py
@@ -126,7 +126,7 @@ def postprocess_vm(test, params, env, name):
         vm.destroy(gracefully = params.get("kill_vm_gracefully") == "yes")
 
 
-def process_command(test, params, env, command, command_timeout,
+def process_command(test, params, env, commands, command_timeout,
                     command_noncritical):
     """
     Pre- or post- custom commands to be executed before/after a test is run
@@ -134,22 +134,23 @@ def process_command(test, params, env, command, command_timeout,
     @param test: An Autotest test object.
     @param params: A dict containing all VM and image parameters.
     @param env: The environment (a dict-like object).
-    @param command: Command to be run.
+    @param commands: List of commands to be run.
     @param command_timeout: Timeout for command execution.
     @param command_noncritical: If True test will not fail if command fails.
     """
     # Export environment vars
     for k in params.keys():
         os.putenv("KVM_TEST_%s" % k, str(params[k]))
-    # Execute command
-    try:
-        utils.system("cd %s; %s" % (test.bindir, command))
-    except error.CmdError, e:
-        logging.warn("Custom processing command '%s' failed, output is: %s",
-                     command, str(e))
-        if not command_noncritical:
-            raise error.TestError("Custom processing command failed: %s" %
-                                  str(e))
+    # Execute commands
+    for command in commands:
+        try:
+            utils.system("cd %s; %s" % (test.bindir, command))
+        except error.CmdError, e:
+            logging.warn("Custom processing command '%s' failed, output is: %s",
+                         command, str(e))
+            if not command_noncritical:
+                raise error.TestError("Custom processing command failed: %s" %
+                                      str(e))
 
 
 def process(test, params, env, image_func, vm_func):
@@ -220,7 +221,8 @@ def preprocess(test, params, env):
 
     # Execute any pre_commands
     if params.get("pre_command"):
-        process_command(test, params, env, params.get("pre_command"),
+        pre_commands = params.get("pre_command").spit()
+        process_command(test, params, env, pre_commands,
                         int(params.get("pre_command_timeout", "600")),
                         params.get("pre_command_noncritical") == "yes")
 
@@ -296,7 +298,8 @@ def postprocess(test, params, env):
 
     # Execute any post_commands
     if params.get("post_command"):
-        process_command(test, params, env, params.get("post_command"),
+        post_commands = params.get("post_command").split()
+        process_command(test, params, env, post_commands,
                         int(params.get("post_command_timeout", "600")),
                         params.get("post_command_noncritical") == "yes")
 
diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
index 91daf48..8f88f3b 100644
--- a/client/tests/kvm/tests_base.cfg.sample
+++ b/client/tests/kvm/tests_base.cfg.sample
@@ -66,7 +66,7 @@ variants:
         kill_vm_gracefully = yes
         kill_vm_on_error = yes
         force_create_image = yes
-        pre_command = scripts/unattended.py
+        pre_command += " scripts/unattended.py"
         floppy = "images/floppy.img"
         extra_params += " -boot d"
         nic_mode = user
@@ -953,7 +953,7 @@ variants:
 variants:
     - @smallpages:
     - hugepages:
-        pre_command = "/usr/bin/python scripts/hugepage.py /mnt/kvm_hugepage"
+        pre_command += " scripts/hugepage.py"
         extra_params += " -mem-path /mnt/kvm_hugepage"
 
 
-- 
1.6.6

--
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