new file mode 100644
@@ -0,0 +1,38 @@
+import logging, time, random
+from autotest_lib.client.common_lib import error
+import kvm_test_utils
+
+
+def run_ioquit(test, params, env):
+ """
+ Emulate the poweroff under IO workload(dd so far) using kill -9.
+
+ @param test: Kvm test object
+ @param params: Dictionary with the test parameters.
+ @param env: Dictionary with test environment.
+ """
+
+ vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
+ session = kvm_test_utils.wait_for_login(vm,
+ timeout=int(params.get("login_timeout", 360)))
+ session2 = kvm_test_utils.wait_for_login(vm,
+ timeout=int(params.get("login_timeout", 360)))
+ try:
+ bg_cmd = params.get("background_cmd")
+ logging.info("Add IO workload for guest OS.")
+ (s, o) = session.get_command_status_output(bg_cmd, timeout=60)
+ check_cmd = params.get("check_cmd")
+ (s, o) = session2.get_command_status_output(check_cmd, timeout=60)
+ if int(o) <= 0:
+ raise error.TestError("Fail to add IO workload for Guest OS")
+
+ logging.info("Sleep for a while")
+ time.sleep(random.randrange(30,100))
+ (s, o) = session2.get_command_status_output(check_cmd, timeout=300)
+ if int(o) <= 0:
+ logging.info("IO workload finished before the VM was killed")
+ logging.info("Kill the virtual machine")
+ vm.process.close()
+ finally:
+ session.close()
+ session2.close()
@@ -348,6 +348,12 @@ variants:
- vmexit:
case = vmexit
+ - ioquit:
+ type = ioquit
+ background_cmd = "for i in 1 2 3 4; do (nohup dd if=/dev/urandom of=/tmp/file bs=102400 count=10000000 &) done"
+ check_cmd = ps -a |grep dd |wc -l
+ login_timeout = 360
+
- qemu_img:
type = qemu_img
vms = ''
@@ -1359,6 +1365,12 @@ variants:
extra_params += " -mem-path /mnt/kvm_hugepage"
+ioquit:
+ post_command_noncritical = no
+ only qcow2
+ only Linux
+
+
variants:
- @no_pci_assignable:
pci_assignable = no