52 manager = ManagerWrapper(port=port, options=Mock(), printer=Mock())
53
54 test_list = [
55 "LayoutTests/websocket/tests/unicode.htm",
56 "LayoutTests/animations/keyframes.html",
57 "LayoutTests/http/tests/security/view-source-no-refresh.html",
58 "LayoutTests/websocket/tests/websocket-protocol-ignored.html",
59 "LayoutTests/fast/css/display-none-inline-style-change-crash.html",
60 "LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.html",
61 "LayoutTests/dom/html/level2/html/HTMLAnchorElement03.html",
62 "LayoutTests/ietestcenter/Javascript/11.1.5_4-4-c-1.html",
63 "LayoutTests/dom/html/level2/html/HTMLAnchorElement06.html",
64 ]
65
66 expected_tests_to_http_lock = set([
67 'LayoutTests/websocket/tests/unicode.htm',
68 'LayoutTests/http/tests/security/view-source-no-refresh.html',
69 'LayoutTests/websocket/tests/websocket-protocol-ignored.html',
70 'LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.html',
71 ])
72
73 single_locked, single_unlocked = manager._shard_tests(test_list, False)
74 multi_locked, multi_unlocked = manager._shard_tests(test_list, True)
75
76 self.assertEqual("tests_to_http_lock", single_locked[0][0])
77 self.assertEqual(expected_tests_to_http_lock, set(single_locked[0][1]))
78 self.assertEqual("tests_to_http_lock", multi_locked[0][0])
79 self.assertEqual(expected_tests_to_http_lock, set(multi_locked[0][1]))
62 self.manager = ManagerWrapper(port=port, options=Mock(), printer=Mock())
63 return self.manager._shard_tests(self.test_list, num_workers, fully_parallel)
64
65 def test_shard_by_dir(self):
66 locked, unlocked = self.get_shards(num_workers=2, fully_parallel=False)
67
68 # Note that although there are tests in multiple dirs that need locks,
69 # they are crammed into a single shard in order to reduce the # of
70 # workers hitting the server at once.
71 self.assertEquals(locked,
72 [('locked_shard_1',
73 ['LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.html',
74 'LayoutTests/http/tests/websocket/tests/unicode.htm',
75 'LayoutTests/http/tests/websocket/tests/websocket-protocol-ignored.html',
76 'LayoutTests/http/tests/security/view-source-no-refresh.html'])])
77 self.assertEquals(unlocked,
78 [('animations',
79 ['LayoutTests/animations/keyframes.html']),
80 ('dom/html/level2/html',
81 ['LayoutTests/dom/html/level2/html/HTMLAnchorElement03.html',
82 'LayoutTests/dom/html/level2/html/HTMLAnchorElement06.html']),
83 ('fast/css',
84 ['LayoutTests/fast/css/display-none-inline-style-change-crash.html']),
85 ('ietestcenter/Javascript',
86 ['LayoutTests/ietestcenter/Javascript/11.1.5_4-4-c-1.html'])])
87
88 def test_shard_every_file(self):
89 locked, unlocked = self.get_shards(num_workers=2, fully_parallel=True)
90 self.assertEquals(locked,
91 [('.', ['LayoutTests/http/tests/websocket/tests/unicode.htm']),
92 ('.', ['LayoutTests/http/tests/security/view-source-no-refresh.html']),
93 ('.', ['LayoutTests/http/tests/websocket/tests/websocket-protocol-ignored.html']),
94 ('.', ['LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.html'])])
95 self.assertEquals(unlocked,
96 [('.', ['LayoutTests/animations/keyframes.html']),
97 ('.', ['LayoutTests/fast/css/display-none-inline-style-change-crash.html']),
98 ('.', ['LayoutTests/dom/html/level2/html/HTMLAnchorElement03.html']),
99 ('.', ['LayoutTests/ietestcenter/Javascript/11.1.5_4-4-c-1.html']),
100 ('.', ['LayoutTests/dom/html/level2/html/HTMLAnchorElement06.html'])])
101
102 def test_shard_in_two(self):
103 locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False)
104 self.assertEquals(locked,
105 [('locked_tests',
106 ['LayoutTests/http/tests/websocket/tests/unicode.htm',
107 'LayoutTests/http/tests/security/view-source-no-refresh.html',
108 'LayoutTests/http/tests/websocket/tests/websocket-protocol-ignored.html',
109 'LayoutTests/http/tests/xmlhttprequest/supported-xml-content-types.html'])])
110 self.assertEquals(unlocked,
111 [('unlocked_tests',
112 ['LayoutTests/animations/keyframes.html',
113 'LayoutTests/fast/css/display-none-inline-style-change-crash.html',
114 'LayoutTests/dom/html/level2/html/HTMLAnchorElement03.html',
115 'LayoutTests/ietestcenter/Javascript/11.1.5_4-4-c-1.html',
116 'LayoutTests/dom/html/level2/html/HTMLAnchorElement06.html'])])