| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 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 """Base class for linker-specific test cases. | 5 """Base class for linker-specific test cases. |
| 6 | 6 |
| 7 The custom dynamic linker can only be tested through a custom test case | 7 The custom dynamic linker can only be tested through a custom test case |
| 8 for various technical reasons: | 8 for various technical reasons: |
| 9 | 9 |
| 10 - It's an 'invisible feature', i.e. it doesn't expose a new API or | 10 - It's an 'invisible feature', i.e. it doesn't expose a new API or |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 logging.debug('Found browser match: %s', browser_match.group(0)) | 87 logging.debug('Found browser match: %s', browser_match.group(0)) |
| 88 renderer_match = logmon.WaitFor(_RE_RENDERER_STATUS_LINE, | 88 renderer_match = logmon.WaitFor(_RE_RENDERER_STATUS_LINE, |
| 89 timeout=timeout) | 89 timeout=timeout) |
| 90 logging.debug('Found renderer match: %s', renderer_match.group(0)) | 90 logging.debug('Found renderer match: %s', renderer_match.group(0)) |
| 91 if (browser_match.group(1) != 'SUCCESS' | 91 if (browser_match.group(1) != 'SUCCESS' |
| 92 or renderer_match.group(1) != 'SUCCESS'): | 92 or renderer_match.group(1) != 'SUCCESS'): |
| 93 result = ResultType.FAIL | 93 result = ResultType.FAIL |
| 94 except device_errors.CommandTimeoutError: | 94 except device_errors.CommandTimeoutError: |
| 95 result = ResultType.TIMEOUT | 95 result = ResultType.TIMEOUT |
| 96 | 96 |
| 97 return result, '\n'.join(device.adb.Logcat(dump=True)) | 97 logcat = device.adb.Logcat(dump=True) |
| 98 |
| 99 logmon.Close() |
| 100 return result, '\n'.join(logcat) |
| 98 | 101 |
| 99 | 102 |
| 100 class LibraryLoadMap(dict): | 103 class LibraryLoadMap(dict): |
| 101 """A helper class to pretty-print a map of library names to load addresses.""" | 104 """A helper class to pretty-print a map of library names to load addresses.""" |
| 102 def __str__(self): | 105 def __str__(self): |
| 103 items = ['\'%s\': 0x%x' % (name, address) for \ | 106 items = ['\'%s\': 0x%x' % (name, address) for \ |
| 104 (name, address) in self.iteritems()] | 107 (name, address) in self.iteritems()] |
| 105 return '{%s}' % (', '.join(items)) | 108 return '{%s}' % (', '.join(items)) |
| 106 | 109 |
| 107 def __repr__(self): | 110 def __repr__(self): |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 175 # Run the test. | 178 # Run the test. |
| 176 status, logs = self._RunTest(device) | 179 status, logs = self._RunTest(device) |
| 177 | 180 |
| 178 result_text = 'OK' | 181 result_text = 'OK' |
| 179 if status == ResultType.FAIL: | 182 if status == ResultType.FAIL: |
| 180 result_text = 'FAILED' | 183 result_text = 'FAILED' |
| 181 elif status == ResultType.TIMEOUT: | 184 elif status == ResultType.TIMEOUT: |
| 182 result_text = 'TIMEOUT' | 185 result_text = 'TIMEOUT' |
| 183 print '[ %*s ] %s' % (margin, result_text, self.tagged_name) | 186 print '[ %*s ] %s' % (margin, result_text, self.tagged_name) |
| 184 | 187 |
| 185 results = base_test_result.TestRunResults() | 188 return base_test_result.BaseTestResult(self.tagged_name, status, log=logs) |
| 186 results.AddResult( | |
| 187 base_test_result.BaseTestResult( | |
| 188 self.tagged_name, | |
| 189 status, | |
| 190 log=logs)) | |
| 191 | 189 |
| 192 return results | |
| 193 | 190 |
| 194 def __str__(self): | 191 def __str__(self): |
| 195 return self.tagged_name | 192 return self.tagged_name |
| 196 | 193 |
| 197 def __repr__(self): | 194 def __repr__(self): |
| 198 return self.tagged_name | 195 return self.tagged_name |
| 199 | 196 |
| 200 | 197 |
| 201 class LinkerSharedRelroTest(LinkerTestCaseBase): | 198 class LinkerSharedRelroTest(LinkerTestCaseBase): |
| 202 """A linker test case to check the status of shared RELRO sections. | 199 """A linker test case to check the status of shared RELRO sections. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 218 | 215 |
| 219 Note that there can be other lines beginning with BROWSER_LINKER_TEST: | 216 Note that there can be other lines beginning with BROWSER_LINKER_TEST: |
| 220 and RENDERER_LINKER_TEST:, but are not followed by a <status> code. | 217 and RENDERER_LINKER_TEST:, but are not followed by a <status> code. |
| 221 | 218 |
| 222 - The test case passes if the <status> for both the browser and renderer | 219 - The test case passes if the <status> for both the browser and renderer |
| 223 process are SUCCESS. Otherwise its a fail. | 220 process are SUCCESS. Otherwise its a fail. |
| 224 """ | 221 """ |
| 225 def _RunTest(self, device): | 222 def _RunTest(self, device): |
| 226 # Wait up to 30 seconds until the linker test status is in the logcat. | 223 # Wait up to 30 seconds until the linker test status is in the logcat. |
| 227 return _StartActivityAndWaitForLinkerTestStatus(device, timeout=30) | 224 return _StartActivityAndWaitForLinkerTestStatus(device, timeout=30) |
| OLD | NEW |