All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.