Emulate the powercut under IO workload(dd so far) using kill -9. Then check image in post command. This case want to make sure powercut under IO workload will not break qcow2 image. Now it only work on linux. Signed-off-by: Feng Yang <fyang@xxxxxxxxxx> --- client/tests/kvm/tests/ioquit.py | 38 ++++++++++++++++++++++++++++++++ client/tests/kvm/tests_base.cfg.sample | 12 ++++++++++ 2 files changed, 50 insertions(+), 0 deletions(-) create mode 100644 client/tests/kvm/tests/ioquit.py diff --git a/client/tests/kvm/tests/ioquit.py b/client/tests/kvm/tests/ioquit.py new file mode 100644 index 0000000..389a867 --- /dev/null +++ b/client/tests/kvm/tests/ioquit.py @@ -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() diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample index be96dc1..e0e1ba7 100644 --- a/client/tests/kvm/tests_base.cfg.sample +++ b/client/tests/kvm/tests_base.cfg.sample @@ -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 -- 1.5.5.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