[PATCH 2/2] KSM-test: Test 802.1Q vlan of nic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

The subnet of vlan can be setup in configure file.

Signed-off-by: Amos Kong <akong@xxxxxxxxxx>
---
 client/tests/kvm/kvm_tests.cfg.sample |   12 ++++++
 client/tests/kvm/tests/vlan_tag.py    |   68 +++++++++++++++++++++++++++++++++
 2 files changed, 80 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 573206c..7f9512a 100644
--- a/client/tests/kvm/kvm_tests.cfg.sample
+++ b/client/tests/kvm/kvm_tests.cfg.sample
@@ -157,6 +157,18 @@ variants:
         used_cpus = 5
         used_mem = 2560
 
+    - vlan_tag:  install setup
+        type = vlan_tag
+        # subnet2 should not be used by host
+        subnet2 = 192.168.123
+        vlans = "10 20"
+        nic_mode = tap
+        vms += " vm2"
+        extra_params_vm1 += " -snapshot"
+        extra_params_vm2 += " -snapshot"
+        kill_vm_gracefully_vm2 = no
+        address_index_vm2 = 1
+
     - autoit:       install setup
         type = autoit
         autoit_binary = D:\AutoIt3.exe
diff --git a/client/tests/kvm/tests/vlan_tag.py b/client/tests/kvm/tests/vlan_tag.py
new file mode 100644
index 0000000..ada919f
--- /dev/null
+++ b/client/tests/kvm/tests/vlan_tag.py
@@ -0,0 +1,68 @@
+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, params.get("main_vm")))
+    vm.append(kvm_test_utils.get_living_vm(env, "vm2"))
+
+    if not vm[1].create():
+        raise error.TestError("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"
+        # 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 -I eth0.%s %s.12" % (vlans[0], 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 -I eth0.%s %s.12" % (vlans[0], 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].get_command_status("vconfig rem eth0.%s" % vlans[0])
+            session[i].close()
-- 
1.5.5.6


--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux