| 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 glob | 5 import glob |
| 6 import logging | 6 import logging |
| 7 import os | 7 import os |
| 8 import sys | 8 import sys |
| 9 | 9 |
| 10 from base_test_runner import BaseTestRunner | 10 from base_test_runner import BaseTestRunner |
| 11 import android_commands |
| 11 import debug_info | 12 import debug_info |
| 12 import constants | 13 import constants |
| 13 import perf_tests_helper | 14 import perf_tests_helper |
| 14 import run_tests_helper | 15 import run_tests_helper |
| 16 from android_commands import errors |
| 15 from test_package_apk import TestPackageApk | 17 from test_package_apk import TestPackageApk |
| 16 from test_package_executable import TestPackageExecutable | 18 from test_package_executable import TestPackageExecutable |
| 17 from test_result import TestResults | 19 from test_result import BaseTestResult, TestResults |
| 18 | 20 |
| 19 | 21 |
| 20 class SingleTestRunner(BaseTestRunner): | 22 class SingleTestRunner(BaseTestRunner): |
| 21 """Single test suite attached to a single device. | 23 """Single test suite attached to a single device. |
| 22 | 24 |
| 23 Args: | 25 Args: |
| 24 device: Device to run the tests. | 26 device: Device to run the tests. |
| 25 test_suite: A specific test suite to run, empty to run all. | 27 test_suite: A specific test suite to run, empty to run all. |
| 26 gtest_filter: A gtest_filter flag. | 28 gtest_filter: A gtest_filter flag. |
| 27 test_arguments: Additional arguments to pass to the test binary. | 29 test_arguments: Additional arguments to pass to the test binary. |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 self.test_results = TestResults.FromRun( | 302 self.test_results = TestResults.FromRun( |
| 301 ok=list(executed_results - failed_results), | 303 ok=list(executed_results - failed_results), |
| 302 failed=list(failed_results)) | 304 failed=list(failed_results)) |
| 303 | 305 |
| 304 def RunTests(self): | 306 def RunTests(self): |
| 305 """Runs all tests (in rebaseline mode, runs each test in isolation). | 307 """Runs all tests (in rebaseline mode, runs each test in isolation). |
| 306 | 308 |
| 307 Returns: | 309 Returns: |
| 308 A TestResults object. | 310 A TestResults object. |
| 309 """ | 311 """ |
| 310 if self.test_package.rebaseline: | 312 try: |
| 311 self.RebaselineTests() | 313 if self.test_package.rebaseline: |
| 312 else: | 314 self.RebaselineTests() |
| 313 if not self._gtest_filter: | 315 else: |
| 314 self._gtest_filter = ('-' + ':'.join(self.GetDisabledTests()) + ':' + | 316 if not self._gtest_filter: |
| 315 ':'.join(['*.' + x + '*' for x in | 317 self._gtest_filter = ('-' + ':'.join(self.GetDisabledTests()) + ':' + |
| 316 self.test_package.GetDisabledPrefixes()])) | 318 ':'.join(['*.' + x + '*' for x in |
| 317 self.RunTestsWithFilter() | 319 self.test_package.GetDisabledPrefixes()])) |
| 320 self.RunTestsWithFilter() |
| 321 except errors.DeviceUnresponsiveError as e: |
| 322 # Make sure this device is not attached |
| 323 if android_commands.IsDeviceAttached(self.device): |
| 324 raise e |
| 325 |
| 326 # Wrap the results |
| 327 logging.warning(e) |
| 328 failed_tests = [] |
| 329 for t in self._gtest_filter.split(':'): |
| 330 failed_tests += [BaseTestResult(t, '')] |
| 331 self.test_results = TestResults.FromRun( |
| 332 failed=failed_tests, device_exception=self.device) |
| 333 |
| 318 return self.test_results | 334 return self.test_results |
| 319 | 335 |
| 320 def SetUp(self): | 336 def SetUp(self): |
| 321 """Sets up necessary test enviroment for the test suite.""" | 337 """Sets up necessary test enviroment for the test suite.""" |
| 322 super(SingleTestRunner, self).SetUp() | 338 super(SingleTestRunner, self).SetUp() |
| 323 self.adb.ClearApplicationState(constants.CHROME_PACKAGE) | 339 self.adb.ClearApplicationState(constants.CHROME_PACKAGE) |
| 324 if self._performance_test_setup: | 340 if self._performance_test_setup: |
| 325 self._performance_test_setup.SetUp() | 341 self._performance_test_setup.SetUp() |
| 326 if self.dump_debug_info: | 342 if self.dump_debug_info: |
| 327 self.dump_debug_info.StartRecordingLog(True) | 343 self.dump_debug_info.StartRecordingLog(True) |
| 328 self.StripAndCopyFiles() | 344 self.StripAndCopyFiles() |
| 329 self.LaunchHelperToolsForTestSuite() | 345 self.LaunchHelperToolsForTestSuite() |
| 330 self.tool.SetupEnvironment() | 346 self.tool.SetupEnvironment() |
| 331 | 347 |
| 332 def TearDown(self): | 348 def TearDown(self): |
| 333 """Cleans up the test enviroment for the test suite.""" | 349 """Cleans up the test enviroment for the test suite.""" |
| 334 self.tool.CleanUpEnvironment() | 350 self.tool.CleanUpEnvironment() |
| 335 if self.test_package.cleanup_test_files: | 351 if self.test_package.cleanup_test_files: |
| 336 self.adb.RemovePushedFiles() | 352 self.adb.RemovePushedFiles() |
| 337 if self.dump_debug_info: | 353 if self.dump_debug_info: |
| 338 self.dump_debug_info.StopRecordingLog() | 354 self.dump_debug_info.StopRecordingLog() |
| 339 if self._performance_test_setup: | 355 if self._performance_test_setup: |
| 340 self._performance_test_setup.TearDown() | 356 self._performance_test_setup.TearDown() |
| 341 if self.dump_debug_info: | 357 if self.dump_debug_info: |
| 342 self.dump_debug_info.ArchiveNewCrashFiles() | 358 self.dump_debug_info.ArchiveNewCrashFiles() |
| 343 super(SingleTestRunner, self).TearDown() | 359 super(SingleTestRunner, self).TearDown() |
| OLD | NEW |