Modified: trunk/Tools/ChangeLog (93174 => 93175)
--- trunk/Tools/ChangeLog 2011-08-16 23:16:17 UTC (rev 93174)
+++ trunk/Tools/ChangeLog 2011-08-16 23:26:17 UTC (rev 93175)
@@ -1,5 +1,12 @@
2011-08-16 Adam Barth <[email protected]>
+ Add webkit-patch analyze-baselines, as requested by jamesr.
+
+ * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
+ * Scripts/webkitpy/tool/commands/rebaseline.py:
+
+2011-08-16 Adam Barth <[email protected]>
+
Fold bulk-optimize-baselines into optimize-baselines
https://bugs.webkit.org/show_bug.cgi?id=66345
Modified: trunk/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py (93174 => 93175)
--- trunk/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py 2011-08-16 23:16:17 UTC (rev 93174)
+++ trunk/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py 2011-08-16 23:26:17 UTC (rev 93175)
@@ -150,6 +150,10 @@
self._filesystem.write_binary_file(destination, data_for_result[result])
self._scm.add(destination)
+ def directories_by_result(self, baseline_name):
+ results_by_directory = self._read_results_by_directory(baseline_name)
+ return _invert_dictionary(results_by_directory)
+
def optimize(self, baseline_name):
results_by_directory, new_results_by_directory = self._find_optimal_result_placement(baseline_name)
if self._results_by_port_name(results_by_directory) != self._results_by_port_name(new_results_by_directory):
Modified: trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py (93174 => 93175)
--- trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py 2011-08-16 23:16:17 UTC (rev 93174)
+++ trunk/Tools/Scripts/webkitpy/tool/commands/rebaseline.py 2011-08-16 23:26:17 UTC (rev 93175)
@@ -30,6 +30,7 @@
import re
import shutil
import urllib
+import pprint
import webkitpy.common.config.urls as config_urls
from webkitpy.common.checkout.baselineoptimizer import BaselineOptimizer
@@ -104,7 +105,7 @@
class OptimizeBaselines(AbstractDeclarativeCommand):
name = "optimize-baselines"
- help_text = "Reshuffles the baselines for the given test to use as litte space on disk as possible."
+ help_text = "Reshuffles the baselines for the given tests to use as litte space on disk as possible."
argument_names = "TEST_NAMES"
def _optimize_baseline(self, test_name):
@@ -113,6 +114,9 @@
if not self._baseline_optimizer.optimize(baseline_name):
print "Hueristics failed to optimize %s" % baseline_name
+ def _to_test_name(self, file_name):
+ return self._tool.filesystem.relpath(file_name, self._port.layout_tests_dir())
+
def execute(self, options, args, tool):
self._baseline_optimizer = BaselineOptimizer(tool.scm(), tool.filesystem)
self._port = factory.get("chromium-win-win7") # FIXME: This should be selectable.
@@ -122,6 +126,31 @@
self._optimize_baseline(test_name)
+class AnalyzeBaselines(AbstractDeclarativeCommand):
+ name = "analyze-baselines"
+ help_text = "Analyzes the baselines for the given tests and displays which ones have the same hash."
+ argument_names = "TEST_NAMES"
+
+ def _analyze_baseline(self, test_name):
+ for suffix in _baseline_suffix_list:
+ baseline_name = _baseline_name(self._tool.filesystem, test_name, suffix)
+ directories_by_result = self._baseline_optimizer.directories_by_result(baseline_name)
+ if directories_by_result:
+ print '== ', baseline_name, ' =='
+ pprint.pprint(directories_by_result)
+ print
+
+ def _to_test_name(self, file_name):
+ return self._tool.filesystem.relpath(file_name, self._port.layout_tests_dir())
+
+ def execute(self, options, args, tool):
+ self._baseline_optimizer = BaselineOptimizer(tool.scm(), tool.filesystem)
+ self._port = factory.get("chromium-win-win7") # FIXME: This should be selectable.
+
+ for test_name in map(self._to_test_name, test_files.find(self._port, args)):
+ self._analyze_baseline(test_name)
+
+
class RebaselineExpectations(AbstractDeclarativeCommand):
name = "rebaseline-expectations"
help_text = "Rebaselines the tests indicated in test_expectations.txt."