OLD | NEW |
---|---|
1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium 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 | 5 import logging |
6 import os | |
6 import re | 7 import re |
7 import time | 8 import time |
8 | 9 |
9 from devil.android import device_errors | 10 from devil.android import device_errors |
10 from devil.android import flag_changer | 11 from devil.android import flag_changer |
11 from devil.utils import reraiser_thread | 12 from devil.utils import reraiser_thread |
12 from pylib import valgrind_tools | 13 from pylib import valgrind_tools |
13 from pylib.base import base_test_result | 14 from pylib.base import base_test_result |
14 from pylib.local.device import local_device_test_run | 15 from pylib.local.device import local_device_test_run |
15 | 16 |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
179 if flags.remove: | 180 if flags.remove: |
180 display_name = '%s without {%s}' % (display_name, ' '.join(flags.remove)) | 181 display_name = '%s without {%s}' % (display_name, ' '.join(flags.remove)) |
181 return display_name | 182 return display_name |
182 | 183 |
183 #override | 184 #override |
184 def _RunTest(self, device, test): | 185 def _RunTest(self, device, test): |
185 extras = {} | 186 extras = {} |
186 | 187 |
187 flags = None | 188 flags = None |
188 test_timeout_scale = None | 189 test_timeout_scale = None |
190 if self._test_instance.coverage_directory: | |
191 coverage_basename = '%s.ec' % (test[0]['method'] | |
mikecase (-- gone --)
2016/05/20 20:15:18
not a huge fan of just naming this .ec file after
| |
192 if isinstance(test, list) else test['method']) | |
193 extras['coverage'] = 'true' | |
194 coverage_directory = os.path.join( | |
195 device.GetExternalStoragePath(), 'chrome', 'test', 'coverage') | |
196 coverage_device_file = os.path.join( | |
197 coverage_directory, coverage_basename) | |
198 extras['coverageFile'] = coverage_device_file | |
199 | |
189 if isinstance(test, list): | 200 if isinstance(test, list): |
190 if not self._test_instance.driver_apk: | 201 if not self._test_instance.driver_apk: |
191 raise Exception('driver_apk does not exist. ' | 202 raise Exception('driver_apk does not exist. ' |
192 'Please build it and try again.') | 203 'Please build it and try again.') |
193 | 204 |
194 def name_and_timeout(t): | 205 def name_and_timeout(t): |
195 n = self._GetTestName(t) | 206 n = self._GetTestName(t) |
196 i = self._GetTimeoutFromAnnotations(t['annotations'], n) | 207 i = self._GetTimeoutFromAnnotations(t['annotations'], n) |
197 return (n, i) | 208 return (n, i) |
198 | 209 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
272 self._test_instance.apk_under_test.GetPermissions() | 283 self._test_instance.apk_under_test.GetPermissions() |
273 if self._test_instance.apk_under_test | 284 if self._test_instance.apk_under_test |
274 else None) | 285 else None) |
275 device.ClearApplicationState(self._test_instance.package_info.package, | 286 device.ClearApplicationState(self._test_instance.package_info.package, |
276 permissions=permissions) | 287 permissions=permissions) |
277 | 288 |
278 else: | 289 else: |
279 logging.debug('raw output from %s:', test_display_name) | 290 logging.debug('raw output from %s:', test_display_name) |
280 for l in output: | 291 for l in output: |
281 logging.debug(' %s', l) | 292 logging.debug(' %s', l) |
282 | 293 if self._test_instance.coverage_directory: |
294 device.PullFile(coverage_directory, | |
295 self._test_instance.coverage_directory) | |
296 device.RunShellCommand('rm -f %s' % os.path.join(coverage_directory, | |
297 '*')) | |
283 return results | 298 return results |
284 | 299 |
285 #override | 300 #override |
286 def _ShouldShard(self): | 301 def _ShouldShard(self): |
287 return True | 302 return True |
288 | 303 |
289 @classmethod | 304 @classmethod |
290 def _GetTimeoutScaleFromAnnotations(cls, annotations): | 305 def _GetTimeoutScaleFromAnnotations(cls, annotations): |
291 try: | 306 try: |
292 return int(annotations.get('TimeoutScale', 1)) | 307 return int(annotations.get('TimeoutScale', 1)) |
293 except ValueError as e: | 308 except ValueError as e: |
294 logging.warning("Non-integer value of TimeoutScale ignored. (%s)", str(e)) | 309 logging.warning("Non-integer value of TimeoutScale ignored. (%s)", str(e)) |
295 return 1 | 310 return 1 |
296 | 311 |
297 @classmethod | 312 @classmethod |
298 def _GetTimeoutFromAnnotations(cls, annotations, test_name): | 313 def _GetTimeoutFromAnnotations(cls, annotations, test_name): |
299 for k, v in TIMEOUT_ANNOTATIONS: | 314 for k, v in TIMEOUT_ANNOTATIONS: |
300 if k in annotations: | 315 if k in annotations: |
301 timeout = v | 316 timeout = v |
302 break | 317 break |
303 else: | 318 else: |
304 logging.warning('Using default 1 minute timeout for %s', test_name) | 319 logging.warning('Using default 1 minute timeout for %s', test_name) |
305 timeout = 60 | 320 timeout = 60 |
306 | 321 |
307 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) | 322 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) |
308 | 323 |
309 return timeout | 324 return timeout |
310 | 325 |
OLD | NEW |