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

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

Issue 2743873003: [Android] Add support for external sharding to the test runner. (Closed)
Patch Set: borked rebase Created 3 years, 9 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 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 import time 10 import time
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 @local_device_environment.handle_shard_failures_with( 352 @local_device_environment.handle_shard_failures_with(
353 on_failure=self._env.BlacklistDevice) 353 on_failure=self._env.BlacklistDevice)
354 def list_tests(dev): 354 def list_tests(dev):
355 raw_test_list = self._delegate.Run( 355 raw_test_list = self._delegate.Run(
356 None, dev, flags='--gtest_list_tests', timeout=30) 356 None, dev, flags='--gtest_list_tests', timeout=30)
357 tests = gtest_test_instance.ParseGTestListTests(raw_test_list) 357 tests = gtest_test_instance.ParseGTestListTests(raw_test_list)
358 if not tests: 358 if not tests:
359 logging.info('No tests found. Output:') 359 logging.info('No tests found. Output:')
360 for l in raw_test_list: 360 for l in raw_test_list:
361 logging.info(' %s', l) 361 logging.info(' %s', l)
362 tests = self._test_instance.FilterTests(tests)
363 return tests 362 return tests
364 363
365 # Query all devices in case one fails. 364 # Query all devices in case one fails.
366 test_lists = self._env.parallel_devices.pMap(list_tests).pGet(None) 365 test_lists = self._env.parallel_devices.pMap(list_tests).pGet(None)
367 366
368 # If all devices failed to list tests, raise an exception. 367 # If all devices failed to list tests, raise an exception.
369 # Check that tl is not None and is not empty. 368 # Check that tl is not None and is not empty.
370 if all(not tl for tl in test_lists): 369 if all(not tl for tl in test_lists):
371 raise device_errors.CommandFailedError( 370 raise device_errors.CommandFailedError(
372 'Failed to list tests on any device') 371 'Failed to list tests on any device')
373 return list(sorted(set().union(*[set(tl) for tl in test_lists if tl]))) 372 tests = list(sorted(set().union(*[set(tl) for tl in test_lists if tl])))
373 tests = self._test_instance.FilterTests(tests)
374 tests = self._ApplyExternalSharding(
375 tests, self._test_instance.external_shard_index,
376 self._test_instance.total_external_shards)
377 return tests
374 378
375 #override 379 #override
376 def _RunTest(self, device, test): 380 def _RunTest(self, device, test):
377 # Run the test. 381 # Run the test.
378 timeout = (self._test_instance.shard_timeout 382 timeout = (self._test_instance.shard_timeout
379 * self.GetTool(device).GetTimeoutScale()) 383 * self.GetTool(device).GetTimeoutScale())
380 if self._test_instance.store_tombstones: 384 if self._test_instance.store_tombstones:
381 tombstones.ClearAllTombstones(device) 385 tombstones.ClearAllTombstones(device)
382 with device_temp_file.DeviceTempFile( 386 with device_temp_file.DeviceTempFile(
383 adb=device.adb, 387 adb=device.adb,
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 @local_device_environment.handle_shard_failures 450 @local_device_environment.handle_shard_failures
447 @trace_event.traced 451 @trace_event.traced
448 def individual_device_tear_down(dev): 452 def individual_device_tear_down(dev):
449 for s in self._servers.get(str(dev), []): 453 for s in self._servers.get(str(dev), []):
450 s.TearDown() 454 s.TearDown()
451 455
452 tool = self.GetTool(dev) 456 tool = self.GetTool(dev)
453 tool.CleanUpEnvironment() 457 tool.CleanUpEnvironment()
454 458
455 self._env.parallel_devices.pMap(individual_device_tear_down) 459 self._env.parallel_devices.pMap(individual_device_tear_down)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698