This patch will run pre and post scripts defined in config file with the parameter pre_command and post_command post_command. Also exports all the prameters in preprocess for passing arguments to the script. --- client/tests/kvm_runtest_2/kvm_preprocessing.py | 34 +++++++++++++++++++++++ 1 files changed, 34 insertions(+), 0 deletions(-) diff --git a/client/tests/kvm_runtest_2/kvm_preprocessing.py b/client/tests/kvm_runtest_2/kvm_preprocessing.py index c9eb35d..07bfdeb 100644 --- a/client/tests/kvm_runtest_2/kvm_preprocessing.py +++ b/client/tests/kvm_runtest_2/kvm_preprocessing.py @@ -169,6 +169,7 @@ def preprocess(test, params, env): params -- a dict containing all VM and image parameters env -- the environment (a dict-like object) + Also, runs any setup command defined in the parameter pre_command Also, collect some host information, such as the KVM version. """ # Verify the identities of all living VMs @@ -192,6 +193,22 @@ def preprocess(test, params, env): vm.destroy() del env[key] + #execute any pre_commands + pre_command = params.get("pre_command") + if pre_command: + # export environment vars + for k in params.keys(): + kvm_log.info("Adding KVM_TEST_%s to Environment" % (k)) + os.putenv("KVM_TEST_%s" % (k), str(params[k])) + # execute command + kvm_log.info("Executing command '%s'..." % pre_command) + timeout = int(params.get("pre_commmand_timeout", "600")) + (status, pid, output) = kvm_utils.run_bg("cd %s; %s" % (test.bindir, pre_command), + None, kvm_log.debug, "(pre_command) ", timeout=timeout) + if status != 0: + kvm_utils.safe_kill(pid, signal.SIGTERM) + raise error.TestError, "Custom processing pre_command failed" + # Preprocess all VMs and images process(test, params, env, preprocess_image, preprocess_vm) @@ -232,6 +249,8 @@ def postprocess(test, params, env): test -- an Autotest test object params -- a dict containing all VM and image parameters env -- the environment (a dict-like object) + + Also, runs any command defined in the parameter post_command """ process(test, params, env, postprocess_image, postprocess_vm) @@ -241,6 +260,21 @@ def postprocess(test, params, env): kvm_log.debug("'keep_ppm_files' not specified; removing all PPM files from results dir...") kvm_utils.run_bg("rm -vf %s" % os.path.join(test.debugdir, "*.ppm"), None, kvm_log.debug, "(rm) ", timeout=5.0) + #execute any post_commands + post_command = params.get("post_command") + if post_command: + # export environment vars + for k in params.keys(): + kvm_log.info("Adding KVM_TEST_%s to Environment" % (k)) + os.putenv("KVM_TEST_%s" % (k), str(params[k])) + #execute command + kvm_log.info("Executing command '%s'..." % post_command) + timeout = int(params.get("post_commmand_timeout", "600")) + (status, pid, output) = kvm_utils.run_bg("cd %s; %s" % (test.bindir, post_command), + None, kvm_log.debug, "(pre_command) ", timeout=timeout) + if status != 0: + kvm_utils.safe_kill(pid, signal.SIGTERM) + raise error.TestError, "Custom processing command failed" def postprocess_on_error(test, params, env): """Perform postprocessing operations required only if the test failed. -- 1.6.0.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