test_runner.py revision a36e5920737c6adbddd3e43b760e5de8431db6e0
1# Copyright (c) 2013 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5"""Class for running uiautomator tests on a single device.""" 6 7from pylib.instrumentation import test_options as instr_test_options 8from pylib.instrumentation import test_runner as instr_test_runner 9 10 11class TestRunner(instr_test_runner.TestRunner): 12 """Responsible for running a series of tests connected to a single device.""" 13 14 def __init__(self, test_options, device, shard_index, test_pkg, 15 ports_to_forward): 16 """Create a new TestRunner. 17 18 Args: 19 test_options: A UIAutomatorOptions object. 20 device: Attached android device. 21 shard_index: Shard index. 22 test_pkg: A TestPackage object. 23 ports_to_forward: A list of port numbers for which to set up forwarders. 24 Can be optionally requested by a test case. 25 """ 26 # Create an InstrumentationOptions object to pass to the super class 27 instrumentation_options = instr_test_options.InstrumentationOptions( 28 test_options.build_type, 29 test_options.tool, 30 test_options.cleanup_test_files, 31 test_options.push_deps, 32 test_options.annotations, 33 test_options.exclude_annotations, 34 test_options.test_filter, 35 test_options.test_data, 36 test_options.save_perf_json, 37 test_options.screenshot_failures, 38 test_options.disable_assertions, 39 wait_for_debugger=False, 40 test_apk=None, 41 test_apk_path=None, 42 test_apk_jar_path=None) 43 super(TestRunner, self).__init__(instrumentation_options, device, 44 shard_index, test_pkg, ports_to_forward) 45 46 self.package_name = test_options.package_name 47 48 #override 49 def InstallTestPackage(self): 50 self.test_pkg.Install(self.adb) 51 52 #override 53 def PushDataDeps(self): 54 pass 55 56 #override 57 def _RunTest(self, test, timeout): 58 self.adb.ClearApplicationState(self.package_name) 59 if 'Feature:FirstRunExperience' in self.test_pkg.GetTestAnnotations(test): 60 self.flags.RemoveFlags(['--disable-fre']) 61 else: 62 self.flags.AddFlags(['--disable-fre']) 63 return self.adb.RunUIAutomatorTest( 64 test, self.test_pkg.GetPackageName(), timeout) 65