Title: [176814] trunk/Tools
Revision
176814
Author
[email protected]
Date
2014-12-04 13:49:43 -0800 (Thu, 04 Dec 2014)

Log Message

Don't lock perf tests in run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=139264

Reviewed by Daniel Bates.

* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
* Scripts/webkitpy/layout_tests/controllers/manager.py:
* Scripts/webkitpy/layout_tests/models/test_input.py:
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (176813 => 176814)


--- trunk/Tools/ChangeLog	2014-12-04 21:48:33 UTC (rev 176813)
+++ trunk/Tools/ChangeLog	2014-12-04 21:49:43 UTC (rev 176814)
@@ -1,3 +1,16 @@
+2014-12-04  Alexey Proskuryakov  <[email protected]>
+
+        Don't lock perf tests in run-webkit-tests
+        https://bugs.webkit.org/show_bug.cgi?id=139264
+
+        Reviewed by Daniel Bates.
+
+        * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
+        * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
+        * Scripts/webkitpy/layout_tests/controllers/manager.py:
+        * Scripts/webkitpy/layout_tests/models/test_input.py:
+        * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
+
 2014-12-03  Alexey Proskuryakov  <[email protected]>
 
         http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html fails unless certain other tests run before it

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py (176813 => 176814)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py	2014-12-04 21:48:33 UTC (rev 176813)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py	2014-12-04 21:49:43 UTC (rev 176814)
@@ -442,10 +442,10 @@
     def __init__(self, name, test_inputs):
         self.name = name
         self.test_inputs = test_inputs
-        self.requires_lock = test_inputs[0].requires_lock
+        self.needs_servers = test_inputs[0].needs_servers
 
     def __repr__(self):
-        return "TestShard(name='%s', test_inputs=%s, requires_lock=%s'" % (self.name, self.test_inputs, self.requires_lock)
+        return "TestShard(name='%s', test_inputs=%s, needs_servers=%s'" % (self.name, self.test_inputs, self.needs_servers)
 
     def __eq__(self, other):
         return self.name == other.name and self.test_inputs == other.test_inputs
@@ -482,7 +482,7 @@
         locked_inputs = []
         unlocked_inputs = []
         for test_input in test_inputs:
-            if test_input.requires_lock:
+            if test_input.needs_servers:
                 locked_inputs.append(test_input)
             else:
                 unlocked_inputs.append(test_input)
@@ -506,7 +506,7 @@
             # Note that we use a '.' for the shard name; the name doesn't really
             # matter, and the only other meaningful value would be the filename,
             # which would be really redundant.
-            if test_input.requires_lock:
+            if test_input.needs_servers:
                 locked_shards.append(TestShard('.', [test_input]))
             else:
                 unlocked_shards.append(TestShard('.', [test_input]))
@@ -530,7 +530,7 @@
 
         for directory, test_inputs in tests_by_dir.iteritems():
             shard = TestShard(directory, test_inputs)
-            if test_inputs[0].requires_lock:
+            if test_inputs[0].needs_servers:
                 locked_shards.append(shard)
             else:
                 unlocked_shards.append(shard)

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py (176813 => 176814)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py	2014-12-04 21:48:33 UTC (rev 176813)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py	2014-12-04 21:49:43 UTC (rev 176814)
@@ -112,10 +112,6 @@
         runner = self._runner()
         self._run_tests(runner, ['http/tests/passes/text.html', 'passes/text.html'])
 
-    def test_perf_locking(self):
-        runner = self._runner()
-        self._run_tests(runner, ['http/tests/passes/text.html', 'perf/foo/test.html'])
-
     def test_interrupt_if_at_failure_limits(self):
         runner = self._runner()
         runner._options.exit_after_n_failures = None
@@ -233,11 +229,10 @@
         "dom/html/level2/html/HTMLAnchorElement03.html",
         "ietestcenter/_javascript_/11.1.5_4-4-c-1.html",
         "dom/html/level2/html/HTMLAnchorElement06.html",
-        "perf/object-keys.html",
     ]
 
     def get_test_input(self, test_file):
-        return TestInput(test_file, requires_lock=(test_file.startswith('http') or test_file.startswith('perf')))
+        return TestInput(test_file, needs_servers=(test_file.startswith('http')))
 
     def get_shards(self, num_workers, fully_parallel, test_list=None, max_locked_shards=1):
         port = TestPort(MockSystemHost())
@@ -264,8 +259,7 @@
                ['http/tests/security/view-source-no-refresh.html',
                 'http/tests/websocket/tests/unicode.htm',
                 'http/tests/websocket/tests/websocket-protocol-ignored.html',
-                'http/tests/xmlhttprequest/supported-xml-content-types.html',
-                'perf/object-keys.html'])])
+                'http/tests/xmlhttprequest/supported-xml-content-types.html'])])
         self.assert_shards(unlocked,
             [('animations', ['animations/keyframes.html']),
              ('dom/html/level2/html', ['dom/html/level2/html/HTMLAnchorElement03.html',
@@ -279,8 +273,7 @@
             [('.', ['http/tests/websocket/tests/unicode.htm']),
              ('.', ['http/tests/security/view-source-no-refresh.html']),
              ('.', ['http/tests/websocket/tests/websocket-protocol-ignored.html']),
-             ('.', ['http/tests/xmlhttprequest/supported-xml-content-types.html']),
-             ('.', ['perf/object-keys.html'])]),
+             ('.', ['http/tests/xmlhttprequest/supported-xml-content-types.html'])]),
         self.assert_shards(unlocked,
             [('.', ['animations/keyframes.html']),
              ('.', ['fast/css/display-none-inline-style-change-crash.html']),
@@ -295,8 +288,7 @@
               ['http/tests/websocket/tests/unicode.htm',
                'http/tests/security/view-source-no-refresh.html',
                'http/tests/websocket/tests/websocket-protocol-ignored.html',
-               'http/tests/xmlhttprequest/supported-xml-content-types.html',
-               'perf/object-keys.html'])])
+               'http/tests/xmlhttprequest/supported-xml-content-types.html'])])
         self.assert_shards(unlocked,
             [('unlocked_tests',
               ['animations/keyframes.html',
@@ -325,8 +317,7 @@
                'http/tests/websocket/tests/unicode.htm',
                'http/tests/websocket/tests/websocket-protocol-ignored.html']),
              ('locked_shard_2',
-              ['http/tests/xmlhttprequest/supported-xml-content-types.html',
-               'perf/object-keys.html'])])
+              ['http/tests/xmlhttprequest/supported-xml-content-types.html'])])
 
         locked, unlocked = self.get_shards(num_workers=4, fully_parallel=False)
         self.assert_shards(locked,
@@ -334,5 +325,4 @@
               ['http/tests/security/view-source-no-refresh.html',
                'http/tests/websocket/tests/unicode.htm',
                'http/tests/websocket/tests/websocket-protocol-ignored.html',
-               'http/tests/xmlhttprequest/supported-xml-content-types.html',
-               'perf/object-keys.html'])])
+               'http/tests/xmlhttprequest/supported-xml-content-types.html'])])

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py (176813 => 176814)


--- trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py	2014-12-04 21:48:33 UTC (rev 176813)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py	2014-12-04 21:49:43 UTC (rev 176814)
@@ -78,7 +78,6 @@
         self._expectations = None
 
         self.HTTP_SUBDIR = 'http' + port.TEST_PATH_SEPARATOR
-        self.PERF_SUBDIR = 'perf'
         self.WEBSOCKET_SUBDIR = 'websocket' + port.TEST_PATH_SEPARATOR
         self.LAYOUT_TESTS_DIRECTORY = 'LayoutTests'
 
@@ -102,9 +101,6 @@
     def _http_tests(self, test_names):
         return set(test for test in test_names if self._is_http_test(test))
 
-    def _is_perf_test(self, test):
-        return self.PERF_SUBDIR == test or (self.PERF_SUBDIR + self._port.TEST_PATH_SEPARATOR) in test
-
     def _prepare_lists(self, paths, test_names):
         tests_to_skip = self._finder.skip_tests(paths, test_names, self._expectations, self._http_tests(test_names))
         tests_to_run = [test for test in test_names if test not in tests_to_skip]
@@ -125,20 +121,13 @@
     def _test_input_for_file(self, test_file):
         return TestInput(test_file,
             self._options.slow_time_out_ms if self._test_is_slow(test_file) else self._options.time_out_ms,
-            self._test_requires_lock(test_file))
+            self._is_http_test(test_file))
 
-    def _test_requires_lock(self, test_file):
-        """Return True if the test needs to be locked when
-        running multiple copies of NRWTs. Perf tests are locked
-        because heavy load caused by running other tests in parallel
-        might cause some of them to timeout."""
-        return self._is_http_test(test_file) or self._is_perf_test(test_file)
-
     def _test_is_slow(self, test_file):
         return self._expectations.model().has_modifier(test_file, test_expectations.SLOW)
 
     def needs_servers(self, test_names):
-        return any(self._test_requires_lock(test_name) for test_name in test_names) and self._options.http
+        return any(self._is_http_test(test_name) for test_name in test_names) and self._options.http
 
     def _set_up_run(self, test_names):
         self._printer.write_update("Checking build ...")

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/models/test_input.py (176813 => 176814)


--- trunk/Tools/Scripts/webkitpy/layout_tests/models/test_input.py	2014-12-04 21:48:33 UTC (rev 176813)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/models/test_input.py	2014-12-04 21:49:43 UTC (rev 176814)
@@ -31,15 +31,15 @@
 class TestInput(object):
     """Groups information about a test for easy passing of data."""
 
-    def __init__(self, test_name, timeout=None, requires_lock=None, reference_files=None, should_run_pixel_tests=None):
+    def __init__(self, test_name, timeout=None, needs_servers=None, reference_files=None, should_run_pixel_tests=None):
         # TestInput objects are normally constructed by the manager and passed
         # to the workers, but these some fields are set lazily in the workers where possible
         # because they require us to look at the filesystem and we want to be able to do that in parallel.
         self.test_name = test_name
         self.timeout = timeout  # in msecs; should rename this for consistency
-        self.requires_lock = requires_lock
+        self.needs_servers = needs_servers
         self.reference_files = reference_files
         self.should_run_pixel_tests = should_run_pixel_tests
 
     def __repr__(self):
-        return "TestInput('%s', timeout=%s, requires_lock=%s, reference_files=%s, should_run_pixel_tests=%s)" % (self.test_name, self.timeout, self.requires_lock, self.reference_files, self.should_run_pixel_tests)
+        return "TestInput('%s', timeout=%s, needs_servers=%s, reference_files=%s, should_run_pixel_tests=%s)" % (self.test_name, self.timeout, self.needs_servers, self.reference_files, self.should_run_pixel_tests)

Modified: trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py (176813 => 176814)


--- trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py	2014-12-04 21:48:33 UTC (rev 176813)
+++ trunk/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py	2014-12-04 21:49:43 UTC (rev 176814)
@@ -339,9 +339,9 @@
         self.assertEqual(tests_to_run, tests_run)
 
     def test_no_order_with_directory_entries_in_natural_order(self):
-        tests_to_run = ['http/tests/ssl', 'perf/foo', 'http/tests/passes']
+        tests_to_run = ['http/tests/ssl', 'http/tests/passes']
         tests_run = get_tests_run(['--order=none'] + tests_to_run)
-        self.assertEqual(tests_run, ['http/tests/ssl/text.html', 'perf/foo/test.html', 'http/tests/passes/image.html', 'http/tests/passes/text.html'])
+        self.assertEqual(tests_run, ['http/tests/ssl/text.html', 'http/tests/passes/image.html', 'http/tests/passes/text.html'])
 
     def test_gc_between_tests(self):
         self.assertTrue(passing_run(['--gc-between-tests']))
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to