From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dor Laor Subject: Re: [Autotest][PATCH V2] KVM Test: Add ioquit test case Date: Sun, 23 May 2010 11:56:34 +0300 Message-ID: <4BF8EDC2.4080507@redhat.com> References: <1273830182-12491-1-git-send-email-fyang@redhat.com> <1274138836.8388.135.camel@freedom> Reply-To: dlaor@redhat.com Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Feng Yang , autotest@test.kernel.org, kvm@vger.kernel.org To: Lucas Meneghel Rodrigues Return-path: Received: from mx1.redhat.com ([209.132.183.28]:45986 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753167Ab0EWIy4 (ORCPT ); Sun, 23 May 2010 04:54:56 -0400 In-Reply-To: <1274138836.8388.135.camel@freedom> Sender: kvm-owner@vger.kernel.org List-ID: On 05/18/2010 02:27 AM, Lucas Meneghel Rodrigues wrote: > On Fri, 2010-05-14 at 17:43 +0800, Feng Yang wrote: >> 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. > > The big question that came to my mind here is: Are we really expected to > keep the hard disk image consistency even if the power is cut down? I am > not sure about that. Dor, what is the expected behavior on this > situation? Consistency is expected, hope will meet it too. > >> Now it only work on linux. > > I have a couple of minor comments on this one: > >> Signed-off-by: Feng Yang >> --- >> client/tests/kvm/tests/ioquit.py | 39 ++++++++++++++++++++++++++++++++ >> client/tests/kvm/tests_base.cfg.sample | 10 +++++++- >> 2 files changed, 48 insertions(+), 1 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..a202297 >> --- /dev/null >> +++ b/client/tests/kvm/tests/ioquit.py >> @@ -0,0 +1,39 @@ >> +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("Background command finish before kill VM") > > ^ "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 bb3646c..4387a36 100644 >> --- a/client/tests/kvm/tests_base.cfg.sample >> +++ b/client/tests/kvm/tests_base.cfg.sample >> @@ -389,7 +389,11 @@ variants: >> rebase_mode = unsafe >> image_name_snapshot1 = sn1 >> image_name_snapshot2 = sn2 >> - >> + - 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 > > ^ Here we can add login_timeout explicitly so people can tune this > timeout. > >> + >> # system_powerdown, system_reset and shutdown *must* be the last ones >> # defined (in this order), since the effect of such tests can leave >> # the VM on a bad state. >> @@ -1347,6 +1351,10 @@ variants: >> pre_command += " scripts/hugepage.py /mnt/kvm_hugepage;" >> extra_params += " -mem-path /mnt/kvm_hugepage" >> >> +ioquit: >> + post_command_noncritical = no >> + only qcow2 >> + only Linux >> >> variants: >> - @no_pci_assignable: > >