diff mbox

[KVM-AUTOTEST,12/12] KVM test: make stress_boot work properly with TAP networking

Message ID ce2ed8cffffe849e20e0a5a84a6c96ed3287b5d9.1249257056.git.mgoldish@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michael Goldish Aug. 2, 2009, 11:58 p.m. UTC
Take an additional parameter 'clone_address_index_base' which indicates the
initial value for 'address_index' for the cloned VMs.  This value is
incremented after each clone is created.  I assume the original VM has a single
NIC; otherwise NICs will end up sharing MAC addresses, which is bad.

Also, make a few small corrections:

- Take the params for the clones from the original VM's params, not from the
test's params, because the test's params contain information about several
VMs, only one of which is the original VM. The original VM's params, on the
other hand, describe just a single VM (which we want to clone).

- Change the way kill_vm.* parameters are sent to the postprocessor.
(The postprocessor doesn't read params from the VM objects but rather from the
test's params dict.)

- Replace 'if get_command_status(...)' with 'if get_command_status(...) != 0'.

- Replace the test command 'ps aux' with 'uname -a'.  The silly reason for this
is that DSL-4.2.5 doesn't like 'ps aux'.  Since 'uname -a' is just as good
(AFAIK), use it instead.

Signed-off-by: Michael Goldish <mgoldish@redhat.com>
---
 client/tests/kvm/kvm_tests.cfg.sample |    7 ++++++-
 client/tests/kvm/kvm_tests.py         |   14 ++++++--------
 2 files changed, 12 insertions(+), 9 deletions(-)

Comments

Yolkfull Chow Aug. 3, 2009, 3:17 a.m. UTC | #1
Hi Michael, I just have some comments on what you changed on
stress_boot. :-)


On Mon, Aug 03, 2009 at 02:58:21AM +0300, Michael Goldish wrote:
> Take an additional parameter 'clone_address_index_base' which indicates the
> initial value for 'address_index' for the cloned VMs.  This value is
> incremented after each clone is created.  I assume the original VM has a single
> NIC; otherwise NICs will end up sharing MAC addresses, which is bad.
> 
> Also, make a few small corrections:
> 
> - Take the params for the clones from the original VM's params, not from the
> test's params, because the test's params contain information about several
> VMs, only one of which is the original VM. The original VM's params, on the
> other hand, describe just a single VM (which we want to clone).
> 
> - Change the way kill_vm.* parameters are sent to the postprocessor.
> (The postprocessor doesn't read params from the VM objects but rather from the
> test's params dict.)
> 
> - Replace 'if get_command_status(...)' with 'if get_command_status(...) != 0'.
> 
> - Replace the test command 'ps aux' with 'uname -a'.  The silly reason for this
> is that DSL-4.2.5 doesn't like 'ps aux'.  Since 'uname -a' is just as good
> (AFAIK), use it instead.
> 
> Signed-off-by: Michael Goldish <mgoldish@redhat.com>
> ---
>  client/tests/kvm/kvm_tests.cfg.sample |    7 ++++++-
>  client/tests/kvm/kvm_tests.py         |   14 ++++++--------
>  2 files changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/client/tests/kvm/kvm_tests.cfg.sample b/client/tests/kvm/kvm_tests.cfg.sample
> index 3c23432..3a4bf64 100644
> --- a/client/tests/kvm/kvm_tests.cfg.sample
> +++ b/client/tests/kvm/kvm_tests.cfg.sample
> @@ -117,7 +117,12 @@ variants:
>      - stress_boot:  install setup
>          type = stress_boot
>          max_vms = 5    
> -        alive_test_cmd = ps aux
> +        alive_test_cmd = uname -a
> +        clone_address_index_base = 10
> +        kill_vm = yes
> +        kill_vm_vm1 = no


Actually, there are two methods to deal with started VMs via framework, one is as soon
as the current test finished and the other is just before next test going to be started. 
In this case both methods equal somewhat between each other I think, and
I had chosen the later one. But if you had done some testing and
proved the previous one is better, I would agree. 


> +        kill_vm_gracefully = no

This has been specified within code during cloning. 

> +        extra_params += " -snapshot"

If you add this option '-snapshot' here, the first VM will be in snapshot
mode as well which will affect next test.

>  
>      - shutdown:     install setup
>          type = shutdown
> diff --git a/client/tests/kvm/kvm_tests.py b/client/tests/kvm/kvm_tests.py
> index 9784ec9..308db97 100644
> --- a/client/tests/kvm/kvm_tests.py
> +++ b/client/tests/kvm/kvm_tests.py
> @@ -541,8 +541,8 @@ def run_stress_boot(tests, params, env):
>          raise error.TestFail("Could not log into first guest")
>  
>      num = 2
> -    vms = []
>      sessions = [session]
> +    address_index = int(params.get("clone_address_index_base", 10))
>  
>      # boot the VMs
>      while num <= int(params.get("max_vms")):
> @@ -550,15 +550,12 @@ def run_stress_boot(tests, params, env):
>              vm_name = "vm" + str(num)
>  
>              # clone vm according to the first one
> -            vm_params = params.copy()
> -            vm_params['image_snapshot'] = "yes"
> -            vm_params['kill_vm'] = "yes"
> -            vm_params['kill_vm_gracefully'] = "no"
> +            vm_params = vm.get_params().copy()
> +            vm_params["address_index"] = str(address_index)
>              curr_vm = vm.clone(vm_name, vm_params)
>              kvm_utils.env_register_vm(env, vm_name, curr_vm)
>              params['vms'] += " " + vm_name
>  
> -            #vms.append(curr_vm)
>              logging.info("Booting guest #%d" % num)
>              if not curr_vm.create():
>                  raise error.TestFail("Cannot create VM #%d" % num)
> @@ -571,10 +568,11 @@ def run_stress_boot(tests, params, env):
>              sessions.append(curr_vm_session)
>  
>              # check whether all previous ssh sessions are responsive
> -            for i, vm_session in enumerate(sessions):
> -                if vm_session.get_command_status(params.get("alive_test_cmd")):
> +            for i, se in enumerate(sessions):
> +                if se.get_command_status(params.get("alive_test_cmd")) != 0:
>                      raise error.TestFail("Session #%d is not responsive" % i)
>              num += 1
> +            address_index += 1
>  
>          except (error.TestFail, OSError):
>              for se in sessions:
> -- 
> 1.5.4.1
> 
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/client/tests/kvm/kvm_tests.cfg.sample b/client/tests/kvm/kvm_tests.cfg.sample
index 3c23432..3a4bf64 100644
--- a/client/tests/kvm/kvm_tests.cfg.sample
+++ b/client/tests/kvm/kvm_tests.cfg.sample
@@ -117,7 +117,12 @@  variants:
     - stress_boot:  install setup
         type = stress_boot
         max_vms = 5    
-        alive_test_cmd = ps aux
+        alive_test_cmd = uname -a
+        clone_address_index_base = 10
+        kill_vm = yes
+        kill_vm_vm1 = no
+        kill_vm_gracefully = no
+        extra_params += " -snapshot"
 
     - shutdown:     install setup
         type = shutdown
diff --git a/client/tests/kvm/kvm_tests.py b/client/tests/kvm/kvm_tests.py
index 9784ec9..308db97 100644
--- a/client/tests/kvm/kvm_tests.py
+++ b/client/tests/kvm/kvm_tests.py
@@ -541,8 +541,8 @@  def run_stress_boot(tests, params, env):
         raise error.TestFail("Could not log into first guest")
 
     num = 2
-    vms = []
     sessions = [session]
+    address_index = int(params.get("clone_address_index_base", 10))
 
     # boot the VMs
     while num <= int(params.get("max_vms")):
@@ -550,15 +550,12 @@  def run_stress_boot(tests, params, env):
             vm_name = "vm" + str(num)
 
             # clone vm according to the first one
-            vm_params = params.copy()
-            vm_params['image_snapshot'] = "yes"
-            vm_params['kill_vm'] = "yes"
-            vm_params['kill_vm_gracefully'] = "no"
+            vm_params = vm.get_params().copy()
+            vm_params["address_index"] = str(address_index)
             curr_vm = vm.clone(vm_name, vm_params)
             kvm_utils.env_register_vm(env, vm_name, curr_vm)
             params['vms'] += " " + vm_name
 
-            #vms.append(curr_vm)
             logging.info("Booting guest #%d" % num)
             if not curr_vm.create():
                 raise error.TestFail("Cannot create VM #%d" % num)
@@ -571,10 +568,11 @@  def run_stress_boot(tests, params, env):
             sessions.append(curr_vm_session)
 
             # check whether all previous ssh sessions are responsive
-            for i, vm_session in enumerate(sessions):
-                if vm_session.get_command_status(params.get("alive_test_cmd")):
+            for i, se in enumerate(sessions):
+                if se.get_command_status(params.get("alive_test_cmd")) != 0:
                     raise error.TestFail("Session #%d is not responsive" % i)
             num += 1
+            address_index += 1
 
         except (error.TestFail, OSError):
             for se in sessions: