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

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

Issue 6246035: Merge remote branch 'cros/upstream' into master (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: patch Created 9 years, 11 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
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
new file mode 100644
index 0000000000000000000000000000000000000000..edbf9164d771e7d3d93e7aea432469ee75c171c4
--- /dev/null
+++ b/client/tests/kvm/tests/nic_bonding.py
@@ -0,0 +1,55 @@
+import logging, time, threading
+from autotest_lib.client.tests.kvm.tests import file_transfer
+import kvm_utils
+
+
+def run_nic_bonding(test, params, env):
+ """
+ Nic bonding test in guest.
+
+ 1) Start guest with four nic models.
+ 2) Setup bond0 in guest by script nic_bonding_guest.py.
+ 3) Execute file transfer test between guest and host.
+ 4) Repeatedly put down/up interfaces by set_link
+ 5) Execute file transfer test between guest and host.
+
+ @param test: Kvm test object.
+ @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))
+ 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")
+ file_transfer.run_file_transfer(test, params, env)
+ finally:
+ termination_event.set()
+ t.join(10)
+ session_serial.close()

Powered by Google App Engine
This is Rietveld 408576698