| import logging, re, utils |
| from autotest_lib.client.bin import test |
| from autotest_lib.client.common_lib import error |
| |
| class network_NegotiatedLANSpeed(test.test): |
| version = 1 |
| |
| |
| def run_once(self, iface_name = 'eth0'): |
| # bring up the interface if its not already up |
| if not self.iface_up(iface_name): |
| utils.system('ifconfig %s up' % iface_name) |
| if not self.iface_up(iface_name): |
| raise error.TestFail('interface failed to come up') |
| # confirm negotiated bandwidth is acceptable |
| if not int(self.get_speed(iface_name)) >= 1000: |
| raise error.TestFail('interface failed to negotiate at 1000Mbps') |
| |
| |
| def iface_up(self, name): |
| try: |
| out = utils.system_output('ifconfig %s' % name) |
| except error.CmdError, e: |
| logging.info(e) |
| raise error.TestFail('test interface not found') |
| match = re.search('UP', out, re.S) |
| return match |
| |
| |
| def get_speed(self, name): |
| try: |
| out = utils.system_output('ethtool %s | grep Speed | \ |
| sed s/^.*:.// | sed s/M.*$//' % name) |
| except error.CmdError, e: |
| logging.info(e) |
| raise error.TestFail('unable to determine negotiated link speed') |
| return out |