Index: build/android/pylib/instrumentation/dispatch.py |
diff --git a/build/android/pylib/instrumentation/dispatch.py b/build/android/pylib/instrumentation/dispatch.py |
index 53c9d82c1ee9b1272d9e8e6a89382fec44e693b3..ff4e367ab8ca3cb0931bc326919ec90ad13f9bd1 100644 |
--- a/build/android/pylib/instrumentation/dispatch.py |
+++ b/build/android/pylib/instrumentation/dispatch.py |
@@ -10,7 +10,6 @@ import os |
from pylib import android_commands |
from pylib.base import base_test_result |
from pylib.base import shard |
-from pylib.uiautomator import test_package as uiautomator_package |
import test_package |
import test_runner |
@@ -31,74 +30,29 @@ def Dispatch(options): |
Raises: |
Exception: when there are no attached devices. |
""" |
- is_uiautomator_test = False |
- if hasattr(options, 'uiautomator_jar'): |
- test_pkg = uiautomator_package.TestPackage( |
- options.uiautomator_jar, options.uiautomator_info_jar) |
- is_uiautomator_test = True |
- else: |
- test_pkg = test_package.TestPackage(options.test_apk_path, |
- options.test_apk_jar_path) |
- # The default annotation for tests which do not have any sizes annotation. |
- default_size_annotation = 'SmallTest' |
- |
- def _GetTestsMissingAnnotation(test_pkg): |
- test_size_annotations = frozenset(['Smoke', 'SmallTest', 'MediumTest', |
- 'LargeTest', 'EnormousTest', 'FlakyTest', |
- 'DisabledTest', 'Manual', 'PerfTest']) |
- tests_missing_annotations = [] |
- for test_method in test_pkg.GetTestMethods(): |
- annotations = frozenset(test_pkg.GetTestAnnotations(test_method)) |
- if (annotations.isdisjoint(test_size_annotations) and |
- not test_pkg.IsPythonDrivenTest(test_method)): |
- tests_missing_annotations.append(test_method) |
- return sorted(tests_missing_annotations) |
- |
- if options.annotation: |
- available_tests = test_pkg.GetAnnotatedTests(options.annotation) |
- if options.annotation.count(default_size_annotation) > 0: |
- tests_missing_annotations = _GetTestsMissingAnnotation(test_pkg) |
- if tests_missing_annotations: |
- logging.warning('The following tests do not contain any annotation. ' |
- 'Assuming "%s":\n%s', |
- default_size_annotation, |
- '\n'.join(tests_missing_annotations)) |
- available_tests += tests_missing_annotations |
- else: |
- available_tests = [m for m in test_pkg.GetTestMethods() |
- if not test_pkg.IsPythonDrivenTest(m)] |
- |
- tests = [] |
- if options.test_filter: |
- # |available_tests| are in adb instrument format: package.path.class#test. |
- filter_without_hash = options.test_filter.replace('#', '.') |
- tests = [t for t in available_tests |
- if filter_without_hash in t.replace('#', '.')] |
- else: |
- tests = available_tests |
- |
+ test_pkg = test_package.TestPackage(options.test_apk_path, |
+ options.test_apk_jar_path) |
+ tests = test_pkg._GetAllMatchingTests( |
+ options.annotations, options.test_filter) |
if not tests: |
logging.warning('No instrumentation tests to run with current args.') |
return base_test_result.TestRunResults() |
- tests *= options.number_of_runs |
- |
attached_devices = android_commands.GetAttachedDevices() |
- |
if not attached_devices: |
raise Exception('There are no devices online.') |
+ |
if options.device: |
+ assert options.device in attached_devices |
attached_devices = [options.device] |
- logging.info('Will run: %s', str(tests)) |
- |
if len(attached_devices) > 1 and options.wait_for_debugger: |
logging.warning('Debugger can not be sharded, using first available device') |
attached_devices = attached_devices[:1] |
def TestRunnerFactory(device, shard_index): |
return test_runner.TestRunner( |
- options, device, shard_index, test_pkg, [], is_uiautomator_test) |
+ options, device, shard_index, test_pkg, []) |
return shard.ShardAndRunTests(TestRunnerFactory, attached_devices, tests, |
options.build_type) |