OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 """Class for running instrumentation tests on a single device.""" | 5 """Class for running instrumentation tests on a single device.""" |
6 | 6 |
7 import logging | 7 import logging |
8 import os | 8 import os |
9 import re | 9 import re |
10 import shutil | 10 import shutil |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 | 45 |
46 class TestRunner(base_test_runner.BaseTestRunner): | 46 class TestRunner(base_test_runner.BaseTestRunner): |
47 """Responsible for running a series of tests connected to a single device.""" | 47 """Responsible for running a series of tests connected to a single device.""" |
48 | 48 |
49 _DEVICE_DATA_DIR = 'chrome/test/data' | 49 _DEVICE_DATA_DIR = 'chrome/test/data' |
50 _HOSTMACHINE_PERF_OUTPUT_FILE = '/tmp/chrome-profile' | 50 _HOSTMACHINE_PERF_OUTPUT_FILE = '/tmp/chrome-profile' |
51 _DEVICE_PERF_OUTPUT_SEARCH_PREFIX = (constants.DEVICE_PERF_OUTPUT_DIR + | 51 _DEVICE_PERF_OUTPUT_SEARCH_PREFIX = (constants.DEVICE_PERF_OUTPUT_DIR + |
52 '/chrome-profile*') | 52 '/chrome-profile*') |
53 _DEVICE_HAS_TEST_FILES = {} | 53 _DEVICE_HAS_TEST_FILES = {} |
54 | 54 |
55 def __init__(self, build_type, test_data, install_apk, save_perf_json, | 55 def __init__(self, build_type, test_data, save_perf_json, screenshot_failures, |
56 screenshot_failures, tool, wait_for_debugger, disable_assertions, | 56 tool, wait_for_debugger, disable_assertions, push_deps, |
57 push_deps, cleanup_test_files, device, shard_index, test_pkg, | 57 cleanup_test_files, device, shard_index, test_pkg, |
58 ports_to_forward): | 58 ports_to_forward): |
59 """Create a new TestRunner. | 59 """Create a new TestRunner. |
60 | 60 |
61 Args: | 61 Args: |
62 build_type: 'Release' or 'Debug'. | 62 build_type: 'Release' or 'Debug'. |
63 test_data: Location of the test data. | 63 test_data: Location of the test data. |
64 install_apk: Re-installs the apk if opted. | |
65 save_perf_json: Whether or not to save the JSON file from UI perf tests. | 64 save_perf_json: Whether or not to save the JSON file from UI perf tests. |
66 screenshot_failures: Take a screenshot for a test failure | 65 screenshot_failures: Take a screenshot for a test failure |
67 tool: Name of the Valgrind tool. | 66 tool: Name of the Valgrind tool. |
68 wait_for_debugger: Blocks until the debugger is connected. | 67 wait_for_debugger: Blocks until the debugger is connected. |
69 disable_assertions: Whether to disable java assertions on the device. | 68 disable_assertions: Whether to disable java assertions on the device. |
70 push_deps: If True, push all dependencies to the device. | 69 push_deps: If True, push all dependencies to the device. |
71 cleanup_test_files: Whether or not to cleanup test files on device. | 70 cleanup_test_files: Whether or not to cleanup test files on device. |
72 device: Attached android device. | 71 device: Attached android device. |
73 shard_index: Shard index. | 72 shard_index: Shard index. |
74 test_pkg: A TestPackage object. | 73 test_pkg: A TestPackage object. |
75 ports_to_forward: A list of port numbers for which to set up forwarders. | 74 ports_to_forward: A list of port numbers for which to set up forwarders. |
76 Can be optionally requested by a test case. | 75 Can be optionally requested by a test case. |
77 """ | 76 """ |
78 super(TestRunner, self).__init__(device, tool, build_type, push_deps, | 77 super(TestRunner, self).__init__(device, tool, build_type, push_deps, |
79 cleanup_test_files) | 78 cleanup_test_files) |
80 self._lighttp_port = constants.LIGHTTPD_RANDOM_PORT_FIRST + shard_index | 79 self._lighttp_port = constants.LIGHTTPD_RANDOM_PORT_FIRST + shard_index |
81 | 80 |
82 self.build_type = build_type | 81 self.build_type = build_type |
83 self.test_data = test_data | 82 self.test_data = test_data |
84 self.save_perf_json = save_perf_json | 83 self.save_perf_json = save_perf_json |
85 self.screenshot_failures = screenshot_failures | 84 self.screenshot_failures = screenshot_failures |
86 self.wait_for_debugger = wait_for_debugger | 85 self.wait_for_debugger = wait_for_debugger |
87 self.disable_assertions = disable_assertions | 86 self.disable_assertions = disable_assertions |
88 self.test_pkg = test_pkg | 87 self.test_pkg = test_pkg |
89 self.ports_to_forward = ports_to_forward | 88 self.ports_to_forward = ports_to_forward |
90 self.install_apk = install_apk | |
91 | 89 |
92 #override | 90 #override |
93 def InstallTestPackage(self): | 91 def InstallTestPackage(self): |
94 if self.install_apk: | 92 self.test_pkg.Install(self.adb) |
95 self.test_pkg.Install(self.adb) | |
96 | 93 |
97 #override | 94 #override |
98 def PushDataDeps(self): | 95 def PushDataDeps(self): |
99 # TODO(frankf): Implement a general approach for copying/installing | 96 # TODO(frankf): Implement a general approach for copying/installing |
100 # once across test runners. | 97 # once across test runners. |
101 if TestRunner._DEVICE_HAS_TEST_FILES.get(self.device, False): | 98 if TestRunner._DEVICE_HAS_TEST_FILES.get(self.device, False): |
102 logging.warning('Already copied test files to device %s, skipping.', | 99 logging.warning('Already copied test files to device %s, skipping.', |
103 self.device) | 100 self.device) |
104 return | 101 return |
105 | 102 |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 duration_ms = 0 | 349 duration_ms = 0 |
353 message = str(e) | 350 message = str(e) |
354 if not message: | 351 if not message: |
355 message = 'No information.' | 352 message = 'No information.' |
356 results.AddResult(test_result.InstrumentationTestResult( | 353 results.AddResult(test_result.InstrumentationTestResult( |
357 test, base_test_result.ResultType.CRASH, start_date_ms, duration_ms, | 354 test, base_test_result.ResultType.CRASH, start_date_ms, duration_ms, |
358 log=message)) | 355 log=message)) |
359 raw_result = None | 356 raw_result = None |
360 self.TestTeardown(test, raw_result) | 357 self.TestTeardown(test, raw_result) |
361 return (results, None if results.DidRunPass() else test) | 358 return (results, None if results.DidRunPass() else test) |
OLD | NEW |