| 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 os |
| 7 import posixpath | 7 import posixpath |
| 8 import re | 8 import re |
| 9 import time | 9 import time |
| 10 | 10 |
| 11 from devil.android import device_errors | 11 from devil.android import device_errors |
| 12 from devil.android import flag_changer | 12 from devil.android import flag_changer |
| 13 from devil.android.sdk import shared_prefs |
| 13 from devil.utils import reraiser_thread | 14 from devil.utils import reraiser_thread |
| 14 from pylib import valgrind_tools | 15 from pylib import valgrind_tools |
| 15 from pylib.android import logdog_logcat_monitor | 16 from pylib.android import logdog_logcat_monitor |
| 16 from pylib.base import base_test_result | 17 from pylib.base import base_test_result |
| 17 from pylib.instrumentation import instrumentation_test_instance | 18 from pylib.instrumentation import instrumentation_test_instance |
| 18 from pylib.local.device import local_device_environment | 19 from pylib.local.device import local_device_environment |
| 19 from pylib.local.device import local_device_test_run | 20 from pylib.local.device import local_device_test_run |
| 20 from pylib.utils import logdog_helper | 21 from pylib.utils import logdog_helper |
| 21 from py_trace_event import trace_event | 22 from py_trace_event import trace_event |
| 22 from py_utils import contextlib_ext | 23 from py_utils import contextlib_ext |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 if self._test_instance.flags: | 103 if self._test_instance.flags: |
| 103 if not self._test_instance.package_info: | 104 if not self._test_instance.package_info: |
| 104 logging.error("Couldn't set debug app: no package info") | 105 logging.error("Couldn't set debug app: no package info") |
| 105 elif not self._test_instance.package_info.package: | 106 elif not self._test_instance.package_info.package: |
| 106 logging.error("Couldn't set debug app: no package defined") | 107 logging.error("Couldn't set debug app: no package defined") |
| 107 else: | 108 else: |
| 108 dev.RunShellCommand(['am', 'set-debug-app', '--persistent', | 109 dev.RunShellCommand(['am', 'set-debug-app', '--persistent', |
| 109 self._test_instance.package_info.package], | 110 self._test_instance.package_info.package], |
| 110 check_return=True) | 111 check_return=True) |
| 111 | 112 |
| 113 def edit_shared_prefs(): |
| 114 for pref in self._test_instance.edit_shared_prefs: |
| 115 prefs = shared_prefs.SharedPrefs(dev, pref['package'], |
| 116 pref['filename']) |
| 117 prefs.Load() |
| 118 for key in pref.get('remove', []): |
| 119 try: |
| 120 prefs.Remove(key) |
| 121 except KeyError: |
| 122 logging.warning("Attempted to remove non-existent key %s", key) |
| 123 for key, value in pref.get('set', {}).iteritems(): |
| 124 if isinstance(value, bool): |
| 125 prefs.SetBoolean(key, value) |
| 126 elif isinstance(value, basestring): |
| 127 prefs.SetString(key, value) |
| 128 elif isinstance(value, long) or isinstance(value, int): |
| 129 prefs.SetLong(key, value) |
| 130 elif isinstance(value, list): |
| 131 prefs.SetStringSet(key, value) |
| 132 else: |
| 133 raise ValueError("Given invalid value type %s for key %s" % ( |
| 134 str(type(value)), key)) |
| 135 prefs.Commit() |
| 136 |
| 112 def push_test_data(): | 137 def push_test_data(): |
| 113 device_root = posixpath.join(dev.GetExternalStoragePath(), | 138 device_root = posixpath.join(dev.GetExternalStoragePath(), |
| 114 'chromium_tests_root') | 139 'chromium_tests_root') |
| 115 host_device_tuples_substituted = [ | 140 host_device_tuples_substituted = [ |
| 116 (h, local_device_test_run.SubstituteDeviceRoot(d, device_root)) | 141 (h, local_device_test_run.SubstituteDeviceRoot(d, device_root)) |
| 117 for h, d in host_device_tuples] | 142 for h, d in host_device_tuples] |
| 118 logging.info('instrumentation data deps:') | 143 logging.info('instrumentation data deps:') |
| 119 for h, d in host_device_tuples_substituted: | 144 for h, d in host_device_tuples_substituted: |
| 120 logging.info('%r -> %r', h, d) | 145 logging.info('%r -> %r', h, d) |
| 121 dev.PushChangedFiles(host_device_tuples_substituted, | 146 dev.PushChangedFiles(host_device_tuples_substituted, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 132 logging.error("Couldn't set flags: no cmdline_file") | 157 logging.error("Couldn't set flags: no cmdline_file") |
| 133 else: | 158 else: |
| 134 self._CreateFlagChangerIfNeeded(dev) | 159 self._CreateFlagChangerIfNeeded(dev) |
| 135 logging.debug('Attempting to set flags: %r', | 160 logging.debug('Attempting to set flags: %r', |
| 136 self._test_instance.flags) | 161 self._test_instance.flags) |
| 137 self._flag_changers[str(dev)].AddFlags(self._test_instance.flags) | 162 self._flag_changers[str(dev)].AddFlags(self._test_instance.flags) |
| 138 | 163 |
| 139 valgrind_tools.SetChromeTimeoutScale( | 164 valgrind_tools.SetChromeTimeoutScale( |
| 140 dev, self._test_instance.timeout_scale) | 165 dev, self._test_instance.timeout_scale) |
| 141 | 166 |
| 142 steps = (install_apk, push_test_data, create_flag_changer) | 167 steps = (install_apk, edit_shared_prefs, push_test_data, |
| 168 create_flag_changer) |
| 143 if self._env.concurrent_adb: | 169 if self._env.concurrent_adb: |
| 144 reraiser_thread.RunAsync(steps) | 170 reraiser_thread.RunAsync(steps) |
| 145 else: | 171 else: |
| 146 for step in steps: | 172 for step in steps: |
| 147 step() | 173 step() |
| 148 if self._test_instance.store_tombstones: | 174 if self._test_instance.store_tombstones: |
| 149 tombstones.ClearAllTombstones(dev) | 175 tombstones.ClearAllTombstones(dev) |
| 150 | 176 |
| 151 self._env.parallel_devices.pMap( | 177 self._env.parallel_devices.pMap( |
| 152 individual_device_set_up, | 178 individual_device_set_up, |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 399 timeout = v | 425 timeout = v |
| 400 break | 426 break |
| 401 else: | 427 else: |
| 402 logging.warning('Using default 1 minute timeout for %s', test_name) | 428 logging.warning('Using default 1 minute timeout for %s', test_name) |
| 403 timeout = 60 | 429 timeout = 60 |
| 404 | 430 |
| 405 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) | 431 timeout *= cls._GetTimeoutScaleFromAnnotations(annotations) |
| 406 | 432 |
| 407 return timeout | 433 return timeout |
| 408 | 434 |
| OLD | NEW |