KVM test: abort-on-error mode
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 <mgoldish@redhat.com>
git-svn-id: http://test.kernel.org/svn/autotest/trunk@4367 592f7852-d20e-0410-864c-8624ca9c26a4
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 @@
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):
"""