• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import logging, re, utils
2from autotest_lib.client.bin import test
3from autotest_lib.client.common_lib import error
4
5class network_NegotiatedLANSpeed(test.test):
6    version = 1
7
8
9    def run_once(self, iface_name = 'eth0'):
10        # bring up the interface if its not already up
11        if not self.iface_up(iface_name):
12            utils.system('ifconfig %s up' % iface_name)
13            if not self.iface_up(iface_name):
14                raise error.TestFail('interface failed to come up')
15        # confirm negotiated bandwidth is acceptable
16        if not int(self.get_speed(iface_name)) >= 1000:
17            raise error.TestFail('interface failed to negotiate at 1000Mbps')
18
19
20    def iface_up(self, name):
21        try:
22            out = utils.system_output('ifconfig %s' % name)
23        except error.CmdError, e:
24            logging.info(e)
25            raise error.TestFail('test interface not found')
26        match = re.search('UP', out, re.S)
27        return match
28
29
30    def get_speed(self, name):
31        try:
32            out = utils.system_output('ethtool %s | grep Speed | \
33                sed s/^.*:.// | sed s/M.*$//' % name)
34        except error.CmdError, e:
35            logging.info(e)
36            raise error.TestFail('unable to determine negotiated link speed')
37        return out
38