| OLD | NEW |
| 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 collections | 5 import collections |
| 6 import itertools | 6 import itertools |
| 7 import logging | 7 import logging |
| 8 import os | 8 import os |
| 9 import posixpath | 9 import posixpath |
| 10 | 10 |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 self._servers = collections.defaultdict(list) | 243 self._servers = collections.defaultdict(list) |
| 244 | 244 |
| 245 #override | 245 #override |
| 246 def TestPackage(self): | 246 def TestPackage(self): |
| 247 return self._test_instance.suite | 247 return self._test_instance.suite |
| 248 | 248 |
| 249 #override | 249 #override |
| 250 def SetUp(self): | 250 def SetUp(self): |
| 251 @local_device_environment.handle_shard_failures_with( | 251 @local_device_environment.handle_shard_failures_with( |
| 252 on_failure=self._env.BlacklistDevice) | 252 on_failure=self._env.BlacklistDevice) |
| 253 def individual_device_set_up(dev): | 253 def individual_device_set_up(dev, host_device_tuples): |
| 254 def install_apk(): | 254 def install_apk(): |
| 255 # Install test APK. | 255 # Install test APK. |
| 256 self._delegate.Install(dev) | 256 self._delegate.Install(dev) |
| 257 | 257 |
| 258 def push_test_data(): | 258 def push_test_data(): |
| 259 # Push data dependencies. | 259 # Push data dependencies. |
| 260 device_root = self._delegate.GetTestDataRoot(dev) | 260 device_root = self._delegate.GetTestDataRoot(dev) |
| 261 data_deps = self._test_instance.GetDataDependencies() | 261 host_device_tuples_substituted = [ |
| 262 host_device_tuples = [ | 262 (h, local_device_test_run.SubstituteDeviceRoot(d, device_root)) |
| 263 (h, d if d is not None else device_root) | 263 for h, d in host_device_tuples] |
| 264 for h, d in data_deps] | 264 dev.PushChangedFiles( |
| 265 dev.PushChangedFiles(host_device_tuples, delete_device_stale=True) | 265 host_device_tuples_substituted, |
| 266 delete_device_stale=True) |
| 266 if not host_device_tuples: | 267 if not host_device_tuples: |
| 267 dev.RunShellCommand(['rm', '-rf', device_root], check_return=True) | 268 dev.RunShellCommand(['rm', '-rf', device_root], check_return=True) |
| 268 dev.RunShellCommand(['mkdir', '-p', device_root], check_return=True) | 269 dev.RunShellCommand(['mkdir', '-p', device_root], check_return=True) |
| 269 | 270 |
| 270 def init_tool_and_start_servers(): | 271 def init_tool_and_start_servers(): |
| 271 tool = self.GetTool(dev) | 272 tool = self.GetTool(dev) |
| 272 tool.CopyFiles(dev) | 273 tool.CopyFiles(dev) |
| 273 tool.SetupEnvironment() | 274 tool.SetupEnvironment() |
| 274 | 275 |
| 275 self._servers[str(dev)] = [] | 276 self._servers[str(dev)] = [] |
| 276 if self.TestPackage() in _SUITE_REQUIRES_TEST_SERVER_SPAWNER: | 277 if self.TestPackage() in _SUITE_REQUIRES_TEST_SERVER_SPAWNER: |
| 277 self._servers[str(dev)].append( | 278 self._servers[str(dev)].append( |
| 278 local_test_server_spawner.LocalTestServerSpawner( | 279 local_test_server_spawner.LocalTestServerSpawner( |
| 279 ports.AllocateTestServerPort(), dev, tool)) | 280 ports.AllocateTestServerPort(), dev, tool)) |
| 280 | 281 |
| 281 for s in self._servers[str(dev)]: | 282 for s in self._servers[str(dev)]: |
| 282 s.SetUp() | 283 s.SetUp() |
| 283 | 284 |
| 284 steps = (install_apk, push_test_data, init_tool_and_start_servers) | 285 steps = (install_apk, push_test_data, init_tool_and_start_servers) |
| 285 if self._env.concurrent_adb: | 286 if self._env.concurrent_adb: |
| 286 reraiser_thread.RunAsync(steps) | 287 reraiser_thread.RunAsync(steps) |
| 287 else: | 288 else: |
| 288 for step in steps: | 289 for step in steps: |
| 289 step() | 290 step() |
| 290 | 291 |
| 291 self._env.parallel_devices.pMap(individual_device_set_up) | 292 self._env.parallel_devices.pMap( |
| 293 individual_device_set_up, |
| 294 self._test_instance.GetDataDependencies()) |
| 292 | 295 |
| 293 #override | 296 #override |
| 294 def _ShouldShard(self): | 297 def _ShouldShard(self): |
| 295 return True | 298 return True |
| 296 | 299 |
| 297 #override | 300 #override |
| 298 def _CreateShards(self, tests): | 301 def _CreateShards(self, tests): |
| 299 # _crashes are tests that might crash and make the tests in the same shard | 302 # _crashes are tests that might crash and make the tests in the same shard |
| 300 # following the crashed testcase not run. | 303 # following the crashed testcase not run. |
| 301 # Thus we need to create separate shards for each crashed testcase, | 304 # Thus we need to create separate shards for each crashed testcase, |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 def TearDown(self): | 401 def TearDown(self): |
| 399 @local_device_environment.handle_shard_failures | 402 @local_device_environment.handle_shard_failures |
| 400 def individual_device_tear_down(dev): | 403 def individual_device_tear_down(dev): |
| 401 for s in self._servers.get(str(dev), []): | 404 for s in self._servers.get(str(dev), []): |
| 402 s.TearDown() | 405 s.TearDown() |
| 403 | 406 |
| 404 tool = self.GetTool(dev) | 407 tool = self.GetTool(dev) |
| 405 tool.CleanUpEnvironment() | 408 tool.CleanUpEnvironment() |
| 406 | 409 |
| 407 self._env.parallel_devices.pMap(individual_device_tear_down) | 410 self._env.parallel_devices.pMap(individual_device_tear_down) |
| OLD | NEW |