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 |