@@ -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
new file mode 100644
@@ -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()