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

Side by Side Diff: client/virt/tests/mac_change.py

Issue 6883246: Merge autotest upstream from @5318 ~ @5336 (Closed) Base URL: ssh://gitrw.chromium.org:9222/autotest.git@master
Patch Set: patch Created 9 years, 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « client/virt/tests/linux_s3.py ('k') | client/virt/tests/multicast.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 import logging 1 import logging
2 from autotest_lib.client.common_lib import error 2 from autotest_lib.client.common_lib import error
3 import kvm_utils, kvm_test_utils 3 from autotest_lib.client.virt import virt_utils, virt_test_utils
4 4
5 5
6 def run_mac_change(test, params, env): 6 def run_mac_change(test, params, env):
7 """ 7 """
8 Change MAC address of guest. 8 Change MAC address of guest.
9 9
10 1) Get a new mac from pool, and the old mac addr of guest. 10 1) Get a new mac from pool, and the old mac addr of guest.
11 2) Set new mac in guest and regain new IP. 11 2) Set new mac in guest and regain new IP.
12 3) Re-log into guest with new MAC. 12 3) Re-log into guest with new MAC.
13 13
14 @param test: KVM test object. 14 @param test: KVM test object.
15 @param params: Dictionary with the test parameters. 15 @param params: Dictionary with the test parameters.
16 @param env: Dictionary with test environment. 16 @param env: Dictionary with test environment.
17 """ 17 """
18 vm = env.get_vm(params["main_vm"]) 18 vm = env.get_vm(params["main_vm"])
19 vm.verify_alive() 19 vm.verify_alive()
20 timeout = int(params.get("login_timeout", 360)) 20 timeout = int(params.get("login_timeout", 360))
21 session_serial = vm.wait_for_serial_login(timeout=timeout) 21 session_serial = vm.wait_for_serial_login(timeout=timeout)
22 # This session will be used to assess whether the IP change worked 22 # This session will be used to assess whether the IP change worked
23 session = vm.wait_for_login(timeout=timeout) 23 session = vm.wait_for_login(timeout=timeout)
24 old_mac = vm.get_mac_address(0) 24 old_mac = vm.get_mac_address(0)
25 while True: 25 while True:
26 vm.free_mac_address(0) 26 vm.free_mac_address(0)
27 new_mac = kvm_utils.generate_mac_address(vm.instance, 0) 27 new_mac = virt_utils.generate_mac_address(vm.instance, 0)
28 if old_mac != new_mac: 28 if old_mac != new_mac:
29 break 29 break
30 logging.info("The initial MAC address is %s", old_mac) 30 logging.info("The initial MAC address is %s", old_mac)
31 interface = kvm_test_utils.get_linux_ifname(session_serial, old_mac) 31 interface = virt_test_utils.get_linux_ifname(session_serial, old_mac)
32 # Start change MAC address 32 # Start change MAC address
33 logging.info("Changing MAC address to %s", new_mac) 33 logging.info("Changing MAC address to %s", new_mac)
34 change_cmd = ("ifconfig %s down && ifconfig %s hw ether %s && " 34 change_cmd = ("ifconfig %s down && ifconfig %s hw ether %s && "
35 "ifconfig %s up" % (interface, interface, new_mac, interface)) 35 "ifconfig %s up" % (interface, interface, new_mac, interface))
36 session_serial.cmd(change_cmd) 36 session_serial.cmd(change_cmd)
37 37
38 # Verify whether MAC address was changed to the new one 38 # Verify whether MAC address was changed to the new one
39 logging.info("Verifying the new mac address") 39 logging.info("Verifying the new mac address")
40 session_serial.cmd("ifconfig | grep -i %s" % new_mac) 40 session_serial.cmd("ifconfig | grep -i %s" % new_mac)
41 41
42 # Restart `dhclient' to regain IP for new mac address 42 # Restart `dhclient' to regain IP for new mac address
43 logging.info("Restart the network to gain new IP") 43 logging.info("Restart the network to gain new IP")
44 dhclient_cmd = "dhclient -r && dhclient %s" % interface 44 dhclient_cmd = "dhclient -r && dhclient %s" % interface
45 session_serial.sendline(dhclient_cmd) 45 session_serial.sendline(dhclient_cmd)
46 46
47 # Re-log into the guest after changing mac address 47 # Re-log into the guest after changing mac address
48 if kvm_utils.wait_for(session.is_responsive, 120, 20, 3): 48 if virt_utils.wait_for(session.is_responsive, 120, 20, 3):
49 # Just warning when failed to see the session become dead, 49 # Just warning when failed to see the session become dead,
50 # because there is a little chance the ip does not change. 50 # because there is a little chance the ip does not change.
51 logging.warn("The session is still responsive, settings may fail.") 51 logging.warn("The session is still responsive, settings may fail.")
52 session.close() 52 session.close()
53 53
54 # Re-log into guest and check if session is responsive 54 # Re-log into guest and check if session is responsive
55 logging.info("Re-log into the guest") 55 logging.info("Re-log into the guest")
56 session = vm.wait_for_login(timeout=timeout) 56 session = vm.wait_for_login(timeout=timeout)
57 if not session.is_responsive(): 57 if not session.is_responsive():
58 raise error.TestFail("The new session is not responsive.") 58 raise error.TestFail("The new session is not responsive.")
59 59
60 session.close() 60 session.close()
OLDNEW
« no previous file with comments | « client/virt/tests/linux_s3.py ('k') | client/virt/tests/multicast.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698