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 import logging | 5 import logging |
6 import os | 6 import os |
7 import re | 7 import re |
| 8 import tempfile |
8 | 9 |
9 from pylib import pexpect | 10 from pylib import pexpect |
10 from pylib import ports | 11 from pylib import ports |
11 from pylib.base import base_test_result | 12 from pylib.base import base_test_result |
12 from pylib.base import base_test_runner | 13 from pylib.base import base_test_runner |
13 from pylib.device import device_errors | 14 from pylib.device import device_errors |
| 15 from pylib.gtest import gtest_test_instance |
14 from pylib.local import local_test_server_spawner | 16 from pylib.local import local_test_server_spawner |
15 from pylib.perf import perf_control | 17 from pylib.perf import perf_control |
16 | 18 |
17 # Test case statuses. | 19 # Test case statuses. |
18 RE_RUN = re.compile('\\[ RUN \\] ?(.*)\r\n') | 20 RE_RUN = re.compile('\\[ RUN \\] ?(.*)\r\n') |
19 RE_FAIL = re.compile('\\[ FAILED \\] ?(.*?)( \\((\\d+) ms\\))?\r\r\n') | 21 RE_FAIL = re.compile('\\[ FAILED \\] ?(.*?)( \\((\\d+) ms\\))?\r\r\n') |
20 RE_OK = re.compile('\\[ OK \\] ?(.*?)( \\((\\d+) ms\\))?\r\r\n') | 22 RE_OK = re.compile('\\[ OK \\] ?(.*?)( \\((\\d+) ms\\))?\r\r\n') |
21 | 23 |
22 # Test run statuses. | 24 # Test run statuses. |
23 RE_PASSED = re.compile('\\[ PASSED \\] ?(.*)\r\n') | 25 RE_PASSED = re.compile('\\[ PASSED \\] ?(.*)\r\n') |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): | 74 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): |
73 self._perf_controller = perf_control.PerfControl(self.device) | 75 self._perf_controller = perf_control.PerfControl(self.device) |
74 | 76 |
75 if _TestSuiteRequiresMockTestServer(self.test_package.suite_name): | 77 if _TestSuiteRequiresMockTestServer(self.test_package.suite_name): |
76 self._servers = [ | 78 self._servers = [ |
77 local_test_server_spawner.LocalTestServerSpawner( | 79 local_test_server_spawner.LocalTestServerSpawner( |
78 ports.AllocateTestServerPort(), self.device, self.tool)] | 80 ports.AllocateTestServerPort(), self.device, self.tool)] |
79 else: | 81 else: |
80 self._servers = [] | 82 self._servers = [] |
81 | 83 |
| 84 if test_options.app_data_files: |
| 85 self._app_data_files = test_options.app_data_files |
| 86 if test_options.app_data_file_dir: |
| 87 self._app_data_file_dir = test_options.app_data_file_dir |
| 88 else: |
| 89 self._app_data_file_dir = tempfile.mkdtemp() |
| 90 logging.critical('Saving app files to %s', self._app_data_file_dir) |
| 91 else: |
| 92 self._app_data_files = None |
| 93 self._app_data_file_dir = None |
| 94 |
82 #override | 95 #override |
83 def InstallTestPackage(self): | 96 def InstallTestPackage(self): |
84 self.test_package.Install(self.device) | 97 self.test_package.Install(self.device) |
85 | 98 |
86 def _ParseTestOutput(self, p): | 99 def _ParseTestOutput(self, p): |
87 """Process the test output. | 100 """Process the test output. |
88 | 101 |
89 Args: | 102 Args: |
90 p: An instance of pexpect spawn class. | 103 p: An instance of pexpect spawn class. |
91 | 104 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 test_results = base_test_result.TestRunResults() | 172 test_results = base_test_result.TestRunResults() |
160 if not test: | 173 if not test: |
161 return test_results, None | 174 return test_results, None |
162 | 175 |
163 try: | 176 try: |
164 self.test_package.ClearApplicationState(self.device) | 177 self.test_package.ClearApplicationState(self.device) |
165 self.test_package.CreateCommandLineFileOnDevice( | 178 self.test_package.CreateCommandLineFileOnDevice( |
166 self.device, test, self._test_arguments) | 179 self.device, test, self._test_arguments) |
167 test_results = self._ParseTestOutput( | 180 test_results = self._ParseTestOutput( |
168 self.test_package.SpawnTestProcess(self.device)) | 181 self.test_package.SpawnTestProcess(self.device)) |
| 182 if self._app_data_files: |
| 183 self.test_package.PullAppFiles(self.device, self._app_data_files, |
| 184 self._app_data_file_dir) |
169 finally: | 185 finally: |
170 for s in self._servers: | 186 for s in self._servers: |
171 s.Reset() | 187 s.Reset() |
172 # Calculate unknown test results. | 188 # Calculate unknown test results. |
173 all_tests = set(test.split(':')) | 189 all_tests = set(test.split(':')) |
174 all_tests_ran = set([t.GetName() for t in test_results.GetAll()]) | 190 all_tests_ran = set([t.GetName() for t in test_results.GetAll()]) |
175 unknown_tests = all_tests - all_tests_ran | 191 unknown_tests = all_tests - all_tests_ran |
176 test_results.AddResults( | 192 test_results.AddResults( |
177 [base_test_result.BaseTestResult(t, base_test_result.ResultType.UNKNOWN) | 193 [base_test_result.BaseTestResult(t, base_test_result.ResultType.UNKNOWN) |
178 for t in unknown_tests]) | 194 for t in unknown_tests]) |
(...skipping 13 matching lines...) Expand all Loading... |
192 #override | 208 #override |
193 def TearDown(self): | 209 def TearDown(self): |
194 """Cleans up the test enviroment for the test suite.""" | 210 """Cleans up the test enviroment for the test suite.""" |
195 for s in self._servers: | 211 for s in self._servers: |
196 s.TearDown() | 212 s.TearDown() |
197 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): | 213 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): |
198 self._perf_controller.SetDefaultPerfMode() | 214 self._perf_controller.SetDefaultPerfMode() |
199 self.test_package.ClearApplicationState(self.device) | 215 self.test_package.ClearApplicationState(self.device) |
200 self.tool.CleanUpEnvironment() | 216 self.tool.CleanUpEnvironment() |
201 super(TestRunner, self).TearDown() | 217 super(TestRunner, self).TearDown() |
OLD | NEW |