| Index: client/tests/kvm/tests/nic_hotplug.py
|
| diff --git a/client/tests/kvm/tests/nic_hotplug.py b/client/tests/kvm/tests/nic_hotplug.py
|
| deleted file mode 100644
|
| index edfa980a48bf40fac626b47cb294b65d27ea2bee..0000000000000000000000000000000000000000
|
| --- a/client/tests/kvm/tests/nic_hotplug.py
|
| +++ /dev/null
|
| @@ -1,143 +0,0 @@
|
| -import logging, os, commands, re, time
|
| -from autotest_lib.client.common_lib import error
|
| -import kvm_subprocess, kvm_test_utils, kvm_utils, kvm_vm
|
| -
|
| -
|
| -def run_nic_hotplug(test, params, env):
|
| - """
|
| - Test hotplug of NIC devices
|
| -
|
| - 1) Boot up guest with one nic
|
| - 2) Add a host network device through monitor cmd and check if it's added
|
| - 3) Add nic device through monitor cmd and check if it's added
|
| - 4) Check if new interface gets ip address
|
| - 5) Disable primary link of guest
|
| - 6) Ping guest new ip from host
|
| - 7) Delete nic device and netdev
|
| - 8) Re-enable primary link of guest
|
| -
|
| - @param test: KVM test object.
|
| - @param params: Dictionary with the test parameters.
|
| - @param env: Dictionary with test environment.
|
| - """
|
| - vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
|
| - timeout = int(params.get("login_timeout", 360))
|
| - guest_delay = int(params.get("guest_delay", 20))
|
| - session_serial = kvm_test_utils.wait_for_login(vm, timeout=timeout,
|
| - serial=True)
|
| -
|
| - # Modprobe the module if specified in config file
|
| - module = params.get("modprobe_module")
|
| - if module:
|
| - session_serial.get_command_output("modprobe %s" % module)
|
| -
|
| - def netdev_add(vm):
|
| - netdev_id = kvm_utils.generate_random_id()
|
| - attach_cmd = ("netdev_add tap,id=%s,script=%s" %
|
| - (netdev_id, kvm_utils.get_path(vm.root_dir,
|
| - params.get("nic_script"))))
|
| - netdev_extra_params = params.get("netdev_extra_params")
|
| - if netdev_extra_params:
|
| - attach_cmd += ",%s" % netdev_extra_params
|
| - logging.info("Adding netdev through %s" % attach_cmd)
|
| - vm.monitor.cmd(attach_cmd)
|
| -
|
| - network = vm.monitor.info("network")
|
| - if netdev_id not in network:
|
| - logging.error(network)
|
| - raise error.TestError("Fail to add netdev: %s" % netdev_id)
|
| - else:
|
| - return netdev_id
|
| -
|
| - def netdev_del(vm, id):
|
| - vm.monitor.cmd("netdev_del %s" % id)
|
| -
|
| - network = vm.monitor.info("network")
|
| - if id in network:
|
| - logging.error(network)
|
| - raise error.TestError("Fail to remove netdev %s" % id)
|
| -
|
| - def nic_add(vm, model, netdev_id, mac):
|
| - """
|
| - Add a nic to virtual machine
|
| -
|
| - @vm: VM object
|
| - @model: nic model
|
| - @netdev_id: id of netdev
|
| - @mac: Mac address of new nic
|
| - """
|
| - id = kvm_utils.generate_random_id()
|
| - if model=="virtio": model="virtio-net-pci"
|
| - device_add_cmd = "device_add %s,netdev=%s,mac=%s,id=%s" % (model,
|
| - netdev_id,
|
| - mac, id)
|
| - logging.info("Adding nic through %s" % device_add_cmd)
|
| - vm.monitor.cmd(device_add_cmd)
|
| -
|
| - qdev = vm.monitor.info("qtree")
|
| - if id not in qdev:
|
| - logging.error(qdev)
|
| - raise error.TestFail("Device %s was not plugged into qdev"
|
| - "tree" % id)
|
| - else:
|
| - return id
|
| -
|
| - def nic_del(vm, id, wait=True):
|
| - """
|
| - Remove the nic from pci tree.
|
| -
|
| - @vm: VM object
|
| - @id: the nic id
|
| - @wait: Whether need to wait for the guest to unplug the device
|
| - """
|
| - nic_del_cmd = "device_del %s" % id
|
| - vm.monitor.cmd(nic_del_cmd)
|
| - if wait:
|
| - logging.info("waiting for the guest to finish the unplug")
|
| - if not kvm_utils.wait_for(lambda: id not in
|
| - vm.monitor.info("qtree"),
|
| - guest_delay, 5 ,1):
|
| - logging.error(vm.monitor.info("qtree"))
|
| - raise error.TestError("Device is not unplugged by "
|
| - "guest, please check whether the "
|
| - "hotplug module was loaded in guest");
|
| -
|
| - logging.info("Attach a virtio nic to vm")
|
| - mac = kvm_utils.generate_mac_address(vm.instance, 1)
|
| - if not mac:
|
| - mac = "00:00:02:00:00:02"
|
| - netdev_id = netdev_add(vm)
|
| - device_id = nic_add(vm, "virtio", netdev_id, mac)
|
| -
|
| - if "Win" not in params.get("guest_name", ""):
|
| - session_serial.sendline("dhclient %s &" %
|
| - kvm_test_utils.get_linux_ifname(session_serial, mac))
|
| -
|
| - logging.info("Shutting down the primary link")
|
| - vm.monitor.cmd("set_link %s down" % vm.netdev_id[0])
|
| -
|
| - try:
|
| - logging.info("Waiting for new nic's ip address acquisition...")
|
| - if not kvm_utils.wait_for(lambda: (vm.address_cache.get(mac) is
|
| - not None), 10, 1):
|
| - raise error.TestFail("Could not get ip address of new nic")
|
| - ip = vm.address_cache.get(mac)
|
| - if not kvm_utils.verify_ip_address_ownership(ip, mac):
|
| - raise error.TestFail("Could not verify the ip address of new nic")
|
| - else:
|
| - logging.info("Got the ip address of new nic: %s" % ip)
|
| -
|
| - logging.info("Ping test the new nic ...")
|
| - s, o = kvm_test_utils.ping(ip, 100)
|
| - if s != 0:
|
| - logging.error(o)
|
| - raise error.TestFail("New nic failed ping test")
|
| -
|
| - logging.info("Detaching a virtio nic from vm")
|
| - nic_del(vm, device_id)
|
| - netdev_del(vm,netdev_id)
|
| -
|
| - finally:
|
| - vm.free_mac_address(1)
|
| - logging.info("Re-enabling the primary link")
|
| - vm.monitor.cmd("set_link %s up" % vm.netdev_id[0])
|
|
|