| OLD | NEW |
| 1 # Copyright (C) 2010 Google Inc. All rights reserved. | 1 # Copyright (C) 2010 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 import logging | 33 import logging |
| 34 import re | 34 import re |
| 35 import signal | 35 import signal |
| 36 import subprocess | 36 import subprocess |
| 37 import sys | 37 import sys |
| 38 import time | 38 import time |
| 39 | 39 |
| 40 from webkitpy.common.system import executive | 40 from webkitpy.common.system import executive |
| 41 from webkitpy.layout_tests.models.test_configuration import TestConfiguration | 41 from webkitpy.layout_tests.models.test_configuration import TestConfiguration |
| 42 from webkitpy.layout_tests.port.base import Port, VirtualTestSuite | 42 from webkitpy.layout_tests.port.base import Port, VirtualTestSuite |
| 43 from webkitpy.layout_tests.port.http_lock import HttpLock | |
| 44 | 43 |
| 45 | 44 |
| 46 _log = logging.getLogger(__name__) | 45 _log = logging.getLogger(__name__) |
| 47 | 46 |
| 48 | 47 |
| 49 class ChromiumPort(Port): | 48 class ChromiumPort(Port): |
| 50 """Abstract base class for Chromium implementations of the Port class.""" | 49 """Abstract base class for Chromium implementations of the Port class.""" |
| 51 | 50 |
| 52 ALL_SYSTEMS = ( | 51 ALL_SYSTEMS = ( |
| 53 ('snowleopard', 'x86'), | 52 ('snowleopard', 'x86'), |
| (...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 | 316 |
| 318 def repository_paths(self): | 317 def repository_paths(self): |
| 319 repos = super(ChromiumPort, self).repository_paths() | 318 repos = super(ChromiumPort, self).repository_paths() |
| 320 repos.append(('chromium', self.path_from_chromium_base('build'))) | 319 repos.append(('chromium', self.path_from_chromium_base('build'))) |
| 321 return repos | 320 return repos |
| 322 | 321 |
| 323 def _get_crash_log(self, name, pid, stdout, stderr, newer_than): | 322 def _get_crash_log(self, name, pid, stdout, stderr, newer_than): |
| 324 if stderr and 'AddressSanitizer' in stderr: | 323 if stderr and 'AddressSanitizer' in stderr: |
| 325 # Running the AddressSanitizer take a lot of memory, so we need to | 324 # Running the AddressSanitizer take a lot of memory, so we need to |
| 326 # serialize access to it across all the concurrently running drivers
. | 325 # serialize access to it across all the concurrently running drivers
. |
| 327 lock = HttpLock(lock_path=None, lock_file_prefix='WebKitASAN.lock.', | 326 |
| 328 filesystem=self._filesystem, executive=self._executi
ve, | 327 # FIXME: investigate using LLVM_SYMBOLIZER_PATH here to reduce the o
verhead. |
| 329 name='ASAN') | 328 asan_filter_path = self.path_from_chromium_base('tools', 'valgrind',
'asan', 'asan_symbolize.py') |
| 330 try: | 329 if self._filesystem.exists(asan_filter_path): |
| 331 lock.wait_for_httpd_lock() | 330 output = self._executive.run_command(['flock', asan_filter_path]
, input=stderr, decode_output=False) |
| 332 asan_filter_path = self.path_from_chromium_base('tools', 'valgri
nd', 'asan', 'asan_symbolize.py') | 331 stderr = self._executive.run_command(['c++filt'], input=output,
decode_output=False) |
| 333 if self._filesystem.exists(asan_filter_path): | |
| 334 output = self._executive.run_command([asan_filter_path], inp
ut=stderr, decode_output=False) | |
| 335 stderr = self._executive.run_command(['c++filt'], input=outp
ut, decode_output=False) | |
| 336 finally: | |
| 337 lock.cleanup_http_lock() | |
| 338 | 332 |
| 339 return super(ChromiumPort, self)._get_crash_log(name, pid, stdout, stder
r, newer_than) | 333 return super(ChromiumPort, self)._get_crash_log(name, pid, stdout, stder
r, newer_than) |
| 340 | 334 |
| 341 def virtual_test_suites(self): | 335 def virtual_test_suites(self): |
| 342 return [ | 336 return [ |
| 343 VirtualTestSuite('virtual/gpu/fast/canvas', | 337 VirtualTestSuite('virtual/gpu/fast/canvas', |
| 344 'fast/canvas', | 338 'fast/canvas', |
| 345 ['--enable-accelerated-2d-canvas']), | 339 ['--enable-accelerated-2d-canvas']), |
| 346 VirtualTestSuite('virtual/gpu/canvas/philip', | 340 VirtualTestSuite('virtual/gpu/canvas/philip', |
| 347 'canvas/philip', | 341 'canvas/philip', |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 416 # That's fine because, in this case, we must already be running the | 410 # That's fine because, in this case, we must already be running the |
| 417 # most up-to-date one. | 411 # most up-to-date one. |
| 418 except OSError: | 412 except OSError: |
| 419 pass | 413 pass |
| 420 return True | 414 return True |
| 421 | 415 |
| 422 def _chromium_baseline_path(self, platform): | 416 def _chromium_baseline_path(self, platform): |
| 423 if platform is None: | 417 if platform is None: |
| 424 platform = self.name() | 418 platform = self.name() |
| 425 return self.path_from_webkit_base('LayoutTests', 'platform', platform) | 419 return self.path_from_webkit_base('LayoutTests', 'platform', platform) |
| OLD | NEW |