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 re | 6 import re |
7 import time | 7 import time |
8 | 8 |
9 from devil.android import device_errors | 9 from devil.android import device_errors |
10 from devil.utils import reraiser_thread | |
10 from pylib import flag_changer | 11 from pylib import flag_changer |
11 from pylib import valgrind_tools | 12 from pylib import valgrind_tools |
12 from pylib.base import base_test_result | 13 from pylib.base import base_test_result |
13 from pylib.local.device import local_device_test_run | 14 from pylib.local.device import local_device_test_run |
14 | 15 |
15 | 16 |
16 TIMEOUT_ANNOTATIONS = [ | 17 TIMEOUT_ANNOTATIONS = [ |
17 ('Manual', 10 * 60 * 60), | 18 ('Manual', 10 * 60 * 60), |
18 ('IntegrationTest', 30 * 60), | 19 ('IntegrationTest', 30 * 60), |
19 ('External', 10 * 60), | 20 ('External', 10 * 60), |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
60 if not d: | 61 if not d: |
61 return external_storage | 62 return external_storage |
62 elif isinstance(d, list): | 63 elif isinstance(d, list): |
63 return '/'.join(p if p else external_storage for p in d) | 64 return '/'.join(p if p else external_storage for p in d) |
64 else: | 65 else: |
65 return d | 66 return d |
66 | 67 |
67 @local_device_test_run.handle_shard_failures_with( | 68 @local_device_test_run.handle_shard_failures_with( |
68 self._env.BlacklistDevice) | 69 self._env.BlacklistDevice) |
69 def individual_device_set_up(dev, host_device_tuples): | 70 def individual_device_set_up(dev, host_device_tuples): |
70 dev.Install(self._test_instance.apk_under_test, | 71 def install_apk(): |
jbudorick
2016/02/09 23:32:32
nit through line 86: either
- no parameters on th
agrieve
2016/02/10 01:56:56
Done.
| |
71 permissions=self._test_instance.apk_under_test_permissions) | 72 if self._test_instance.apk_under_test_incremental_install_script: |
72 dev.Install(self._test_instance.test_apk, | 73 local_device_test_run.IncrementalInstall(dev, |
73 permissions=self._test_instance.test_permissions) | 74 self._test_instance.apk_under_test, |
74 for apk in self._test_instance.additional_apks: | 75 self._test_instance.apk_under_test_incremental_install_script) |
75 dev.Install(apk) | 76 else: |
77 dev.Install(self._test_instance.apk_under_test, | |
78 permissions=self._test_instance.apk_under_test.GetPermissions()) | |
76 | 79 |
77 external_storage = dev.GetExternalStoragePath() | 80 if self._test_instance.test_apk_incremental_install_script: |
78 host_device_tuples = [ | 81 local_device_test_run.IncrementalInstall(dev, |
79 (h, substitute_external_storage(d, external_storage)) | 82 self._test_instance.test_apk, |
80 for h, d in host_device_tuples] | 83 self._test_instance.test_apk_incremental_install_script) |
81 logging.info('instrumentation data deps:') | |
82 for h, d in host_device_tuples: | |
83 logging.info('%r -> %r', h, d) | |
84 dev.PushChangedFiles(host_device_tuples) | |
85 if self._test_instance.flags: | |
86 if not self._test_instance.package_info: | |
87 logging.error("Couldn't set flags: no package info") | |
88 elif not self._test_instance.package_info.cmdline_file: | |
89 logging.error("Couldn't set flags: no cmdline_file") | |
90 else: | 84 else: |
91 self._CreateFlagChangerIfNeeded(dev) | 85 dev.Install(self._test_instance.test_apk, |
92 logging.debug('Attempting to set flags: %r', | 86 permissions=self._test_instance.test_apk.GetPermissions()) |
93 self._test_instance.flags) | |
94 self._flag_changers[str(dev)].AddFlags(self._test_instance.flags) | |
95 | 87 |
96 valgrind_tools.SetChromeTimeoutScale( | 88 for apk in self._test_instance.additional_apks: |
97 dev, self._test_instance.timeout_scale) | 89 dev.Install(apk) |
90 | |
91 def push_test_data(): | |
92 external_storage = dev.GetExternalStoragePath() | |
93 host_device_tuples_substituted = [ | |
94 (h, substitute_external_storage(d, external_storage)) | |
95 for h, d in host_device_tuples] | |
96 logging.info('instrumentation data deps:') | |
97 for h, d in host_device_tuples_substituted: | |
98 logging.info('%r -> %r', h, d) | |
99 dev.PushChangedFiles(host_device_tuples_substituted) | |
100 | |
101 def create_flag_changer(): | |
102 if self._test_instance.flags: | |
103 if not self._test_instance.package_info: | |
104 logging.error("Couldn't set flags: no package info") | |
105 elif not self._test_instance.package_info.cmdline_file: | |
106 logging.error("Couldn't set flags: no cmdline_file") | |
107 else: | |
108 self._CreateFlagChangerIfNeeded(dev) | |
109 logging.debug('Attempting to set flags: %r', | |
110 self._test_instance.flags) | |
111 self._flag_changers[str(dev)].AddFlags(self._test_instance.flags) | |
112 | |
113 valgrind_tools.SetChromeTimeoutScale( | |
114 dev, self._test_instance.timeout_scale) | |
115 | |
116 steps = (install_apk, push_test_data, create_flag_changer) | |
117 if self._env.concurrent_adb: | |
118 reraiser_thread.RunAsync(steps) | |
119 else: | |
120 for step in steps: | |
121 step() | |
98 | 122 |
99 self._env.parallel_devices.pMap( | 123 self._env.parallel_devices.pMap( |
100 individual_device_set_up, | 124 individual_device_set_up, |
101 self._test_instance.GetDataDependencies()) | 125 self._test_instance.GetDataDependencies()) |
102 | 126 |
103 def TearDown(self): | 127 def TearDown(self): |
104 def individual_device_tear_down(dev): | 128 def individual_device_tear_down(dev): |
105 if str(dev) in self._flag_changers: | 129 if str(dev) in self._flag_changers: |
106 self._flag_changers[str(dev)].Restore() | 130 self._flag_changers[str(dev)].Restore() |
107 | 131 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
241 timeout = v | 265 timeout = v |
242 break | 266 break |
243 else: | 267 else: |
244 logging.warning('Using default 1 minute timeout for %s', test_name) | 268 logging.warning('Using default 1 minute timeout for %s', test_name) |
245 timeout = 60 | 269 timeout = 60 |
246 | 270 |
247 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) | 271 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) |
248 | 272 |
249 return timeout | 273 return timeout |
250 | 274 |
OLD | NEW |