Re: [Autotest][PATCH V2] KVM Test: Add ioquit test case

2010-05-23 Thread Dor Laor

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 000..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=1000&) 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:





--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [Autotest][PATCH V2] KVM Test: Add ioquit test case

2010-05-17 Thread Lucas Meneghel Rodrigues
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?

> 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 000..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=1000 &) 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:


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Autotest][PATCH V2] KVM Test: Add ioquit test case

2010-05-14 Thread Feng Yang
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 
---
 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 000..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")
+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=1000 &) done"
+check_cmd = ps -a |grep dd |wc -l
+
 # 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:
-- 
1.5.5.6

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html