Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(715)

Unified Diff: client/tests/kvm/tests/nic_bonding.py

Issue 6551020: Merge remote branch 'autotest-upstream/master' into try-box1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: patch Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « client/tests/kvm/tests/netperf.py ('k') | client/tests/kvm/tests/nic_hotplug.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: client/tests/kvm/tests/nic_bonding.py
diff --git a/client/tests/kvm/tests/nic_bonding.py b/client/tests/kvm/tests/nic_bonding.py
index edbf9164d771e7d3d93e7aea432469ee75c171c4..1d53e0eee79bb1f627a98791037888f1087ab1ee 100644
--- a/client/tests/kvm/tests/nic_bonding.py
+++ b/client/tests/kvm/tests/nic_bonding.py
@@ -1,6 +1,6 @@
import logging, time, threading
from autotest_lib.client.tests.kvm.tests import file_transfer
-import kvm_utils
+import kvm_utils, kvm_test_utils
def run_nic_bonding(test, params, env):
@@ -17,39 +17,48 @@ def run_nic_bonding(test, params, env):
@param params: Dictionary with the test parameters.
@param env: Dictionary with test environment.
"""
- def control_link_loop(vm, termination_event):
- logging.info("Repeatedly put down/up interfaces by set_link")
- while True:
- for i in range(len(params.get("nics").split())):
- linkname = "%s.%s" % (params.get("nic_model"), i)
- cmd = "set_link %s down" % linkname
- vm.monitor.cmd(cmd)
- time.sleep(1)
- cmd = "set_link %s up" % linkname
- vm.monitor.cmd(cmd)
- if termination_event.isSet():
- break
-
timeout = int(params.get("login_timeout", 1200))
vm = env.get_vm(params["main_vm"])
vm.verify_alive()
session_serial = vm.wait_for_serial_login(timeout=timeout)
- script_path = kvm_utils.get_path(test.bindir,
- "scripts/nic_bonding_guest.py")
- vm.copy_files_to(script_path, "/tmp/nic_bonding_guest.py")
- cmd = "python /tmp/nic_bonding_guest.py %s" % vm.get_mac_address()
- session_serial.cmd(cmd)
-
- termination_event = threading.Event()
- t = threading.Thread(target=control_link_loop,
- args=(vm, termination_event))
+
+ # get params of bonding
+ modprobe_cmd = "modprobe bonding"
+ bonding_params = params.get("bonding_params")
+ if bonding_params:
+ modprobe_cmd += " %s" % bonding_params
+ session_serial.cmd(modprobe_cmd)
+
+ session_serial.cmd("ifconfig bond0 up")
+ ifnames = [kvm_test_utils.get_linux_ifname(session_serial,
+ vm.get_mac_address(vlan))
+ for vlan, nic in enumerate(params.get("nics").split())]
+ setup_cmd = "ifenslave bond0 " + " ".join(ifnames)
+ session_serial.cmd(setup_cmd)
+ session_serial.cmd("dhclient bond0")
+
try:
- logging.info("Do some basic test before testing high availability")
- file_transfer.run_file_transfer(test, params, env)
- t.start()
- logging.info("Do file transfer testing")
+ logging.info("Test file transfering:")
file_transfer.run_file_transfer(test, params, env)
+
+ logging.info("Failover test with file transfer")
+ transfer_thread = kvm_utils.Thread(file_transfer.run_file_transfer,
+ (test, params, env))
+ try:
+ transfer_thread.start()
+ while transfer_thread.isAlive():
+ for vlan, nic in enumerate(params.get("nics").split()):
+ device_id = vm.get_peer(vm.netdev_id[vlan])
+ vm.monitor.cmd("set_link %s down" % device_id)
+ time.sleep(1)
+ vm.monitor.cmd("set_link %s up" % device_id)
+ except:
+ transfer_thread.join(suppress_exception=True)
+ raise
+ else:
+ transfer_thread.join()
finally:
- termination_event.set()
- t.join(10)
- session_serial.close()
+ session_serial.sendline("ifenslave -d bond0 " + " ".join(ifnames))
+ session_serial.sendline("kill -9 `pgrep dhclient`")
+
+
« no previous file with comments | « client/tests/kvm/tests/netperf.py ('k') | client/tests/kvm/tests/nic_hotplug.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698