Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(220)

Side by Side Diff: build/android/pylib/local/device/local_device_instrumentation_test_run.py

Issue 1680233002: Android Add _incremental targets for instrumentation tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: review comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698