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