Modified: trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py (118446 => 118447)
--- trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py 2012-05-24 23:56:08 UTC (rev 118446)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py 2012-05-25 00:03:14 UTC (rev 118447)
@@ -150,13 +150,36 @@
self._run_webkit_patch(command)
self._serve_text('success')
+ def _builders_to_fetch_from(self, builders):
+ # This routine returns the subset of builders that will cover all of the baseline search paths
+ # used in the input list. In particular, if the input list contains both Release and Debug
+ # versions of a configuration, we *only* return the Release version (since we don't save
+ # debug versions of baselines).
+ release_builders = set()
+ debug_builders = set()
+ builders_to_fallback_paths = {}
+ for builder in builders:
+ port = self.server.tool.port_factory.get_from_builder_name(builder)
+ if port.test_configuration().build_type == 'Release':
+ release_builders.add(builder)
+ else:
+ debug_builders.add(builder)
+ for builder in list(release_builders) + list(debug_builders):
+ port = self.server.tool.port_factory.get_from_builder_name(builder)
+ fallback_path = port.baseline_search_path()
+ if fallback_path not in builders_to_fallback_paths.values():
+ builders_to_fallback_paths[builder] = fallback_path
+ return builders_to_fallback_paths.keys()
+
def rebaselineall(self):
- # FIXME: Optimize this to de-dup bot results, run in parallel, cache zips, etc.
+ # FIXME: Optimize this to run in parallel, cache zips, etc.
test_list = self._read_entity_body_as_json()
for test in test_list:
all_suffixes = set()
- for builder, suffixes in test_list[test].iteritems():
- all_suffixes.update(set(suffixes))
+ builders = self._builders_to_fetch_from(test_list[test])
+ for builder in builders:
+ suffixes = test_list[test][builder]
+ all_suffixes.update(suffixes)
self._run_webkit_patch(['rebaseline-test', '--suffixes', ','.join(suffixes), builder, test])
self._run_webkit_patch(['optimize-baselines', '--suffixes', ','.join(all_suffixes), test])
self._serve_text('success')
Modified: trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py (118446 => 118447)
--- trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py 2012-05-24 23:56:08 UTC (rev 118446)
+++ trunk/Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py 2012-05-25 00:03:14 UTC (rev 118447)
@@ -182,13 +182,20 @@
self._post_to_path("/rollout?revision=2314&reason=MOCK+rollout+reason", expected_stderr=expected_stderr, expected_stdout=expected_stdout)
def test_rebaselineall(self):
- builders._exact_matches = {"MOCK builder": {"port_name": "mock-port-name", "specifiers": set(["mock-specifier"])}}
- expected_stderr = "MOCK run_command: ['echo', 'rebaseline-test', '--suffixes', u'txt,png', u'MOCK builder', u'user-scripts/another-test.html'], cwd=/mock-checkout\nMOCK run_command: ['echo', 'optimize-baselines', '--suffixes', u'txt,png', u'user-scripts/another-test.html'], cwd=/mock-checkout\n"
+ builders._exact_matches = {
+ "MOCK builder": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])},
+ "MOCK builder (Debug)": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier", "debug"])},
+ }
+ expected_stderr = "MOCK run_command: ['echo', 'rebaseline-test', '--suffixes', u'%s', u'%s', u'user-scripts/another-test.html'], cwd=/mock-checkout\nMOCK run_command: ['echo', 'optimize-baselines', '--suffixes', u'%s', u'user-scripts/another-test.html'], cwd=/mock-checkout\n"
expected_stdout = "== Begin Response ==\nsuccess\n== End Response ==\n"
- self._post_to_path("/rebaselineall", body='{"user-scripts/another-test.html":{"MOCK builder": ["txt","png"]}}', expected_stderr=expected_stderr, expected_stdout=expected_stdout)
+ self._post_to_path("/rebaselineall", body='{"user-scripts/another-test.html":{"MOCK builder": ["txt","png"]}}', expected_stderr=expected_stderr % ('txt,png', 'MOCK builder', 'txt,png'), expected_stdout=expected_stdout)
+ self._post_to_path("/rebaselineall", body='{"user-scripts/another-test.html":{"MOCK builder (Debug)": ["txt","png"]}}', expected_stderr=expected_stderr % ('txt,png', 'MOCK builder (Debug)', 'txt,png'), expected_stdout=expected_stdout)
+
+ self._post_to_path("/rebaselineall", body='{"user-scripts/another-test.html":{"MOCK builder (Debug)": ["txt","png"], "MOCK builder": ["txt"]}}', expected_stderr=expected_stderr % ('txt', 'MOCK builder', 'txt'), expected_stdout=expected_stdout)
+
def test_rebaseline_new_port(self):
- builders._exact_matches = {"MOCK builder": {"port_name": "mock-port-name", "specifiers": set(["mock-specifier"]), "move_overwritten_baselines_to": ["mock-port-fallback", "mock-port-fallback2"]}}
+ builders._exact_matches = {"MOCK builder": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"]), "move_overwritten_baselines_to": ["mock-port-fallback", "mock-port-fallback2"]}}
expected_stderr = "MOCK run_command: ['echo', 'rebaseline-test', '--suffixes', 'txt,png', 'MOCK builder', 'user-scripts/another-test.html', 'mock-port-fallback', 'mock-port-fallback2'], cwd=/mock-checkout\n"
expected_stdout = "== Begin Response ==\nsuccess\n== End Response ==\n"
self._post_to_path("/rebaseline?builder=MOCK+builder&test=user-scripts/another-test.html&suffixes=txt,png", expected_stderr=expected_stderr, expected_stdout=expected_stdout)