| OLD | NEW |
| 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import logging, os, pprint, re | 5 import logging, os, pprint, re |
| 6 from autotest_lib.client.bin import test, utils | 6 from autotest_lib.client.bin import test, utils |
| 7 from autotest_lib.client.common_lib import error | 7 from autotest_lib.client.common_lib import error |
| 8 | 8 |
| 9 | 9 |
| 10 class hardware_Components(test.test): | 10 class hardware_Components(test.test): |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 return part_id | 89 return part_id |
| 90 | 90 |
| 91 | 91 |
| 92 def get_part_id_ethernet(self): | 92 def get_part_id_ethernet(self): |
| 93 """ | 93 """ |
| 94 Returns a colon delimited string where the first section | 94 Returns a colon delimited string where the first section |
| 95 is the vendor id and the second section is the device id. | 95 is the vendor id and the second section is the device id. |
| 96 """ | 96 """ |
| 97 # Ethernet is optional so mark it as not present. A human | 97 # Ethernet is optional so mark it as not present. A human |
| 98 # operator needs to decide if this is acceptable or not. | 98 # operator needs to decide if this is acceptable or not. |
| 99 if not os.path.exists('/sys/class/net/eth0'): | 99 vendor_file = '/sys/class/net/eth0/device/vendor' |
| 100 return self._not_present | 100 part_file = '/sys/class/net/eth0/device/device' |
| 101 part_id = utils.read_one_line('/sys/class/net/eth0/device/device') | 101 if os.path.exists(part_file) and os.path.exists(vendor_file): |
| 102 vendor_id = utils.read_one_line('/sys/class/net/eth0/device/vendor') | 102 vendor_id = utils.read_one_line(vendor_file).replace('0x', '') |
| 103 return "%s:%s" % (vendor_id.replace('0x',''), part_id.replace('0x','')) | 103 part_id = utils.read_one_line(part_file).replace('0x', '') |
| 104 return "%s:%s" % (vendor_id, part_id) |
| 105 else: |
| 106 return self._not_present |
| 104 | 107 |
| 105 | 108 |
| 106 def get_part_id_flash_chip(self): | 109 def get_part_id_flash_chip(self): |
| 107 # example output: | 110 # example output: |
| 108 # Found chip "Winbond W25x16" (2048 KB, FWH) at physical address 0xfe | 111 # Found chip "Winbond W25x16" (2048 KB, FWH) at physical address 0xfe |
| 109 parts = [] | 112 parts = [] |
| 110 lines = utils.system_output('flashrom', ignore_status=True).split('\n') | 113 lines = utils.system_output('flashrom', ignore_status=True).split('\n') |
| 111 for line in lines: | 114 for line in lines: |
| 112 match = re.search(r'Found chip "(.*)" .* at physical address ', line) | 115 match = re.search(r'Found chip "(.*)" .* at physical address ', line) |
| 113 if match: | 116 if match: |
| (...skipping 28 matching lines...) Expand all Loading... |
| 142 if not self._approved.has_key(cid): | 145 if not self._approved.has_key(cid): |
| 143 raise error.TestFail('%s missing from database' % cid) | 146 raise error.TestFail('%s missing from database' % cid) |
| 144 | 147 |
| 145 approved_devices = self._approved[cid] | 148 approved_devices = self._approved[cid] |
| 146 if '*' in approved_devices: | 149 if '*' in approved_devices: |
| 147 self._system[cid] = [ '*' ] | 150 self._system[cid] = [ '*' ] |
| 148 return | 151 return |
| 149 | 152 |
| 150 for device in approved_devices: | 153 for device in approved_devices: |
| 151 try: | 154 try: |
| 152 utils.system(cmd % device) | 155 output = utils.system_output(cmd % device) |
| 153 self._system[cid] = [ device ] | 156 # If it shows something, means found. |
| 154 return | 157 if output: |
| 158 self._system[cid] = [ device ] |
| 159 return |
| 155 except: | 160 except: |
| 156 pass | 161 pass |
| 157 self._failures[cid] = [ 'No match' ] | 162 self._failures[cid] = [ 'No match' ] |
| 158 | 163 |
| 159 | 164 |
| 160 def get_vendor_id_touchpad(self): | 165 def get_vendor_id_touchpad(self): |
| 161 cmd = 'grep -i Touchpad /proc/bus/input/devices | sed s/.\*=//' | 166 cmd = 'grep -i Touchpad /proc/bus/input/devices | sed s/.\*=//' |
| 162 part_id = utils.system_output(cmd).strip('"') | 167 part_id = utils.system_output(cmd).strip('"') |
| 163 return part_id | 168 return part_id |
| 164 | 169 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 198 for cid in self._usb_cids: | 203 for cid in self._usb_cids: |
| 199 self.check_approved_part_id_existence(cid, type='usb') | 204 self.check_approved_part_id_existence(cid, type='usb') |
| 200 | 205 |
| 201 logging.debug('System: %s', self.pformat(self._system)) | 206 logging.debug('System: %s', self.pformat(self._system)) |
| 202 | 207 |
| 203 outdb = os.path.join(self.resultsdir, 'system_components') | 208 outdb = os.path.join(self.resultsdir, 'system_components') |
| 204 utils.open_write_close(outdb, self.pformat(self._system)) | 209 utils.open_write_close(outdb, self.pformat(self._system)) |
| 205 | 210 |
| 206 if self._failures: | 211 if self._failures: |
| 207 raise error.TestFail(self.pformat(self._failures)) | 212 raise error.TestFail(self.pformat(self._failures)) |
| OLD | NEW |