| import logging, threading |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.client.bin import utils |
| from autotest_lib.client.virt.tests import file_transfer |
| from autotest_lib.client.virt import virt_test_utils, virt_utils |
| |
| |
| def run_nic_promisc(test, params, env): |
| """ |
| Test nic driver in promisc mode: |
| |
| 1) Boot up a VM. |
| 2) Repeatedly enable/disable promiscuous mode in guest. |
| 3) Transfer file from host to guest, and from guest to host in the same time |
| |
| @param test: KVM test object. |
| @param params: Dictionary with the test parameters. |
| @param env: Dictionary with test environment. |
| """ |
| vm = env.get_vm(params["main_vm"]) |
| vm.verify_alive() |
| timeout = int(params.get("login_timeout", 360)) |
| session_serial = vm.wait_for_serial_login(timeout=timeout) |
| |
| ethname = virt_test_utils.get_linux_ifname(session_serial, |
| vm.get_mac_address(0)) |
| |
| try: |
| transfer_thread = virt_utils.Thread(file_transfer.run_file_transfer, |
| (test, params, env)) |
| transfer_thread.start() |
| while transfer_thread.isAlive(): |
| session_serial.cmd("ip link set %s promisc on" % ethname) |
| session_serial.cmd("ip link set %s promisc off" % ethname) |
| except: |
| transfer_thread.join(suppress_exception=True) |
| raise |
| else: |
| transfer_thread.join() |