| OLD | NEW |
| 1 import logging, os, re | 1 import logging, os, re |
| 2 from autotest_lib.client.common_lib import error | 2 from autotest_lib.client.common_lib import error |
| 3 from autotest_lib.client.bin import utils | 3 from autotest_lib.client.bin import utils |
| 4 import kvm_test_utils, kvm_subprocess | 4 from autotest_lib.client.virt import virt_test_utils, aexpect |
| 5 | 5 |
| 6 | 6 |
| 7 def run_multicast(test, params, env): | 7 def run_multicast(test, params, env): |
| 8 """ | 8 """ |
| 9 Test multicast function of nic (rtl8139/e1000/virtio) | 9 Test multicast function of nic (rtl8139/e1000/virtio) |
| 10 | 10 |
| 11 1) Create a VM. | 11 1) Create a VM. |
| 12 2) Join guest into multicast groups. | 12 2) Join guest into multicast groups. |
| 13 3) Ping multicast addresses on host. | 13 3) Ping multicast addresses on host. |
| 14 4) Flood ping test with different size of packets. | 14 4) Flood ping test with different size of packets. |
| 15 5) Final ping test and check if lose packet. | 15 5) Final ping test and check if lose packet. |
| 16 | 16 |
| 17 @param test: KVM test object. | 17 @param test: KVM test object. |
| 18 @param params: Dictionary with the test parameters. | 18 @param params: Dictionary with the test parameters. |
| 19 @param env: Dictionary with test environment. | 19 @param env: Dictionary with test environment. |
| 20 """ | 20 """ |
| 21 vm = env.get_vm(params["main_vm"]) | 21 vm = env.get_vm(params["main_vm"]) |
| 22 vm.verify_alive() | 22 vm.verify_alive() |
| 23 session = vm.wait_for_login(timeout=int(params.get("login_timeout", 360))) | 23 session = vm.wait_for_login(timeout=int(params.get("login_timeout", 360))) |
| 24 | 24 |
| 25 def run_guest(cmd): | 25 def run_guest(cmd): |
| 26 try: | 26 try: |
| 27 session.cmd(cmd) | 27 session.cmd(cmd) |
| 28 except kvm_subprocess.ShellError, e: | 28 except aexpect.ShellError, e: |
| 29 logging.warn(e) | 29 logging.warn(e) |
| 30 | 30 |
| 31 def run_host_guest(cmd): | 31 def run_host_guest(cmd): |
| 32 run_guest(cmd) | 32 run_guest(cmd) |
| 33 utils.system(cmd, ignore_status=True) | 33 utils.system(cmd, ignore_status=True) |
| 34 | 34 |
| 35 # flush the firewall rules | 35 # flush the firewall rules |
| 36 cmd_flush = "iptables -F" | 36 cmd_flush = "iptables -F" |
| 37 cmd_selinux = ("if [ -e /selinux/enforce ]; then setenforce 0; " | 37 cmd_selinux = ("if [ -e /selinux/enforce ]; then setenforce 0; " |
| 38 "else echo 'no /selinux/enforce file present'; fi") | 38 "else echo 'no /selinux/enforce file present'; fi") |
| (...skipping 24 matching lines...) Expand all Loading... |
| 63 pid = re.findall("join_mcast_pid:(\d+)", output)[0] | 63 pid = re.findall("join_mcast_pid:(\d+)", output)[0] |
| 64 except IndexError: | 64 except IndexError: |
| 65 raise error.TestFail("Can't join multicast groups,output:%s" % output) | 65 raise error.TestFail("Can't join multicast groups,output:%s" % output) |
| 66 | 66 |
| 67 try: | 67 try: |
| 68 for i in range(mgroup_count): | 68 for i in range(mgroup_count): |
| 69 new_suffix = suffix + i | 69 new_suffix = suffix + i |
| 70 mcast = "%s.%d" % (prefix, new_suffix) | 70 mcast = "%s.%d" % (prefix, new_suffix) |
| 71 | 71 |
| 72 logging.info("Initial ping test, mcast: %s", mcast) | 72 logging.info("Initial ping test, mcast: %s", mcast) |
| 73 s, o = kvm_test_utils.ping(mcast, 10, interface=ifname, timeout=20) | 73 s, o = virt_test_utils.ping(mcast, 10, interface=ifname, timeout=20) |
| 74 if s != 0: | 74 if s != 0: |
| 75 raise error.TestFail(" Ping return non-zero value %s" % o) | 75 raise error.TestFail(" Ping return non-zero value %s" % o) |
| 76 | 76 |
| 77 logging.info("Flood ping test, mcast: %s", mcast) | 77 logging.info("Flood ping test, mcast: %s", mcast) |
| 78 kvm_test_utils.ping(mcast, None, interface=ifname, flood=True, | 78 virt_test_utils.ping(mcast, None, interface=ifname, flood=True, |
| 79 output_func=None, timeout=flood_minutes*60) | 79 output_func=None, timeout=flood_minutes*60) |
| 80 | 80 |
| 81 logging.info("Final ping test, mcast: %s", mcast) | 81 logging.info("Final ping test, mcast: %s", mcast) |
| 82 s, o = kvm_test_utils.ping(mcast, 10, interface=ifname, timeout=20) | 82 s, o = virt_test_utils.ping(mcast, 10, interface=ifname, timeout=20) |
| 83 if s != 0: | 83 if s != 0: |
| 84 raise error.TestFail("Ping failed, status: %s, output: %s" % | 84 raise error.TestFail("Ping failed, status: %s, output: %s" % |
| 85 (s, o)) | 85 (s, o)) |
| 86 | 86 |
| 87 finally: | 87 finally: |
| 88 logging.debug(session.cmd_output("ipmaddr show")) | 88 logging.debug(session.cmd_output("ipmaddr show")) |
| 89 session.cmd_output("kill -s SIGCONT %s" % pid) | 89 session.cmd_output("kill -s SIGCONT %s" % pid) |
| 90 session.close() | 90 session.close() |
| OLD | NEW |