Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py

Issue 308793004: Optimize baselines in parallel. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: address review comments Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright (C) 2011 Google Inc. All rights reserved. 1 # Copyright (C) 2011 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 raise Exception("File is not SCM managed: " + origin) 58 raise Exception("File is not SCM managed: " + origin)
59 return MockSCM.move(self, origin, destination) 59 return MockSCM.move(self, origin, destination)
60 60
61 61
62 class BaselineOptimizerTest(unittest.TestCase): 62 class BaselineOptimizerTest(unittest.TestCase):
63 def test_move_baselines(self): 63 def test_move_baselines(self):
64 host = MockHost(scm=ExcludingMockSCM(['/mock-checkout/third_party/WebKit /LayoutTests/platform/mac/another/test-expected.txt'])) 64 host = MockHost(scm=ExcludingMockSCM(['/mock-checkout/third_party/WebKit /LayoutTests/platform/mac/another/test-expected.txt']))
65 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/platform/win/another/test-expected.txt', 'result A') 65 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/platform/win/another/test-expected.txt', 'result A')
66 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/platform/mac/another/test-expected.txt', 'result A') 66 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/platform/mac/another/test-expected.txt', 'result A')
67 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/another/test-expected.txt', 'result B') 67 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/another/test-expected.txt', 'result B')
68 baseline_optimizer = BaselineOptimizer(host, host.port_factory.all_port_ names()) 68 baseline_optimizer = BaselineOptimizer(host, host.port_factory.all_port_ names(), skip_scm_commands=False)
69 baseline_optimizer._move_baselines('another/test-expected.txt', { 69 baseline_optimizer._move_baselines('another/test-expected.txt', {
70 '/mock-checkout/third_party/WebKit/LayoutTests/platform/win': 'aaa', 70 '/mock-checkout/third_party/WebKit/LayoutTests/platform/win': 'aaa',
71 '/mock-checkout/third_party/WebKit/LayoutTests/platform/mac': 'aaa', 71 '/mock-checkout/third_party/WebKit/LayoutTests/platform/mac': 'aaa',
72 '/mock-checkout/third_party/WebKit/LayoutTests': 'bbb', 72 '/mock-checkout/third_party/WebKit/LayoutTests': 'bbb',
73 }, { 73 }, {
74 '/mock-checkout/third_party/WebKit/LayoutTests': 'aaa', 74 '/mock-checkout/third_party/WebKit/LayoutTests': 'aaa',
75 }) 75 })
76 self.assertEqual(host.filesystem.read_binary_file('/mock-checkout/third_ party/WebKit/LayoutTests/another/test-expected.txt'), 'result A') 76 self.assertEqual(host.filesystem.read_binary_file('/mock-checkout/third_ party/WebKit/LayoutTests/another/test-expected.txt'), 'result A')
77 77
78 def _assertOptimization(self, results_by_directory, expected_new_results_by_ directory, baseline_dirname=''): 78 def test_move_baselines_skip_scm_commands(self):
79 host = MockHost(scm=ExcludingMockSCM(['/mock-checkout/third_party/WebKit /LayoutTests/platform/mac/another/test-expected.txt']))
80 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/platform/win/another/test-expected.txt', 'result A')
81 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/platform/mac/another/test-expected.txt', 'result A')
82 host.filesystem.write_binary_file('/mock-checkout/third_party/WebKit/Lay outTests/another/test-expected.txt', 'result B')
83 baseline_optimizer = BaselineOptimizer(host, host.port_factory.all_port_ names(), skip_scm_commands=True)
84 baseline_optimizer._move_baselines('another/test-expected.txt', {
85 '/mock-checkout/third_party/WebKit/LayoutTests/platform/win': 'aaa',
86 '/mock-checkout/third_party/WebKit/LayoutTests/platform/mac': 'aaa',
87 '/mock-checkout/third_party/WebKit/LayoutTests': 'bbb',
88 }, {
89 '/mock-checkout/third_party/WebKit/LayoutTests/platform/linux': 'bbb ',
90 '/mock-checkout/third_party/WebKit/LayoutTests': 'aaa',
91 })
92 self.assertEqual(host.filesystem.read_binary_file('/mock-checkout/third_ party/WebKit/LayoutTests/another/test-expected.txt'), 'result A')
93
94 self.assertEqual(baseline_optimizer._files_to_delete, [
95 '/mock-checkout/third_party/WebKit/LayoutTests/platform/win/another/ test-expected.txt',
96 ])
97
98 self.assertEqual(baseline_optimizer._files_to_add, [
99 '/mock-checkout/third_party/WebKit/LayoutTests/another/test-expected .txt',
100 '/mock-checkout/third_party/WebKit/LayoutTests/platform/linux/anothe r/test-expected.txt',
101 ])
102
103 def _assertOptimization(self, results_by_directory, expected_new_results_by_ directory, baseline_dirname='', expected_files_to_delete=None):
79 host = MockHost() 104 host = MockHost()
80 fs = host.filesystem 105 fs = host.filesystem
81 webkit_base = WebKitFinder(fs).webkit_base() 106 webkit_base = WebKitFinder(fs).webkit_base()
82 baseline_name = 'mock-baseline-expected.txt' 107 baseline_name = 'mock-baseline-expected.txt'
83 108
84 for dirname, contents in results_by_directory.items(): 109 for dirname, contents in results_by_directory.items():
85 path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name) 110 path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name)
86 fs.write_binary_file(path, contents) 111 fs.write_binary_file(path, contents)
87 112
88 baseline_optimizer = BaselineOptimizer(host, host.port_factory.all_port_ names()) 113 baseline_optimizer = BaselineOptimizer(host, host.port_factory.all_port_ names(), skip_scm_commands=expected_files_to_delete is not None)
89 self.assertTrue(baseline_optimizer.optimize(fs.join(baseline_dirname, ba seline_name))) 114 self.assertTrue(baseline_optimizer.optimize(fs.join(baseline_dirname, ba seline_name)))
90 115
91 for dirname, contents in expected_new_results_by_directory.items(): 116 for dirname, contents in expected_new_results_by_directory.items():
92 path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name) 117 path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name)
93 if contents is None: 118 if contents is None:
94 self.assertFalse(fs.exists(path)) 119 self.assertTrue(not fs.exists(path) or path in baseline_optimize r._files_to_delete)
95 else: 120 else:
96 self.assertEqual(fs.read_binary_file(path), contents) 121 self.assertEqual(fs.read_binary_file(path), contents)
97 122
98 # Check that the files that were in the original set have been deleted w here necessary. 123 # Check that the files that were in the original set have been deleted w here necessary.
99 for dirname in results_by_directory: 124 for dirname in results_by_directory:
100 path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name) 125 path = fs.join(webkit_base, 'LayoutTests', dirname, baseline_name)
101 if not dirname in expected_new_results_by_directory: 126 if not dirname in expected_new_results_by_directory:
102 self.assertFalse(fs.exists(path)) 127 self.assertTrue(not fs.exists(path) or path in baseline_optimize r._files_to_delete)
128
129 if expected_files_to_delete:
130 self.assertEqual(baseline_optimizer._files_to_delete, expected_files _to_delete)
103 131
104 def test_linux_redundant_with_win(self): 132 def test_linux_redundant_with_win(self):
105 self._assertOptimization({ 133 self._assertOptimization({
106 'platform/win': '1', 134 'platform/win': '1',
107 'platform/linux': '1', 135 'platform/linux': '1',
108 }, { 136 }, {
109 'platform/win': '1', 137 'platform/win': '1',
110 }) 138 })
111 139
112 def test_covers_mac_win_linux(self): 140 def test_covers_mac_win_linux(self):
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 def test_virtual_root_redundant_with_ancestors(self): 230 def test_virtual_root_redundant_with_ancestors(self):
203 self._assertOptimization({ 231 self._assertOptimization({
204 'virtual/softwarecompositing': '2', 232 'virtual/softwarecompositing': '2',
205 'platform/mac/compositing': '2', 233 'platform/mac/compositing': '2',
206 'platform/win/compositing': '2', 234 'platform/win/compositing': '2',
207 }, { 235 }, {
208 'virtual/softwarecompositing': None, 236 'virtual/softwarecompositing': None,
209 'compositing': '2', 237 'compositing': '2',
210 }, baseline_dirname='virtual/softwarecompositing') 238 }, baseline_dirname='virtual/softwarecompositing')
211 239
240 def test_virtual_root_redundant_with_ancestors_skip_scm_commands(self):
241 self._assertOptimization({
242 'virtual/softwarecompositing': '2',
243 'platform/mac/compositing': '2',
244 'platform/win/compositing': '2',
245 }, {
246 'virtual/softwarecompositing': None,
247 'compositing': '2',
248 },
249 baseline_dirname='virtual/softwarecompositing',
250 expected_files_to_delete=[
251 '/mock-checkout/third_party/WebKit/LayoutTests/virtual/softwarecompo siting/mock-baseline-expected.txt',
252 '/mock-checkout/third_party/WebKit/LayoutTests/platform/mac/composit ing/mock-baseline-expected.txt',
253 '/mock-checkout/third_party/WebKit/LayoutTests/platform/win/composit ing/mock-baseline-expected.txt',
254 ])
255
212 def test_virtual_root_not_redundant_with_ancestors(self): 256 def test_virtual_root_not_redundant_with_ancestors(self):
213 self._assertOptimization({ 257 self._assertOptimization({
214 'virtual/softwarecompositing': '2', 258 'virtual/softwarecompositing': '2',
215 'platform/mac/compositing': '1', 259 'platform/mac/compositing': '1',
216 }, { 260 }, {
217 'virtual/softwarecompositing': '2', 261 'virtual/softwarecompositing': '2',
218 'platform/mac/compositing': '1', 262 'platform/mac/compositing': '1',
219 }, baseline_dirname='virtual/softwarecompositing') 263 }, baseline_dirname='virtual/softwarecompositing')
OLDNEW
« no previous file with comments | « Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py ('k') | Tools/Scripts/webkitpy/tool/commands/rebaseline.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698