kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dor Laor <dlaor@redhat.com>
To: Amos Kong <akong@redhat.com>
Cc: Lucas Meneghel Rodrigues <lmr@redhat.com>,
	autotest@test.kernel.org, kvm@vger.kernel.org
Subject: Re: [Autotest] [PATCH] Test 802.1Q vlan of nic
Date: Mon, 19 Oct 2009 10:22:21 +0200	[thread overview]
Message-ID: <4ADC21BD.5080304@redhat.com> (raw)
In-Reply-To: <20091015094852.GA8640@dhcp-66-70-48.nay.redhat.com>

On 10/15/2009 11:48 AM, Amos Kong wrote:
>
> Test 802.1Q vlan of nic, config it by vconfig command.
>    1) Create two VMs
>    2) Setup guests in different vlan by vconfig and test communication by ping
>       using hard-coded ip address
>    3) Setup guests in same vlan and test communication by ping
>    4) Recover the vlan config
>
> Signed-off-by: Amos Kong<akong@redhat.com>
> ---
>   client/tests/kvm/kvm_tests.cfg.sample |    6 +++
>   client/tests/kvm/tests/vlan_tag.py    |   73 +++++++++++++++++++++++++++++++++
>   2 files changed, 79 insertions(+), 0 deletions(-)
>   mode change 100644 =>  100755 client/tests/kvm/scripts/qemu-ifup

In general the above should come as an independent patch.

>   create mode 100644 client/tests/kvm/tests/vlan_tag.py
>
> diff --git a/client/tests/kvm/kvm_tests.cfg.sample b/client/tests/kvm/kvm_tests.cfg.sample
> index 9ccc9b5..4e47767 100644
> --- a/client/tests/kvm/kvm_tests.cfg.sample
> +++ b/client/tests/kvm/kvm_tests.cfg.sample
> @@ -166,6 +166,12 @@ variants:
>           used_cpus = 5
>           used_mem = 2560
>
> +    - vlan_tag:  install setup
> +        type = vlan_tag
> +        subnet2 = 192.168.123
> +        vlans = "10 20"

If we want to be fanatic and safe we should dynamically choose subnet 
and vlans numbers that are not used on the host instead of hard code it.

> +        nic_mode = tap
> +        nic_model = e1000

Why only e1000? Let's test virtio and rtl8139 as well. Can't you inherit 
the nic model from the config?

>
>       - autoit:       install setup
>           type = autoit
> diff --git a/client/tests/kvm/scripts/qemu-ifup b/client/tests/kvm/scripts/qemu-ifup
> old mode 100644
> new mode 100755
> diff --git a/client/tests/kvm/tests/vlan_tag.py b/client/tests/kvm/tests/vlan_tag.py
> new file mode 100644
> index 0000000..15e763f
> --- /dev/null
> +++ b/client/tests/kvm/tests/vlan_tag.py
> @@ -0,0 +1,73 @@
> +import logging, time
> +from autotest_lib.client.common_lib import error
> +import kvm_subprocess, kvm_test_utils, kvm_utils
> +
> +def run_vlan_tag(test, params, env):
> +    """
> +    Test 802.1Q vlan of nic, config it by vconfig command.
> +
> +    1) Create two VMs
> +    2) Setup guests in different vlan by vconfig and test communication by ping
> +       using hard-coded ip address
> +    3) Setup guests in same vlan and test communication by ping
> +    4) Recover the vlan config
> +
> +    @param test: Kvm test object
> +    @param params: Dictionary with the test parameters.
> +    @param env: Dictionary with test environment.
> +    """
> +
> +    vm = []
> +    session = []
> +    subnet2 = params.get("subnet2")
> +    vlans = params.get("vlans").split()
> +
> +    vm.append(kvm_test_utils.get_living_vm(env, "%s" % params.get("main_vm")))
> +
> +    params_vm2 = params.copy()
> +    params_vm2['image_snapshot'] = "yes"
> +    params_vm2['kill_vm_gracefully'] = "no"
> +    params_vm2["address_index"] = int(params.get("address_index", 0))+1
> +    vm.append(vm[0].clone("vm2", params_vm2))
> +    kvm_utils.env_register_vm(env, "vm2", vm[1])
> +    if not vm[1].create():
> +        raise error.TestError("VM 1 create faild")


The whole 7-8 lines above should be grouped as a function to clone 
existing VM. It should be part of kvm autotest infrastructure.

Besides that, it looks good.

> +
> +    for i in range(2):
> +        session.append(kvm_test_utils.wait_for_login(vm[i]))
> +
> +    try:
> +        vconfig_cmd = "vconfig add eth0 %s;ifconfig eth0.%s %s.%s"
> +        # Attempt to configure IPs for the VMs and record the results in
> +        # boolean variables
> +        # Make vm1 and vm2 in the different vlan
> +
> +        ip_config_vm1_ok = (session[0].get_command_status(vconfig_cmd
> +                                   % (vlans[0], vlans[0], subnet2, "11")) == 0)
> +        ip_config_vm2_ok = (session[1].get_command_status(vconfig_cmd
> +                                   % (vlans[1], vlans[1], subnet2, "12")) == 0)
> +        if not ip_config_vm1_ok or not ip_config_vm2_ok:
> +            raise error.TestError, "Fail to config VMs ip address"
> +        ping_diff_vlan_ok = (session[0].get_command_status(
> +                             "ping -c 2 %s.12" % subnet2) == 0)
> +
> +        if ping_diff_vlan_ok:
> +            raise error.TestFail("VM 2 is unexpectedly pingable in different "
> +                                 "vlan")
> +        # Make vm2 in the same vlan with vm1
> +        vlan_config_vm2_ok = (session[1].get_command_status(
> +                              "vconfig rem eth0.%s;vconfig add eth0 %s;"
> +                              "ifconfig eth0.%s %s.12" %
> +                              (vlans[1], vlans[0], vlans[0], subnet2)) == 0)
> +        if not vlan_config_vm2_ok:
> +            raise error.TestError, "Fail to config ip address of VM 2"
> +
> +        ping_same_vlan_ok = (session[0].get_command_status(
> +                             "ping -c 2 %s.12" % subnet2) == 0)
> +        if not ping_same_vlan_ok:
> +            raise error.TestFail("Fail to ping the guest in same vlan")
> +    finally:
> +        # Clean the vlan config
> +        for i in range(2):
> +            session[i].sendline("vconfig rem eth0.%s" % vlans[0])
> +            session[i].close()


  reply	other threads:[~2009-10-19  8:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-23 11:19 [PATCH] Test 802.1Q vlan of nic Amos Kong
2009-10-14 10:51 ` [Autotest] " Lucas Meneghel Rodrigues
2009-10-15  9:48   ` Amos Kong
2009-10-19  8:22     ` Dor Laor [this message]
2009-10-21 10:04       ` Amos Kong
     [not found] <301351519.552421256044394416.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-10-20 13:19 ` Michael Goldish
2009-10-20 13:38   ` Lucas Meneghel Rodrigues
2009-10-21 10:37   ` Amos Kong
2009-10-21 13:46     ` Uri Lublin
2009-10-21 15:49       ` Dor Laor
2009-10-27  4:10     ` Amos Kong
     [not found] <702727267.642641256125764995.JavaMail.root@zmail05.collab.prod.int.phx2.redhat.com>
2009-10-21 11:56 ` Michael Goldish

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4ADC21BD.5080304@redhat.com \
    --to=dlaor@redhat.com \
    --cc=akong@redhat.com \
    --cc=autotest@test.kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=lmr@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).