From mboxrd@z Thu Jan 1 00:00:00 1970 From: 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> Cc: lmr@redhat.com, Amos Kong To: autotest@test.kernel.org, kvm@vger.kernel.org Return-path: 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 Sender: kvm-owner@vger.kernel.org List-ID: 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() -- 1.5.5.6