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

Unified Diff: Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py

Issue 18603012: Make BaselineOptimizer virtual test suite aware. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py
diff --git a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py b/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py
index d0ad248e815348f4a6aa7400f86bc06a0c89c470..b194975ddcdeb793e263891bd0d7fc315b37a32b 100644
--- a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py
+++ b/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py
@@ -26,6 +26,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+import hashlib
import sys
import unittest2 as unittest
@@ -35,26 +36,72 @@ from webkitpy.common.host_mock import MockHost
class TestBaselineOptimizer(BaselineOptimizer):
- def __init__(self, mock_results_by_directory):
+ def __init__(self, mock_results_by_directory, create_mock_files, baseline_name):
host = MockHost()
BaselineOptimizer.__init__(self, host, host.port_factory.all_port_names())
self._mock_results_by_directory = mock_results_by_directory
+ self._filesystem = host.filesystem
+ self._port_factory = host.port_factory
+ self._created_mock_files = create_mock_files
+ self._baseline_name = baseline_name
+
+ self._create_mock_files(mock_results_by_directory)
# We override this method for testing so we don't have to construct an
# elaborate mock file system.
def read_results_by_directory(self, baseline_name):
+ if self._created_mock_files:
+ return super(TestBaselineOptimizer, self).read_results_by_directory(baseline_name)
return self._mock_results_by_directory
def _move_baselines(self, baseline_name, results_by_directory, new_results_by_directory):
- self.new_results_by_directory = new_results_by_directory
+ self.new_results_by_directory.append(new_results_by_directory)
+
+ if self._created_mock_files:
+ super(TestBaselineOptimizer, self)._move_baselines(baseline_name, results_by_directory, new_results_by_directory)
+ return
+ self._mock_results_by_directory = new_results_by_directory
+
+ def _create_mock_files(self, results_by_directory):
+ root = self._port_factory.get().webkit_base()
+ for directory in results_by_directory:
+ if 'virtual' in directory:
+ virtual_suite = self._port_factory.get().lookup_virtual_suite(self._baseline_name)
+ if virtual_suite:
+ baseline_name = self._baseline_name[len(virtual_suite.name) + 1:]
+ else:
+ baseline_name = self._baseline_name
+ else:
+ baseline_name = self._port_factory.get().lookup_virtual_test_base(self._baseline_name)
+ path = self._filesystem.join(root, directory, baseline_name)
+ self._filesystem.write_text_file(path, results_by_directory[directory])
class BaselineOptimizerTest(unittest.TestCase):
- def _assertOptimization(self, results_by_directory, expected_new_results_by_directory):
- baseline_optimizer = TestBaselineOptimizer(results_by_directory)
- self.assertTrue(baseline_optimizer.optimize('mock-baseline.png'))
+ VIRTUAL_DIRECTORY = 'virtual/softwarecompositing'
+
+ def _appendVirtualSuffix(self, results_by_directory):
+ new_results_by_directory = {}
+ for directory in results_by_directory:
+ new_results_by_directory[directory + '/' + self.VIRTUAL_DIRECTORY] = results_by_directory[directory]
+ return new_results_by_directory
+
+ def _assertOneLevelOptimization(self, results_by_directory, expected_new_results_by_directory, baseline_name, create_mock_files=False):
+ baseline_optimizer = TestBaselineOptimizer(results_by_directory, create_mock_files, baseline_name)
+ self.assertTrue(baseline_optimizer.optimize(baseline_name))
+ if type(expected_new_results_by_directory) != list:
+ expected_new_results_by_directory = [expected_new_results_by_directory]
self.assertEqual(baseline_optimizer.new_results_by_directory, expected_new_results_by_directory)
+ def _assertOptimization(self, results_by_directory, expected_new_results_by_directory):
+ baseline_name = 'mock-baseline.png'
+ self._assertOneLevelOptimization(results_by_directory, expected_new_results_by_directory, baseline_name)
+
+ results_by_directory = self._appendVirtualSuffix(results_by_directory)
+ expected_new_results_by_directory = self._appendVirtualSuffix(expected_new_results_by_directory)
+ baseline_name = self.VIRTUAL_DIRECTORY + '/' + baseline_name
+ self._assertOneLevelOptimization(results_by_directory, [expected_new_results_by_directory, expected_new_results_by_directory], baseline_name)
+
def test_move_baselines(self):
host = MockHost()
host.filesystem.write_binary_file('/mock-checkout/LayoutTests/platform/win/another/test-expected.txt', 'result A')
@@ -166,3 +213,31 @@ class BaselineOptimizerTest(unittest.TestCase):
'LayoutTests/platform/mac': '1',
'LayoutTests/platform/win': '2',
})
+
+ def test_virtual_root_redundant_with_actual_root(self):
+ baseline_name = self.VIRTUAL_DIRECTORY + '/mock-baseline.png'
+ hash_of_two = hashlib.sha1('2').hexdigest()
+ expected_result = [{'LayoutTests/virtual/softwarecompositing': hash_of_two}, {'LayoutTests': hash_of_two}]
+ self._assertOneLevelOptimization({
+ 'LayoutTests/' + self.VIRTUAL_DIRECTORY: '2',
+ 'LayoutTests': '2',
+ }, expected_result, baseline_name, create_mock_files=True)
+
+ def test_virtual_root_redundant_with_ancestors(self):
+ baseline_name = self.VIRTUAL_DIRECTORY + '/mock-baseline.png'
+ hash_of_two = hashlib.sha1('2').hexdigest()
+ expected_result = [{'LayoutTests/virtual/softwarecompositing': hash_of_two}, {'LayoutTests': hash_of_two}]
+ self._assertOneLevelOptimization({
+ 'LayoutTests/' + self.VIRTUAL_DIRECTORY: '2',
+ 'LayoutTests/platform/mac': '2',
+ 'LayoutTests/platform/win': '2',
+ }, expected_result, baseline_name, create_mock_files=True)
+
+ def test_virtual_root_not_redundant_with_ancestors(self):
+ baseline_name = self.VIRTUAL_DIRECTORY + '/mock-baseline.png'
+ hash_of_two = hashlib.sha1('2').hexdigest()
+ expected_result = [{'LayoutTests/virtual/softwarecompositing': hash_of_two}, {'LayoutTests/platform/mac': hash_of_two}]
+ self._assertOneLevelOptimization({
+ 'LayoutTests/' + self.VIRTUAL_DIRECTORY: '2',
+ 'LayoutTests/platform/mac': '2',
+ }, expected_result, baseline_name, create_mock_files=True)

Powered by Google App Engine
This is Rietveld 408576698