Index: build/android/pylib/local/device/local_device_test_run.py |
diff --git a/build/android/pylib/local/device/local_device_test_run.py b/build/android/pylib/local/device/local_device_test_run.py |
index e79b3880a51e5322aa6eac559b8ba567b5a17bbf..c6d29f48ca35f5356c7270b9ed2400e8dfd8c3ff 100644 |
--- a/build/android/pylib/local/device/local_device_test_run.py |
+++ b/build/android/pylib/local/device/local_device_test_run.py |
@@ -2,6 +2,7 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import logging |
from pylib import valgrind_tools |
from pylib.base import base_test_result |
@@ -35,8 +36,12 @@ class LocalDeviceTestRun(test_run.TestRun): |
tries = 0 |
results = base_test_result.TestRunResults() |
- fail_results = [] |
+ all_fail_results = {} |
while tries < self._env.max_tries and tests: |
+ logging.debug('try %d, will run %d tests:', tries, len(tests)) |
+ for t in tests: |
+ logging.debug(' %s', t) |
+ |
if self._ShouldShard(): |
tc = test_collection.TestCollection(self._CreateShards(tests)) |
try_results = self._env.parallel_devices.pMap( |
@@ -44,26 +49,31 @@ class LocalDeviceTestRun(test_run.TestRun): |
else: |
try_results = self._env.parallel_devices.pMap( |
run_tests_on_device, tests).pGet(None) |
- fail_results = [] |
for try_result in try_results: |
for result in try_result.GetAll(): |
if result.GetType() in (base_test_result.ResultType.PASS, |
base_test_result.ResultType.SKIP): |
results.AddResult(result) |
else: |
- fail_results.append(result) |
+ all_fail_results[result.GetName()] = result |
results_names = set(r.GetName() for r in results.GetAll()) |
tests = [t for t in tests if t not in results_names] |
tries += 1 |
- if tests: |
+ all_unknown_test_names = set(tests) |
+ all_failed_test_names = set(all_fail_results.iterkeys()) |
+ |
+ unknown_tests = all_unknown_test_names.difference(all_failed_test_names) |
+ failed_tests = all_failed_test_names.intersection(all_unknown_test_names) |
+ |
+ if unknown_tests: |
results.AddResults( |
base_test_result.BaseTestResult( |
t, base_test_result.ResultType.UNKNOWN) |
for t in tests) |
- if fail_results: |
- results.AddResults(fail_results) |
+ if failed_tests: |
+ results.AddResults(all_fail_results[f] for f in failed_tests) |
return results |
def GetTool(self, device): |