Skip to contentSkip to conversation

Iterate over reboot

PATCH In review supriya kannery 3 participants 5 messages Apr 20, 2009 – May 1, 2009 KVM

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Iterate over reboot

A patch for iterating over VM reboot

- Supriya Kannery,
LTC, IBM

client/tests/kvm_runtest_2/kvm_tests.cfg.sample +1 -0
diff -Naurp kvm-autotest/client/tests/kvm_runtest_2/kvm_tests.cfg.sample kvm-autotest.mod/client/tests/kvm_runtest_2/kvm_tests.cfg.sample
@@ -50,6 +50,7 @@ variants:
         reboot = yes
         extra_params += " -snapshot"
         kill_vm_on_error = yes
+        reboot_iterations = 1
 
     - migrate:      install setup
         type = migration
client/tests/kvm_runtest_2/kvm_tests.py +21 -18
diff -Naurp kvm-autotest/client/tests/kvm_runtest_2/kvm_tests.py kvm-autotest.mod/client/tests/kvm_runtest_2/kvm_tests.py
@@ -31,25 +31,28 @@ def run_boot(test, params, env):
     kvm_log.info("Logged in")
 
     if params.get("reboot") == "yes":
-        session.sendline(params.get("cmd_reboot"))
-        kvm_log.info("Reboot command sent; waiting for guest to go down...")
+        iteration = int(params.get("reboot_iterations",1))
+        while iteration:
+            session.sendline(params.get("cmd_reboot"))
+            kvm_log.info("Reboot command sent; waiting for guest to go down...")
+
+            if not kvm_utils.wait_for(lambda: not session.is_responsive(), 120, 0, 1):
+                message = "Guest refuses to go down"
+                kvm_log.error(message)
+                raise error.TestFail, message
+
+            session.close()
+
+            kvm_log.info("Guest is down; waiting for it to go up again...")
+
+            session = kvm_utils.wait_for(vm.ssh_login, 120, 0, 2)
+            if not session:
+                message = "Could not log into guest after reboot"
+                kvm_log.error(message)
+                raise error.TestFail, message
 
-        if not kvm_utils.wait_for(lambda: not session.is_responsive(), 120, 0, 1):
-            message = "Guest refuses to go down"
-            kvm_log.error(message)
-            raise error.TestFail, message
-
-        session.close()
-
-        kvm_log.info("Guest is down; waiting for it to go up again...")
-
-        session = kvm_utils.wait_for(vm.ssh_login, 120, 0, 2)
-        if not session:
-            message = "Could not log into guest after reboot"
-            kvm_log.error(message)
-            raise error.TestFail, message
-
-        kvm_log.info("Guest is up again")
+            kvm_log.info("Guest is up again")
+            iteration -= 1
 
     session.close()
 
#1 lore raw
Quoted 4 lines · supriya kannery

A patch for iterating over VM reboot

- Supriya Kannery,
LTC, IBM

Needs a Signed-off-by:

Quoted 61 lines

diff -Naurp kvm-autotest/client/tests/kvm_runtest_2/kvm_tests.cfg.sample kvm-autotest.mod/client/tests/kvm_runtest_2/kvm_tests.cfg.sample

client/tests/kvm_runtest_2/kvm_tests.cfg.sample +1 -0
@@ -50,6 +50,7 @@ variants:
         reboot = yes
         extra_params += " -snapshot"
         kill_vm_on_error = yes
+        reboot_iterations = 1
 
     - migrate:      install setup
         type = migration

diff -Naurp kvm-autotest/client/tests/kvm_runtest_2/kvm_tests.py kvm-autotest.mod/client/tests/kvm_runtest_2/kvm_tests.py

client/tests/kvm_runtest_2/kvm_tests.py +21 -18
@@ -31,25 +31,28 @@ def run_boot(test, params, env):
     kvm_log.info("Logged in")
 
     if params.get("reboot") == "yes":
-        session.sendline(params.get("cmd_reboot"))
-        kvm_log.info("Reboot command sent; waiting for guest to go down...")
+        iteration = int(params.get("reboot_iterations",1))
+        while iteration:
+            session.sendline(params.get("cmd_reboot"))
+            kvm_log.info("Reboot command sent; waiting for guest to go down...")
+
+            if not kvm_utils.wait_for(lambda: not session.is_responsive(), 120, 0, 1):
+                message = "Guest refuses to go down"
+                kvm_log.error(message)
+                raise error.TestFail, message
+
+            session.close()
+
+            kvm_log.info("Guest is down; waiting for it to go up again...")
+
+            session = kvm_utils.wait_for(vm.ssh_login, 120, 0, 2)
+            if not session:
+                message = "Could not log into guest after reboot"
+                kvm_log.error(message)
+                raise error.TestFail, message
 
-        if not kvm_utils.wait_for(lambda: not session.is_responsive(), 120, 0, 1):
-            message = "Guest refuses to go down"
-            kvm_log.error(message)
-            raise error.TestFail, message
-
-        session.close()
-
-        kvm_log.info("Guest is down; waiting for it to go up again...")
-
-        session = kvm_utils.wait_for(vm.ssh_login, 120, 0, 2)
-        if not session:
-            message = "Could not log into guest after reboot"
-            kvm_log.error(message)
-            raise error.TestFail, message
-
-        kvm_log.info("Guest is up again")
+            kvm_log.info("Guest is up again")
+            iteration -= 1
 
     session.close()
 
Signature · 4 lines
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
[email protected]
#2 lore raw
Quoted 11 lines · Ryan Harper
Quoted 5 lines · supriya kannery

A patch for iterating over VM reboot

- Supriya Kannery,
LTC, IBM

Needs a Signed-off-by:

Pls find attached the patch including "Signed-off-by"

diffstat output:

 kvm_tests.cfg.sample |    1 +
 kvm_tests.py         |   39 +++++++++++++++++++++------------------
 2 files changed, 22 insertions(+), 18 deletions(-)

---

client/tests/kvm_runtest_2/kvm_tests.cfg.sample +1 -0
diff -Naurp kvm-autotest/client/tests/kvm_runtest_2/kvm_tests.cfg.sample kvm-autotest.mod/client/tests/kvm_runtest_2/kvm_tests.cfg.sample
@@ -50,6 +50,7 @@ variants:
         reboot = yes
         extra_params += " -snapshot"
         kill_vm_on_error = yes
+        reboot_iterations = 1
 
     - migrate:      install setup
         type = migration
client/tests/kvm_runtest_2/kvm_tests.py +21 -18
diff -Naurp kvm-autotest/client/tests/kvm_runtest_2/kvm_tests.py kvm-autotest.mod/client/tests/kvm_runtest_2/kvm_tests.py
@@ -31,25 +31,28 @@ def run_boot(test, params, env):
     kvm_log.info("Logged in")
 
     if params.get("reboot") == "yes":
-        session.sendline(params.get("cmd_reboot"))
-        kvm_log.info("Reboot command sent; waiting for guest to go down...")
+        iteration = int(params.get("reboot_iterations",1))
+        while iteration:
+            session.sendline(params.get("cmd_reboot"))
+            kvm_log.info("Reboot command sent; waiting for guest to go down...")
+
+            if not kvm_utils.wait_for(lambda: not session.is_responsive(), 120, 0, 1):
+                message = "Guest refuses to go down"
+                kvm_log.error(message)
+                raise error.TestFail, message
+
+            session.close()
+
+            kvm_log.info("Guest is down; waiting for it to go up again...")
+
+            session = kvm_utils.wait_for(vm.ssh_login, 120, 0, 2)
+            if not session:
+                message = "Could not log into guest after reboot"
+                kvm_log.error(message)
+                raise error.TestFail, message
 
-        if not kvm_utils.wait_for(lambda: not session.is_responsive(), 120, 0, 1):
-            message = "Guest refuses to go down"
-            kvm_log.error(message)
-            raise error.TestFail, message
-
-        session.close()
-
-        kvm_log.info("Guest is down; waiting for it to go up again...")
-
-        session = kvm_utils.wait_for(vm.ssh_login, 120, 0, 2)
-        if not session:
-            message = "Could not log into guest after reboot"
-            kvm_log.error(message)
-            raise error.TestFail, message
-
-        kvm_log.info("Guest is up again")
+            kvm_log.info("Guest is up again")
+            iteration -= 1
 
     session.close()
 
#3 lore raw
In reply to supriya kannery
Quoted 5 lines · supriya kannery

A patch for iterating over VM reboot

- Supriya Kannery,
LTC, IBM

I think adding iterations capability belongs to the infrastructure, not the test itself. Implement it once in the infrastructure, instead of once per test. Also I think autotest has such a capability (adding iteration=n to job.run_test parameters).

Thanks,
Uri.

#4 lore raw
Quoted 7 lines · Uri Lublin
Quoted 2 lines · supriya kannery

A patch for iterating over VM reboot

I think adding iterations capability belongs to the infrastructure, not the test itself. Implement it once in the infrastructure, instead of once per test. Also I think autotest has such a capability (adding iteration=n to job.run_test parameters).

In the older version of kvm_runtest (kvm_runtest_old), the iteration parameter can be added to the corresponding job.runtest() of each test type (boot, reboot, migration).Different Class and execute function are defined for each test type in old runtest infrastructure which gives the flexibility of providing independent iteration values. But in the current infrastructure, I am not sure how we can apply that way to iterate each test type. My guess is, defining an iteration parameter under corresponding test type variant in the kvm_test.cfg file is one of the ways. Pls let me know if I overlooked anything here.

Thanks, Supriya