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

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

Issue 1414093002: Android gtest runner: Add --enable-concurrent-adb flag (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: disable flag Created 5 years, 2 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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 imp 5 import imp
6 import itertools 6 import itertools
7 import os 7 import os
8 import posixpath 8 import posixpath
9 9
10 from devil.android import device_errors 10 from devil.android import device_errors
11 from devil.android import device_temp_file 11 from devil.android import device_temp_file
12 from devil.android import ports 12 from devil.android import ports
13 from devil.utils import reraiser_thread
13 from incremental_install import installer 14 from incremental_install import installer
14 from pylib import constants 15 from pylib import constants
15 from pylib.gtest import gtest_test_instance 16 from pylib.gtest import gtest_test_instance
16 from pylib.local import local_test_server_spawner 17 from pylib.local import local_test_server_spawner
17 from pylib.local.device import local_device_environment 18 from pylib.local.device import local_device_environment
18 from pylib.local.device import local_device_test_run 19 from pylib.local.device import local_device_test_run
19 20
20 _COMMAND_LINE_FLAGS_SUPPORTED = True 21 _COMMAND_LINE_FLAGS_SUPPORTED = True
21 22
22 _EXTRA_COMMAND_LINE_FILE = ( 23 _EXTRA_COMMAND_LINE_FILE = (
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 self._delegate = _ExeDelegate(self, self._test_instance.exe) 218 self._delegate = _ExeDelegate(self, self._test_instance.exe)
218 219
219 self._servers = {} 220 self._servers = {}
220 221
221 #override 222 #override
222 def TestPackage(self): 223 def TestPackage(self):
223 return self._test_instance.suite 224 return self._test_instance.suite
224 225
225 #override 226 #override
226 def SetUp(self): 227 def SetUp(self):
228 @local_device_test_run.handle_shard_failures
229 def individual_device_set_up(dev):
230 def install_apk():
231 # Install test APK.
232 self._delegate.Install(dev, incremental=self._env.incremental_install)
227 233
228 @local_device_test_run.handle_shard_failures 234 def push_test_data():
229 def individual_device_set_up(dev, host_device_tuples): 235 # Push data dependencies.
230 # Install test APK. 236 external_storage = dev.GetExternalStoragePath()
231 self._delegate.Install(dev, incremental=self._env.incremental_install) 237 data_deps = self._test_instance.GetDataDependencies()
238 host_device_tuples = [
239 (h, d if d is not None else external_storage)
240 for h, d in data_deps]
241 dev.PushChangedFiles(host_device_tuples)
232 242
233 # Push data dependencies. 243 def init_tool_and_start_servers():
234 external_storage = dev.GetExternalStoragePath() 244 tool = self.GetTool(dev)
235 host_device_tuples = [ 245 tool.CopyFiles(dev)
236 (h, d if d is not None else external_storage) 246 tool.SetupEnvironment()
237 for h, d in host_device_tuples]
238 dev.PushChangedFiles(host_device_tuples)
239 247
240 tool = self.GetTool(dev) 248 self._servers[str(dev)] = []
241 tool.CopyFiles(dev) 249 if self.TestPackage() in _SUITE_REQUIRES_TEST_SERVER_SPAWNER:
242 tool.SetupEnvironment() 250 self._servers[str(dev)].append(
251 local_test_server_spawner.LocalTestServerSpawner(
252 ports.AllocateTestServerPort(), dev, tool))
243 253
244 self._servers[str(dev)] = [] 254 for s in self._servers[str(dev)]:
245 if self.TestPackage() in _SUITE_REQUIRES_TEST_SERVER_SPAWNER: 255 s.SetUp()
246 self._servers[str(dev)].append(
247 local_test_server_spawner.LocalTestServerSpawner(
248 ports.AllocateTestServerPort(), dev, tool))
249 256
250 for s in self._servers[str(dev)]: 257 steps = (install_apk, push_test_data, init_tool_and_start_servers)
251 s.SetUp() 258 if self._env.concurrent_adb:
259 reraiser_thread.RunAsync(steps)
260 else:
261 for step in steps:
262 step()
252 263
253 self._env.parallel_devices.pMap(individual_device_set_up, 264 self._env.parallel_devices.pMap(individual_device_set_up)
254 self._test_instance.GetDataDependencies())
255 265
256 #override 266 #override
257 def _ShouldShard(self): 267 def _ShouldShard(self):
258 return True 268 return True
259 269
260 #override 270 #override
261 def _CreateShards(self, tests): 271 def _CreateShards(self, tests):
262 device_count = len(self._env.devices) 272 device_count = len(self._env.devices)
263 shards = [] 273 shards = []
264 for i in xrange(0, device_count): 274 for i in xrange(0, device_count):
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 def TearDown(self): 327 def TearDown(self):
318 @local_device_test_run.handle_shard_failures 328 @local_device_test_run.handle_shard_failures
319 def individual_device_tear_down(dev): 329 def individual_device_tear_down(dev):
320 for s in self._servers.get(str(dev), []): 330 for s in self._servers.get(str(dev), []):
321 s.TearDown() 331 s.TearDown()
322 332
323 tool = self.GetTool(dev) 333 tool = self.GetTool(dev)
324 tool.CleanUpEnvironment() 334 tool.CleanUpEnvironment()
325 335
326 self._env.parallel_devices.pMap(individual_device_tear_down) 336 self._env.parallel_devices.pMap(individual_device_tear_down)
OLDNEW
« no previous file with comments | « build/android/pylib/local/device/local_device_environment.py ('k') | build/android/test_runner.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698