If 'abort_on_error' is set to 'yes' for a test, the entire job will be aborted
when that test fails.  If the parameter is set for all tests, the job will be
aborted as soon as the first test fails.  Before aborting, the filename of the
monitor unix socket of each VM will be printed, as well as the command line
used to start that VM.

Currently this is only supported in serial exceution mode.  Behavior in
parallel mode is undefined.

To enable abort-on-error, and to prevent the postprocessor from killing any
VMs, set the following options:

abort_on_error = yes
kill_vm.* ?= no
kill_unresponsive_vms.* ?= no

These options appear commented out near the end of tests.cfg.sample.

They can also be set for specific tests, either by writing an exception like

WinXP.32\b.*\bmigrate:
    abort_on_error = yes
    ...

in tests.cfg, or by setting the parameters in the test variant itself
(somewhere in tests_base.cfg).

Signed-off-by: Michael Goldish <mgold...@redhat.com>
---
 client/tests/kvm/kvm_preprocessing.py |   13 +++++++++++++
 client/tests/kvm/tests.cfg.sample     |    5 +++++
 2 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/client/tests/kvm/kvm_preprocessing.py 
b/client/tests/kvm/kvm_preprocessing.py
index b3fef9d..50db65c 100644
--- a/client/tests/kvm/kvm_preprocessing.py
+++ b/client/tests/kvm/kvm_preprocessing.py
@@ -347,6 +347,19 @@ def postprocess(test, params, env):
                         int(params.get("post_command_timeout", "600")),
                         params.get("post_command_noncritical") == "yes")
 
+    # Abort on error?
+    if params.get("abort") == "yes":
+        exc_string = str(sys.exc_info()[1])
+        logging.info("Aborting job (%s)", exc_string)
+        for vm in kvm_utils.env_get_all_vms(env):
+            if not vm.is_dead():
+                logging.info("VM '%s' is alive.", vm.name)
+                logging.info("The monitor unix socket of '%s' is: %s",
+                             vm.name, vm.monitor_file_name)
+                logging.info("The command line used to start '%s' was:\n%s",
+                             vm.name, vm.make_qemu_command())
+        raise error.JobError("Abort requested (%s)" % exc_string)
+
 
 def postprocess_on_error(test, params, env):
     """
diff --git a/client/tests/kvm/tests.cfg.sample 
b/client/tests/kvm/tests.cfg.sample
index b86b6c4..2c17454 100644
--- a/client/tests/kvm/tests.cfg.sample
+++ b/client/tests/kvm/tests.cfg.sample
@@ -74,5 +74,10 @@ variants:
         only Fedora.12.64
         only unattended_install boot shutdown
 
+# Uncomment the following lines to enable abort-on-error mode:
+#abort_on_error = yes
+#kill_vm.* ?= no
+#kill_unresponsive_vms.* ?= no
+
 # Choose your test list from the testsets defined
 only qemu_kvm_f12_quick
-- 
1.5.4.1

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