| Index: third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
|
| diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
|
| index f0d1af24407c82abeabe0ced36f0a7f2023bdec0..eddd5bc8c3b3b8f87e9b2de10655a056352bfcbd 100644
|
| --- a/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
|
| +++ b/third_party/WebKit/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
|
| @@ -40,7 +40,6 @@ from webkitpy.layout_tests.models.test_input import TestInput
|
| from webkitpy.layout_tests.models.test_results import TestResult
|
| from webkitpy.layout_tests.port.test import TestPort
|
|
|
| -
|
| TestExpectations = test_expectations.TestExpectations
|
|
|
|
|
| @@ -179,16 +178,14 @@ class SharderTests(unittest.TestCase):
|
| port = TestPort(MockSystemHost())
|
| self.sharder = Sharder(port.split_test, max_locked_shards)
|
| test_list = test_list or self.test_list
|
| - return self.sharder.shard_tests([self.get_test_input(test) for test in test_list],
|
| - num_workers, fully_parallel, run_singly)
|
| + return self.sharder.shard_tests([self.get_test_input(test) for test in test_list], num_workers, fully_parallel, run_singly)
|
|
|
| def assert_shards(self, actual_shards, expected_shard_names):
|
| self.assertEqual(len(actual_shards), len(expected_shard_names))
|
| for i, shard in enumerate(actual_shards):
|
| expected_shard_name, expected_test_names = expected_shard_names[i]
|
| self.assertEqual(shard.name, expected_shard_name)
|
| - self.assertEqual([test_input.test_name for test_input in shard.test_inputs],
|
| - expected_test_names)
|
| + self.assertEqual([test_input.test_name for test_input in shard.test_inputs], expected_test_names)
|
|
|
| def test_shard_by_dir(self):
|
| locked, unlocked = self.get_shards(num_workers=2, fully_parallel=False, run_singly=False)
|
| @@ -196,100 +193,88 @@ class SharderTests(unittest.TestCase):
|
| # Note that although there are tests in multiple dirs that need locks,
|
| # they are crammed into a single shard in order to reduce the # of
|
| # workers hitting the server at once.
|
| - self.assert_shards(locked,
|
| - [('locked_shard_1',
|
| - ['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'])])
|
| + self.assert_shards(locked, [('locked_shard_1',
|
| + ['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'])])
|
| self.assert_shards(unlocked,
|
| - [('virtual/threaded/dir', ['virtual/threaded/dir/test.html']),
|
| - ('virtual/threaded/fast/foo', ['virtual/threaded/fast/foo/test.html']),
|
| - ('animations', ['animations/keyframes.html']),
|
| - ('dom/html/level2/html', ['dom/html/level2/html/HTMLAnchorElement03.html',
|
| - 'dom/html/level2/html/HTMLAnchorElement06.html']),
|
| - ('fast/css', ['fast/css/display-none-inline-style-change-crash.html'])])
|
| + [('virtual/threaded/dir', ['virtual/threaded/dir/test.html']),
|
| + ('virtual/threaded/fast/foo', ['virtual/threaded/fast/foo/test.html']),
|
| + ('animations', ['animations/keyframes.html']), ('dom/html/level2/html',
|
| + ['dom/html/level2/html/HTMLAnchorElement03.html',
|
| + 'dom/html/level2/html/HTMLAnchorElement06.html']),
|
| + ('fast/css', ['fast/css/display-none-inline-style-change-crash.html'])])
|
|
|
| def test_shard_every_file(self):
|
| locked, unlocked = self.get_shards(num_workers=2, fully_parallel=True, max_locked_shards=2, run_singly=False)
|
| - self.assert_shards(locked,
|
| - [('locked_shard_1',
|
| - ['http/tests/websocket/tests/unicode.htm',
|
| - 'http/tests/security/view-source-no-refresh.html',
|
| - 'http/tests/websocket/tests/websocket-protocol-ignored.html']),
|
| - ('locked_shard_2',
|
| - ['http/tests/xmlhttprequest/supported-xml-content-types.html',
|
| - 'perf/object-keys.html'])]),
|
| - self.assert_shards(unlocked,
|
| + self.assert_shards(locked, [('locked_shard_1',
|
| + ['http/tests/websocket/tests/unicode.htm', 'http/tests/security/view-source-no-refresh.html',
|
| + 'http/tests/websocket/tests/websocket-protocol-ignored.html']),
|
| + ('locked_shard_2', ['http/tests/xmlhttprequest/supported-xml-content-types.html',
|
| + 'perf/object-keys.html'])]),
|
| + self.assert_shards(
|
| + unlocked,
|
| [('virtual/threaded/dir', ['virtual/threaded/dir/test.html']),
|
| - ('virtual/threaded/fast/foo', ['virtual/threaded/fast/foo/test.html']),
|
| - ('.', ['animations/keyframes.html']),
|
| + ('virtual/threaded/fast/foo', ['virtual/threaded/fast/foo/test.html']), ('.', ['animations/keyframes.html']),
|
| ('.', ['fast/css/display-none-inline-style-change-crash.html']),
|
| - ('.', ['dom/html/level2/html/HTMLAnchorElement03.html']),
|
| - ('.', ['dom/html/level2/html/HTMLAnchorElement06.html'])])
|
| + ('.', ['dom/html/level2/html/HTMLAnchorElement03.html']), ('.', ['dom/html/level2/html/HTMLAnchorElement06.html'])])
|
|
|
| def test_shard_in_two(self):
|
| locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False, run_singly=False)
|
| - self.assert_shards(locked,
|
| - [('locked_tests',
|
| - ['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'])])
|
| + self.assert_shards(locked, [('locked_tests',
|
| + ['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'])])
|
| self.assert_shards(unlocked,
|
| - [('unlocked_tests',
|
| - ['animations/keyframes.html',
|
| - 'fast/css/display-none-inline-style-change-crash.html',
|
| - 'dom/html/level2/html/HTMLAnchorElement03.html',
|
| - 'dom/html/level2/html/HTMLAnchorElement06.html',
|
| - 'virtual/threaded/dir/test.html',
|
| - 'virtual/threaded/fast/foo/test.html'])])
|
| + [('unlocked_tests',
|
| + ['animations/keyframes.html', 'fast/css/display-none-inline-style-change-crash.html',
|
| + 'dom/html/level2/html/HTMLAnchorElement03.html', 'dom/html/level2/html/HTMLAnchorElement06.html',
|
| + 'virtual/threaded/dir/test.html', 'virtual/threaded/fast/foo/test.html'])])
|
|
|
| def test_shard_in_two_has_no_locked_shards(self):
|
| - locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False, run_singly=False,
|
| - test_list=['animations/keyframe.html'])
|
| + locked, unlocked = self.get_shards(num_workers=1,
|
| + fully_parallel=False,
|
| + run_singly=False,
|
| + test_list=['animations/keyframe.html'])
|
| self.assertEqual(len(locked), 0)
|
| self.assertEqual(len(unlocked), 1)
|
|
|
| def test_shard_in_two_has_no_unlocked_shards(self):
|
| - locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False, run_singly=False,
|
| - test_list=['http/tests/websocket/tests/unicode.htm'])
|
| + locked, unlocked = self.get_shards(num_workers=1,
|
| + fully_parallel=False,
|
| + run_singly=False,
|
| + test_list=['http/tests/websocket/tests/unicode.htm'])
|
| self.assertEqual(len(locked), 1)
|
| self.assertEqual(len(unlocked), 0)
|
|
|
| def test_multiple_locked_shards(self):
|
| locked, unlocked = self.get_shards(num_workers=4, fully_parallel=False, max_locked_shards=2, run_singly=False)
|
| - self.assert_shards(locked,
|
| - [('locked_shard_1',
|
| - ['http/tests/security/view-source-no-refresh.html',
|
| - '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'])])
|
| + self.assert_shards(locked, [('locked_shard_1',
|
| + ['http/tests/security/view-source-no-refresh.html', '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'])])
|
|
|
| locked, unlocked = self.get_shards(num_workers=4, fully_parallel=False, run_singly=False)
|
| - self.assert_shards(locked,
|
| - [('locked_shard_1',
|
| - ['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'])])
|
| + self.assert_shards(locked, [('locked_shard_1',
|
| + ['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'])])
|
|
|
| def test_virtual_shards(self):
|
| # With run_singly=False, we try to keep all of the tests in a virtual suite together even
|
| # when fully_parallel=True, so that we don't restart every time the command line args change.
|
| - locked, unlocked = self.get_shards(num_workers=2, fully_parallel=True, max_locked_shards=2, run_singly=False,
|
| - test_list=['virtual/foo/bar1.html', 'virtual/foo/bar2.html'])
|
| - self.assert_shards(unlocked,
|
| - [('virtual/foo', ['virtual/foo/bar1.html', 'virtual/foo/bar2.html'])])
|
| + locked, unlocked = self.get_shards(num_workers=2,
|
| + fully_parallel=True,
|
| + max_locked_shards=2,
|
| + run_singly=False,
|
| + test_list=['virtual/foo/bar1.html', 'virtual/foo/bar2.html'])
|
| + self.assert_shards(unlocked, [('virtual/foo', ['virtual/foo/bar1.html', 'virtual/foo/bar2.html'])])
|
|
|
| # But, with run_singly=True, we have to restart every time anyway, so we want full parallelism.
|
| - locked, unlocked = self.get_shards(num_workers=2, fully_parallel=True, max_locked_shards=2, run_singly=True,
|
| - test_list=['virtual/foo/bar1.html', 'virtual/foo/bar2.html'])
|
| - self.assert_shards(unlocked,
|
| - [('.', ['virtual/foo/bar1.html']),
|
| - ('.', ['virtual/foo/bar2.html'])])
|
| + locked, unlocked = self.get_shards(num_workers=2,
|
| + fully_parallel=True,
|
| + max_locked_shards=2,
|
| + run_singly=True,
|
| + test_list=['virtual/foo/bar1.html', 'virtual/foo/bar2.html'])
|
| + self.assert_shards(unlocked, [('.', ['virtual/foo/bar1.html']), ('.', ['virtual/foo/bar2.html'])])
|
|
|