From patchwork Wed Sep 23 11:19:00 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amos Kong X-Patchwork-Id: 49518 Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by demeter.kernel.org (8.14.2/8.14.2) with ESMTP id n8NBKgio022004 for ; Wed, 23 Sep 2009 11:20:42 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751998AbZIWLUe (ORCPT ); Wed, 23 Sep 2009 07:20:34 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752077AbZIWLUe (ORCPT ); Wed, 23 Sep 2009 07:20:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:3266 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751645AbZIWLUe (ORCPT ); Wed, 23 Sep 2009 07:20:34 -0400 Received: from int-mx04.intmail.prod.int.phx2.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.17]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n8NBKawk031113; Wed, 23 Sep 2009 07:20:37 -0400 Received: from localhost.localdomain (dhcp-65-140.nay.redhat.com [10.66.65.140]) by int-mx04.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id n8NBKYXM003731; Wed, 23 Sep 2009 07:20:34 -0400 From: Amos Kong To: autotest@test.kernel.org, kvm@vger.kernel.org Cc: lmr@redhat.com, Amos Kong Subject: [PATCH] Test 802.1Q vlan of nic Date: Wed, 23 Sep 2009 19:19:00 +0800 Message-Id: <1253704740-26370-1-git-send-email-akong@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.17 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org 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 --- client/tests/kvm/kvm_tests.cfg.sample | 6 +++ client/tests/kvm/tests/vlan_tag.py | 66 +++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 0 deletions(-) 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 285a38f..5a3f97d 100644 --- a/client/tests/kvm/kvm_tests.cfg.sample +++ b/client/tests/kvm/kvm_tests.cfg.sample @@ -145,6 +145,12 @@ variants: kill_vm = yes kill_vm_gracefully = no + - vlan_tag: install setup + type = vlan_tag + subnet2 = 192.168.123 + vlans = "10 20" + nic_mode = tap + nic_model = e1000 # NICs variants: diff --git a/client/tests/kvm/tests/vlan_tag.py b/client/tests/kvm/tests/vlan_tag.py new file mode 100644 index 0000000..2904276 --- /dev/null +++ b/client/tests/kvm/tests/vlan_tag.py @@ -0,0 +1,66 @@ +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 'vm[1]' create faild" + + 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" + if session[0].get_command_status(vconfig_cmd % (vlans[0], + vlans[0], + subnet2, + "11")) != 0 or \ + session[1].get_command_status(vconfig_cmd % (vlans[1], + vlans[1], + subnet2, + "12")) != 0: + raise error.TestError, "Fail to config VMs ip address" + if session[0].get_command_status("ping -c 2 %s.12" % subnet2) == 0: + raise error.TestFail("Guest is unexpectedly pingable in different " + "vlan") + + if 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: + raise error.TestError, "Fail to config ip address of VM 'vm[1]'" + if session[0].get_command_status("ping -c 2 %s.12" % subnet2) != 0: + raise error.TestFail, "Fail to ping the guest in same vlan" + finally: + for i in range(2): + session[i].sendline("vconfig rem eth0.%s" % vlans[0]) + session[i].close()