Simple validation for vm.verify_kernel_crash()

Signed-off-by: Chris Evich <[email protected]>
---
 libvirt/tests/cfg/kernel_panic.cfg |    7 ++++
 libvirt/tests/kernel_panic.py      |   54 ++++++++++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+), 0 deletions(-)
 create mode 100644 libvirt/tests/cfg/kernel_panic.cfg
 create mode 100644 libvirt/tests/kernel_panic.py

diff --git a/libvirt/tests/cfg/kernel_panic.cfg 
b/libvirt/tests/cfg/kernel_panic.cfg
new file mode 100644
index 0000000..8b50132
--- /dev/null
+++ b/libvirt/tests/cfg/kernel_panic.cfg
@@ -0,0 +1,7 @@
+- kernel_panic:
+    type = kernel_panic
+    virt_test_type = libvirt
+    start_vm = "yes"
+    kill_unresponsive_vms = "yes"
+    take_regular_screendumps = "no"
+    panic_cmd = "echo -n c > /proc/sysrq-trigger"
diff --git a/libvirt/tests/kernel_panic.py b/libvirt/tests/kernel_panic.py
new file mode 100644
index 0000000..0d38057
--- /dev/null
+++ b/libvirt/tests/kernel_panic.py
@@ -0,0 +1,54 @@
+import logging
+from autotest.client.shared import error
+from virttest import virt_vm, aexpect, virsh
+
+def run_kernel_panic(test, params, env):
+    """
+    Verify various kernel panic methods
+
+    1.Prepare test environment.
+    2.Execute any needed setup commands
+    3.Execute kernel panic command
+    4.Verify panic was detected
+    5.restore environment
+    """
+
+    vm_name = params.get("main_vm", "vm1")
+    vm = env.get_vm(vm_name)
+    if not vm.is_alive():
+        vm.start()
+
+    panic_cmd = params.get("panic_cmd", None)
+    status = None
+    output = None
+
+    # Setup environment
+    session = vm.wait_for_login()
+    # Subsequent logins should timeout quickly
+    vm.LOGIN_WAIT_TIMEOUT = 10
+
+    #run test case
+    try:
+        logging.info("Sending panic_cmd command: %s" % panic_cmd)
+        status, output = session.cmd_status_output(panic_cmd, timeout=5,
+                                                   internal_timeout=5)
+    except aexpect.ShellTimeoutError:
+        pass # This is expected
+    except:
+        # This is unexpected
+        raise
+
+    try:
+        vm.verify_kernel_crash()
+        status = 1 # bad
+    except virt_vm.VMDeadKernelCrashError:
+        status = 0 # good
+
+    # Restore environment to stable state
+    session.close()
+    vm.serial_console.close()
+    virsh.destroy(vm_name)
+
+    #check status_error
+    if status:
+        raise error.TestFail("Panic command failed to cause panic")
-- 
1.7.1

_______________________________________________
Virt-test-devel mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/virt-test-devel

Reply via email to