| OLD | NEW |
| 1 # -*- coding: utf-8 -*- | 1 # -*- coding: utf-8 -*- |
| 2 # | 2 # |
| 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 4 # Use of this source code is governed by a BSD-style license that can be | 4 # Use of this source code is governed by a BSD-style license that can be |
| 5 # found in the LICENSE file. | 5 # found in the LICENSE file. |
| 6 | 6 |
| 7 | 7 |
| 8 # DESCRIPTION : | 8 # DESCRIPTION : |
| 9 # | 9 # |
| 10 # This is a factory test to test the LEDs (wifi, battery, etc). | 10 # This is a factory test to test the LEDs (wifi, battery, etc). |
| 11 | 11 |
| 12 | 12 |
| 13 import cairo | 13 import cairo |
| 14 import gtk | 14 import gtk |
| 15 import pango | 15 import pango |
| 16 import os | 16 import os |
| 17 import subprocess | 17 import subprocess |
| 18 import sys | 18 import sys |
| 19 import re |
| 19 | 20 |
| 20 from cmath import pi | 21 from cmath import pi |
| 21 from gtk import gdk | 22 from gtk import gdk |
| 22 | 23 |
| 23 from autotest_lib.client.bin import factory | 24 from autotest_lib.client.bin import factory |
| 24 from autotest_lib.client.bin import factory_ui_lib as ful | 25 from autotest_lib.client.bin import factory_ui_lib as ful |
| 25 from autotest_lib.client.bin import test | 26 from autotest_lib.client.bin import test |
| 27 from autotest_lib.client.bin import utils |
| 26 from autotest_lib.client.common_lib import error | 28 from autotest_lib.client.common_lib import error |
| 27 | 29 |
| 28 | 30 |
| 29 _LABEL_STATUS_SIZE = (140, 30) | 31 _LABEL_STATUS_SIZE = (140, 30) |
| 30 _LABEL_FONT = pango.FontDescription('courier new condensed 16') | 32 _LABEL_FONT = pango.FontDescription('courier new condensed 16') |
| 31 _LABEL_FG = gtk.gdk.color_parse('light green') | 33 _LABEL_FG = gtk.gdk.color_parse('light green') |
| 32 _LABEL_UNTESTED_FG = gtk.gdk.color_parse('grey40') | 34 _LABEL_UNTESTED_FG = gtk.gdk.color_parse('grey40') |
| 33 | 35 |
| 34 _PATTERN_LABEL_STR = 'pattern / 圖樣: ' | 36 _PATTERN_LABEL_STR = 'pattern / 圖樣: ' |
| 35 | 37 |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 elif self._current_pattern.startswith("shift") and \ | 167 elif self._current_pattern.startswith("shift") and \ |
| 166 event.keyval == gtk.keysyms.Shift_L: | 168 event.keyval == gtk.keysyms.Shift_L: |
| 167 self._shift_cnt += 1 | 169 self._shift_cnt += 1 |
| 168 self._pattern_da.queue_draw() | 170 self._pattern_da.queue_draw() |
| 169 return True | 171 return True |
| 170 | 172 |
| 171 def register_callbacks(self, window): | 173 def register_callbacks(self, window): |
| 172 window.connect('key-release-event', self.key_release_callback) | 174 window.connect('key-release-event', self.key_release_callback) |
| 173 window.add_events(gdk.KEY_RELEASE_MASK) | 175 window.add_events(gdk.KEY_RELEASE_MASK) |
| 174 | 176 |
| 177 def _get_embedded_controller_vendor(self): |
| 178 # example output of superiotool: |
| 179 # Found Nuvoton WPCE775x (id=0x05, rev=0x02) at 0x2e |
| 180 re_vendor = re.compile(r'Found (\w*)') |
| 181 vendor = [] |
| 182 res = utils.system_output('superiotool', ignore_status=True).split('\n') |
| 183 for line in res: |
| 184 match = re_vendor.search(line) |
| 185 if match: |
| 186 vendor.append(match.group(1)) |
| 187 return vendor |
| 188 |
| 175 def run_once(self, led_ctl_path=None): | 189 def run_once(self, led_ctl_path=None): |
| 176 | 190 |
| 177 factory.log('%s run_once' % self.__class__) | 191 factory.log('%s run_once' % self.__class__) |
| 178 | 192 |
| 193 ec_vendor = self._get_embedded_controller_vendor() |
| 194 if len(ec_vendor) == 0: |
| 195 raise error.TestNAError('No embedded controller vendor found') |
| 196 if 'Nuvoton' not in ec_vendor: |
| 197 raise error.TestNAError('Currently not supported embedded controller
s: %s' % |
| 198 ', '.join(ec_vendor)) |
| 199 |
| 179 self._led_ctl_path = led_ctl_path | 200 self._led_ctl_path = led_ctl_path |
| 180 if not os.path.exists(self._led_ctl_path): | 201 if not os.path.exists(self._led_ctl_path): |
| 181 raise error.TestNAError('Command %s does not exist' % | 202 raise error.TestNAError('Command %s does not exist' % |
| 182 self._led_ctl_path) | 203 self._led_ctl_path) |
| 183 | 204 |
| 184 self._shift_color = ful.BLACK | 205 self._shift_color = ful.BLACK |
| 185 self._shift_cnt = 0 | 206 self._shift_cnt = 0 |
| 186 | 207 |
| 187 os.chdir(self.srcdir) | 208 os.chdir(self.srcdir) |
| 188 try: | 209 try: |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 cleanup_callback=self.quit) | 256 cleanup_callback=self.quit) |
| 236 | 257 |
| 237 failed_set = set(name for name, status in self._status_map.items() | 258 failed_set = set(name for name, status in self._status_map.items() |
| 238 if status is not ful.PASSED) | 259 if status is not ful.PASSED) |
| 239 if failed_set: | 260 if failed_set: |
| 240 raise error.TestFail('Some patterns failed\n' \ | 261 raise error.TestFail('Some patterns failed\n' \ |
| 241 '以下圖樣測試未通過: %s' % | 262 '以下圖樣測試未通過: %s' % |
| 242 ', '.join(failed_set)) | 263 ', '.join(failed_set)) |
| 243 | 264 |
| 244 factory.log('%s run_once finished' % self.__class__) | 265 factory.log('%s run_once finished' % self.__class__) |
| OLD | NEW |