| 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 c0850fa0c8d61db4aa6ff2c23c64fd33de536de7..dfdc06734a95367a299f1f969f359199f8f3ec87 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
|
| @@ -7,6 +7,7 @@ import re
|
| import time
|
|
|
| from devil.android import device_errors
|
| +from devil.utils import reraiser_thread
|
| from pylib import flag_changer
|
| from pylib import valgrind_tools
|
| from pylib.base import base_test_result
|
| @@ -67,34 +68,57 @@ class LocalDeviceInstrumentationTestRun(
|
| @local_device_test_run.handle_shard_failures_with(
|
| self._env.BlacklistDevice)
|
| def individual_device_set_up(dev, host_device_tuples):
|
| - dev.Install(self._test_instance.apk_under_test,
|
| - permissions=self._test_instance.apk_under_test_permissions)
|
| - dev.Install(self._test_instance.test_apk,
|
| - permissions=self._test_instance.test_permissions)
|
| - for apk in self._test_instance.additional_apks:
|
| - dev.Install(apk)
|
| -
|
| - external_storage = dev.GetExternalStoragePath()
|
| - host_device_tuples = [
|
| - (h, substitute_external_storage(d, external_storage))
|
| - for h, d in host_device_tuples]
|
| - logging.info('instrumentation data deps:')
|
| - for h, d in host_device_tuples:
|
| - logging.info('%r -> %r', h, d)
|
| - dev.PushChangedFiles(host_device_tuples)
|
| - if self._test_instance.flags:
|
| - if not self._test_instance.package_info:
|
| - logging.error("Couldn't set flags: no package info")
|
| - elif not self._test_instance.package_info.cmdline_file:
|
| - logging.error("Couldn't set flags: no cmdline_file")
|
| + def install_apk():
|
| + if self._test_instance.apk_under_test_install_script:
|
| + local_device_test_run.IncrementalInstall(dev,
|
| + self._test_instance.apk_under_test,
|
| + self._test_instance.apk_under_test_install_script)
|
| else:
|
| - self._CreateFlagChangerIfNeeded(dev)
|
| - logging.debug('Attempting to set flags: %r',
|
| - self._test_instance.flags)
|
| - self._flag_changers[str(dev)].AddFlags(self._test_instance.flags)
|
| + dev.Install(self._test_instance.apk_under_test,
|
| + permissions=self._test_instance.apk_under_test.GetPermissions())
|
|
|
| - valgrind_tools.SetChromeTimeoutScale(
|
| - dev, self._test_instance.timeout_scale)
|
| + if self._test_instance.test_apk_install_script:
|
| + local_device_test_run.IncrementalInstall(dev,
|
| + self._test_instance.test_apk,
|
| + self._test_instance.test_apk_install_script)
|
| + else:
|
| + dev.Install(self._test_instance.test_apk,
|
| + permissions=self._test_instance.test_apk.GetPermissions())
|
| +
|
| + for apk in self._test_instance.additional_apks:
|
| + dev.Install(apk)
|
| +
|
| + def push_test_data():
|
| + external_storage = dev.GetExternalStoragePath()
|
| + host_device_tuples_substituted = [
|
| + (h, substitute_external_storage(d, external_storage))
|
| + for h, d in host_device_tuples]
|
| + logging.info('instrumentation data deps:')
|
| + for h, d in host_device_tuples_substituted:
|
| + logging.info('%r -> %r', h, d)
|
| + dev.PushChangedFiles(host_device_tuples_substituted)
|
| +
|
| + def create_flag_changer():
|
| + if self._test_instance.flags:
|
| + if not self._test_instance.package_info:
|
| + logging.error("Couldn't set flags: no package info")
|
| + elif not self._test_instance.package_info.cmdline_file:
|
| + logging.error("Couldn't set flags: no cmdline_file")
|
| + else:
|
| + self._CreateFlagChangerIfNeeded(dev)
|
| + logging.debug('Attempting to set flags: %r',
|
| + self._test_instance.flags)
|
| + self._flag_changers[str(dev)].AddFlags(self._test_instance.flags)
|
| +
|
| + valgrind_tools.SetChromeTimeoutScale(
|
| + dev, self._test_instance.timeout_scale)
|
| +
|
| + steps = (install_apk, push_test_data, create_flag_changer)
|
| + if self._env.concurrent_adb:
|
| + reraiser_thread.RunAsync(steps)
|
| + else:
|
| + for step in steps:
|
| + step()
|
|
|
| self._env.parallel_devices.pMap(
|
| individual_device_set_up,
|
|
|