Commit d616422e authored by Stephen McGruer's avatar Stephen McGruer Committed by Commit Bot

[blinkpy] Always consider WPT idlharness tests to be slow

These tests consistently take 5-6x longer to run when DCHECK is enabled
versus when it is now. This takes a 0.5-1s test into flaky timeout
category, and we have seem many, many flakes with idlharness tests on
the CQ bots (which are DCHECK-enabled, versus the waterfall bots that
aren't).

Investigations into this slowdown were inconclusive. It appears that the
heavy use of JavaScript in idlharness tests means they get a much worse
slowdown than most web_tests (which are rarely JavaScript-bound), but
even with the v8 team's help we were unable to identify any particular
DCHECKs that could be modified or disabled to improve the situation. As
such, our final option is to just hack them into always being considered
slow tests.

Note that since we can't detect whether or not DCHECK is on, we consider
them slow for all setups.

Bug: 1047818
Change-Id: I33b27017f6c9641dbe9881a78a33563fb8b2df67
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2232698Reviewed-by: default avatarRobert Ma <robertma@chromium.org>
Commit-Queue: Stephen McGruer <smcgruer@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776069}
parent baafbcac
...@@ -966,6 +966,16 @@ class Port(object): ...@@ -966,6 +966,16 @@ class Port(object):
return self.wpt_manifest(wpt_path).is_crash_test(path_in_wpt) return self.wpt_manifest(wpt_path).is_crash_test(path_in_wpt)
def is_slow_wpt_test(self, test_file): def is_slow_wpt_test(self, test_file):
# When DCHECK is enabled, idlharness tests run 5-6x slower due to the
# amount of JavaScript they use (most web_tests run very little JS).
# This causes flaky timeouts for a lot of them, as a 0.5-1s test becomes
# close to the default 6s timeout.
#
# Since we can't detect DCHECK being enabled, we instead always consider
# idlharness tests to be slow. See https://crbug.com/1047818
if self.is_wpt_idlharness_test(test_file):
return True
match = self.WPT_REGEX.match(test_file) match = self.WPT_REGEX.match(test_file)
if not match: if not match:
return False return False
......
...@@ -1138,6 +1138,11 @@ class PortTest(LoggingTestCase): ...@@ -1138,6 +1138,11 @@ class PortTest(LoggingTestCase):
port.is_slow_wpt_test( port.is_slow_wpt_test(
'external/wpt/html/dom/elements/global-attributes/dir_auto-EN-L.html' 'external/wpt/html/dom/elements/global-attributes/dir_auto-EN-L.html'
)) ))
# We always consider idlharness tests slow, even if they aren't marked
# such in the manifest. See https://crbug.com/1047818
self.assertTrue(
port.is_slow_wpt_test(
'external/wpt/css/css-pseudo/idlharness.html'))
def test_is_slow_wpt_test_with_variations(self): def test_is_slow_wpt_test_with_variations(self):
port = self.make_port(with_tests=True) port = self.make_port(with_tests=True)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment