| 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 | 8 |
| 9 from pylib import pexpect | 9 from pylib import pexpect |
| 10 from pylib import ports |
| 10 from pylib.base import base_test_result | 11 from pylib.base import base_test_result |
| 11 from pylib.base import base_test_runner | 12 from pylib.base import base_test_runner |
| 12 from pylib.device import device_errors | 13 from pylib.device import device_errors |
| 14 from pylib.local import local_test_server_spawner |
| 13 from pylib.perf import perf_control | 15 from pylib.perf import perf_control |
| 14 | 16 |
| 15 | 17 |
| 16 def _TestSuiteRequiresMockTestServer(suite_name): | 18 def _TestSuiteRequiresMockTestServer(suite_name): |
| 17 """Returns True if the test suite requires mock test server.""" | 19 """Returns True if the test suite requires mock test server.""" |
| 18 tests_require_net_test_server = ['unit_tests', 'net_unittests', | 20 tests_require_net_test_server = ['unit_tests', 'net_unittests', |
| 19 'content_unittests', | 21 'content_unittests', |
| 20 'content_browsertests'] | 22 'content_browsertests'] |
| 21 return (suite_name in | 23 return (suite_name in |
| 22 tests_require_net_test_server) | 24 tests_require_net_test_server) |
| (...skipping 23 matching lines...) Expand all Loading... |
| 46 if timeout == 0: | 48 if timeout == 0: |
| 47 timeout = 60 | 49 timeout = 60 |
| 48 # On a VM (e.g. chromium buildbots), this timeout is way too small. | 50 # On a VM (e.g. chromium buildbots), this timeout is way too small. |
| 49 if os.environ.get('BUILDBOT_SLAVENAME'): | 51 if os.environ.get('BUILDBOT_SLAVENAME'): |
| 50 timeout = timeout * 2 | 52 timeout = timeout * 2 |
| 51 | 53 |
| 52 self._timeout = timeout * self.tool.GetTimeoutScale() | 54 self._timeout = timeout * self.tool.GetTimeoutScale() |
| 53 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): | 55 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): |
| 54 self._perf_controller = perf_control.PerfControl(self.device) | 56 self._perf_controller = perf_control.PerfControl(self.device) |
| 55 | 57 |
| 58 if _TestSuiteRequiresMockTestServer(self.test_package.suite_name): |
| 59 self._servers = [ |
| 60 local_test_server_spawner.LocalTestServerSpawner( |
| 61 ports.AllocateTestServerPort(), self.device, self.tool)] |
| 62 else: |
| 63 self._servers = [] |
| 64 |
| 56 #override | 65 #override |
| 57 def InstallTestPackage(self): | 66 def InstallTestPackage(self): |
| 58 self.test_package.Install(self.device) | 67 self.test_package.Install(self.device) |
| 59 | 68 |
| 60 def _ParseTestOutput(self, p): | 69 def _ParseTestOutput(self, p): |
| 61 """Process the test output. | 70 """Process the test output. |
| 62 | 71 |
| 63 Args: | 72 Args: |
| 64 p: An instance of pexpect spawn class. | 73 p: An instance of pexpect spawn class. |
| 65 | 74 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 if not test: | 151 if not test: |
| 143 return test_results, None | 152 return test_results, None |
| 144 | 153 |
| 145 try: | 154 try: |
| 146 self.test_package.ClearApplicationState(self.device) | 155 self.test_package.ClearApplicationState(self.device) |
| 147 self.test_package.CreateCommandLineFileOnDevice( | 156 self.test_package.CreateCommandLineFileOnDevice( |
| 148 self.device, test, self._test_arguments) | 157 self.device, test, self._test_arguments) |
| 149 test_results = self._ParseTestOutput( | 158 test_results = self._ParseTestOutput( |
| 150 self.test_package.SpawnTestProcess(self.device)) | 159 self.test_package.SpawnTestProcess(self.device)) |
| 151 finally: | 160 finally: |
| 152 self.CleanupSpawningServerState() | 161 for s in self._servers: |
| 162 s.Reset() |
| 153 # Calculate unknown test results. | 163 # Calculate unknown test results. |
| 154 all_tests = set(test.split(':')) | 164 all_tests = set(test.split(':')) |
| 155 all_tests_ran = set([t.GetName() for t in test_results.GetAll()]) | 165 all_tests_ran = set([t.GetName() for t in test_results.GetAll()]) |
| 156 unknown_tests = all_tests - all_tests_ran | 166 unknown_tests = all_tests - all_tests_ran |
| 157 test_results.AddResults( | 167 test_results.AddResults( |
| 158 [base_test_result.BaseTestResult(t, base_test_result.ResultType.UNKNOWN) | 168 [base_test_result.BaseTestResult(t, base_test_result.ResultType.UNKNOWN) |
| 159 for t in unknown_tests]) | 169 for t in unknown_tests]) |
| 160 retry = ':'.join([t.GetName() for t in test_results.GetNotPass()]) | 170 retry = ':'.join([t.GetName() for t in test_results.GetNotPass()]) |
| 161 return test_results, retry | 171 return test_results, retry |
| 162 | 172 |
| 163 #override | 173 #override |
| 164 def SetUp(self): | 174 def SetUp(self): |
| 165 """Sets up necessary test enviroment for the test suite.""" | 175 """Sets up necessary test enviroment for the test suite.""" |
| 166 super(TestRunner, self).SetUp() | 176 super(TestRunner, self).SetUp() |
| 167 if _TestSuiteRequiresMockTestServer(self.test_package.suite_name): | 177 for s in self._servers: |
| 168 self.LaunchChromeTestServerSpawner() | 178 s.SetUp() |
| 169 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): | 179 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): |
| 170 self._perf_controller.SetHighPerfMode() | 180 self._perf_controller.SetHighPerfMode() |
| 171 self.tool.SetupEnvironment() | 181 self.tool.SetupEnvironment() |
| 172 | 182 |
| 173 #override | 183 #override |
| 174 def TearDown(self): | 184 def TearDown(self): |
| 175 """Cleans up the test enviroment for the test suite.""" | 185 """Cleans up the test enviroment for the test suite.""" |
| 186 for s in self._servers: |
| 187 s.TearDown() |
| 176 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): | 188 if _TestSuiteRequiresHighPerfMode(self.test_package.suite_name): |
| 177 self._perf_controller.SetDefaultPerfMode() | 189 self._perf_controller.SetDefaultPerfMode() |
| 178 self.test_package.ClearApplicationState(self.device) | 190 self.test_package.ClearApplicationState(self.device) |
| 179 self.tool.CleanUpEnvironment() | 191 self.tool.CleanUpEnvironment() |
| 180 super(TestRunner, self).TearDown() | 192 super(TestRunner, self).TearDown() |
| OLD | NEW |