Chromium Code Reviews| Index: build/android/pylib/local/device/local_device_instrumentation_test_run.py |
| diff --git a/build/android/pylib/local/device/local_device_instrumentation_test_run.py b/build/android/pylib/local/device/local_device_instrumentation_test_run.py |
| index a8d9f5e6737828ccf5010f9070d4cdb553f407dd..55cab9ac57ca62d366b95c116829fc654555378a 100644 |
| --- a/build/android/pylib/local/device/local_device_instrumentation_test_run.py |
| +++ b/build/android/pylib/local/device/local_device_instrumentation_test_run.py |
| @@ -23,6 +23,8 @@ from py_trace_event import trace_event |
| from py_utils import contextlib_ext |
| import tombstones |
| +from multiprocessing.pool import ThreadPool |
| + |
| _TAG = 'test_runner_py' |
| TIMEOUT_ANNOTATIONS = [ |
| @@ -75,29 +77,59 @@ class LocalDeviceInstrumentationTestRun( |
| self._env.BlacklistDevice) |
| @trace_event.traced |
| def individual_device_set_up(dev, host_device_tuples): |
| + def single_apk_install(apk_permission_pair): |
| + apk = apk_permission_pair[0] |
| + permissions = apk_permission_pair[1] |
| + dev.Install(apk, permissions=permissions) |
| + |
| + def single_incremental_apk_install(dev_apk_script_array): |
| + dev = dev_apk_script_array[0] |
| + apk = dev_apk_script_array[1] |
| + incremental_install_script = dev_apk_script_array[2] |
| + local_device_test_run.IncrementalInstall( |
| + dev, apk, incremental_install_script) |
| + |
| + def single_apk_install_helper(array): |
| + if len(array) == 2: |
| + single_apk_install(array) |
| + elif len(array) == 3: |
| + single_incremental_apk_install(array) |
| + else: |
| + raise Exception('incorrect input array') |
| + |
| + @trace_event.traced |
| def install_apk(): |
| + apk_resource_array = [] |
| if self._test_instance.apk_under_test: |
| if self._test_instance.apk_under_test_incremental_install_script: |
| - local_device_test_run.IncrementalInstall( |
| + apk_resource_array.append([ |
| dev, |
| self._test_instance.apk_under_test, |
| - self._test_instance.apk_under_test_incremental_install_script) |
| + self._test_instance.apk_under_test_incremental_install_script]) |
| else: |
| permissions = self._test_instance.apk_under_test.GetPermissions() |
| - dev.Install(self._test_instance.apk_under_test, |
| - permissions=permissions) |
| + apk_resource_array.append( |
| + [self._test_instance.apk_under_test, permissions]) |
| if self._test_instance.test_apk_incremental_install_script: |
| - local_device_test_run.IncrementalInstall( |
| + apk_resource_array.append([ |
| dev, |
| self._test_instance.test_apk, |
| - self._test_instance.test_apk_incremental_install_script) |
| + self._test_instance.test_apk_incremental_install_script]) |
| else: |
| permissions = self._test_instance.test_apk.GetPermissions() |
| - dev.Install(self._test_instance.test_apk, permissions=permissions) |
| + apk_resource_array.append( |
| + [self._test_instance.test_apk, permissions]) |
| for apk in self._test_instance.additional_apks: |
| - dev.Install(apk) |
| + apk_resource_array.append([apk, None]) |
| + |
| + if self._env.concurrent_adb: |
| + pool = ThreadPool(processes=len(apk_resource_array)) |
|
jbudorick
2017/04/01 00:58:19
Instead of using a ThreadPool, split apk installat
|
| + pool.map(single_apk_install_helper, apk_resource_array) |
| + else: |
| + for apk_resource in apk_resource_array: |
| + single_apk_install_helper(apk_resource) |
| # Set debug app in order to enable reading command line flags on user |
| # builds |