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

Unified Diff: gm/rebaseline_server/compare_rendered_pictures_test.py

Issue 848073005: Revert "delete old things!" (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « gm/rebaseline_server/compare_rendered_pictures.py ('k') | gm/rebaseline_server/compare_to_expectations.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/rebaseline_server/compare_rendered_pictures_test.py
diff --git a/gm/rebaseline_server/compare_rendered_pictures_test.py b/gm/rebaseline_server/compare_rendered_pictures_test.py
new file mode 100755
index 0000000000000000000000000000000000000000..2b15462111c137a13822cdda7a1787fcccbad298
--- /dev/null
+++ b/gm/rebaseline_server/compare_rendered_pictures_test.py
@@ -0,0 +1,227 @@
+#!/usr/bin/python
+
+"""
+Copyright 2014 Google Inc.
+
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+
+Test compare_rendered_pictures.py
+
+TODO(epoger): Create a command to update the expected results (in
+self._output_dir_expected) when appropriate. For now, you should:
+1. examine the results in self.output_dir_actual and make sure they are ok
+2. rm -rf self._output_dir_expected
+3. mv self.output_dir_actual self._output_dir_expected
+Although, if you're using an SVN checkout, this will blow away .svn directories
+within self._output_dir_expected, which wouldn't be good...
+
+"""
+
+# System-level imports
+import os
+import posixpath
+import subprocess
+
+# Must fix up PYTHONPATH before importing from within Skia
+import rs_fixpypath # pylint: disable=W0611
+
+# Imports from within Skia
+import base_unittest
+import compare_rendered_pictures
+import find_run_binary
+import gm_json
+import imagediffdb
+import imagepairset
+import results
+
+
+class CompareRenderedPicturesTest(base_unittest.TestCase):
+
+ def test_endToEnd(self):
+ """Generate two sets of SKPs, run render_pictures over both, and compare
+ the results."""
+ setA_subdir = 'before_patch'
+ setB_subdir = 'after_patch'
+ self._generate_skps_and_run_render_pictures(
+ subdir=setA_subdir, skpdict={
+ 'changed.skp': 200,
+ 'unchanged.skp': 100,
+ 'only-in-before.skp': 128,
+ })
+ self._generate_skps_and_run_render_pictures(
+ subdir=setB_subdir, skpdict={
+ 'changed.skp': 201,
+ 'unchanged.skp': 100,
+ 'only-in-after.skp': 128,
+ })
+
+ results_obj = compare_rendered_pictures.RenderedPicturesComparisons(
+ setA_dir=os.path.join(self.temp_dir, setA_subdir),
+ setB_dir=os.path.join(self.temp_dir, setB_subdir),
+ setA_section=gm_json.JSONKEY_ACTUALRESULTS,
+ setB_section=gm_json.JSONKEY_ACTUALRESULTS,
+ image_diff_db=imagediffdb.ImageDiffDB(self.temp_dir),
+ image_base_gs_url='gs://fakebucket/fake/path',
+ diff_base_url='/static/generated-images')
+ results_obj.get_timestamp = mock_get_timestamp
+
+ # Overwrite elements within the results that change from one test run
+ # to the next.
+ # pylint: disable=W0212
+ results_obj._setA_descriptions[results.KEY__SET_DESCRIPTIONS__DIR] = [
+ 'before-patch-fake-dir']
+ results_obj._setB_descriptions[results.KEY__SET_DESCRIPTIONS__DIR] = [
+ 'after-patch-fake-dir']
+
+ gm_json.WriteToFile(
+ results_obj.get_packaged_results_of_type(
+ results.KEY__HEADER__RESULTS_ALL),
+ os.path.join(self.output_dir_actual, 'compare_rendered_pictures.json'))
+
+ def test_endToEnd_withImageBaseGSUrl(self):
+ """Generate two sets of SKPs, run render_pictures over both, and compare
+ the results."""
+ setA_subdir = 'before_patch'
+ setB_subdir = 'after_patch'
+ imageA_gs_base = 'superman/kent-camera/pictures'
+ imageB_gs_base = 'batman/batarang/pictures'
+ self._generate_skps_and_run_render_pictures(
+ subdir=setA_subdir, skpdict={
+ 'changed.skp': 200,
+ 'unchanged.skp': 100,
+ 'only-in-before.skp': 128,
+ },
+ image_base_gs_url='gs://%s' % imageA_gs_base)
+ self._generate_skps_and_run_render_pictures(
+ subdir=setB_subdir, skpdict={
+ 'changed.skp': 201,
+ 'unchanged.skp': 100,
+ 'only-in-after.skp': 128,
+ },
+ image_base_gs_url='gs://%s' % imageB_gs_base)
+
+ results_obj = compare_rendered_pictures.RenderedPicturesComparisons(
+ setA_dir=os.path.join(self.temp_dir, setA_subdir),
+ setB_dir=os.path.join(self.temp_dir, setB_subdir),
+ setA_section=gm_json.JSONKEY_ACTUALRESULTS,
+ setB_section=gm_json.JSONKEY_ACTUALRESULTS,
+ image_diff_db=imagediffdb.ImageDiffDB(self.temp_dir),
+ image_base_gs_url='gs://fakebucket/fake/path',
+ diff_base_url='/static/generated-images')
+ results_obj.get_timestamp = mock_get_timestamp
+
+ output_dict = results_obj.get_packaged_results_of_type(
+ results.KEY__HEADER__RESULTS_ALL)
+ # Assert that the baseURLs are as expected.
+ self.assertEquals(
+ output_dict[imagepairset.KEY__ROOT__IMAGESETS]
+ [imagepairset.KEY__IMAGESETS__SET__IMAGE_A]
+ [imagepairset.KEY__IMAGESETS__FIELD__BASE_URL],
+ 'http://storage.cloud.google.com/%s' % imageA_gs_base)
+ self.assertEquals(
+ output_dict[imagepairset.KEY__ROOT__IMAGESETS]
+ [imagepairset.KEY__IMAGESETS__SET__IMAGE_B]
+ [imagepairset.KEY__IMAGESETS__FIELD__BASE_URL],
+ 'http://storage.cloud.google.com/%s' % imageB_gs_base)
+ # Overwrite elements within the results that change from one test run
+ # to the next.
+ # pylint: disable=W0212
+ results_obj._setA_descriptions[results.KEY__SET_DESCRIPTIONS__DIR] = [
+ 'before-patch-fake-dir']
+ results_obj._setB_descriptions[results.KEY__SET_DESCRIPTIONS__DIR] = [
+ 'after-patch-fake-dir']
+
+ gm_json.WriteToFile(
+ output_dict,
+ os.path.join(self.output_dir_actual,
+ 'compare_rendered_pictures.json'))
+
+ def test_repo_url(self):
+ """Use repo: URL to specify summary files."""
+ base_repo_url = 'repo:gm/rebaseline_server/testdata/inputs/skp-summaries'
+ results_obj = compare_rendered_pictures.RenderedPicturesComparisons(
+ setA_dir=posixpath.join(base_repo_url, 'expectations'),
+ setB_dir=posixpath.join(base_repo_url, 'actuals'),
+ setA_section=gm_json.JSONKEY_EXPECTEDRESULTS,
+ setB_section=gm_json.JSONKEY_ACTUALRESULTS,
+ image_diff_db=imagediffdb.ImageDiffDB(self.temp_dir),
+ image_base_gs_url='gs://fakebucket/fake/path',
+ diff_base_url='/static/generated-images')
+ results_obj.get_timestamp = mock_get_timestamp
+
+ # Overwrite elements within the results that change from one test run
+ # to the next.
+ # pylint: disable=W0212
+ results_obj._setA_descriptions\
+ [results.KEY__SET_DESCRIPTIONS__REPO_REVISION] = 'fake-repo-revision'
+ results_obj._setB_descriptions\
+ [results.KEY__SET_DESCRIPTIONS__REPO_REVISION] = 'fake-repo-revision'
+
+ gm_json.WriteToFile(
+ results_obj.get_packaged_results_of_type(
+ results.KEY__HEADER__RESULTS_ALL),
+ os.path.join(self.output_dir_actual, 'compare_rendered_pictures.json'))
+
+ def _generate_skps_and_run_render_pictures(self, subdir, skpdict,
+ image_base_gs_url=None):
+ """Generate SKPs and run render_pictures on them.
+
+ Args:
+ subdir: subdirectory (within self.temp_dir) to write all files into
+ skpdict: {skpname: redvalue} dictionary describing the SKP files to render
+ """
+ out_path = os.path.join(self.temp_dir, subdir)
+ os.makedirs(out_path)
+ for skpname, redvalue in skpdict.iteritems():
+ self._run_skpmaker(
+ output_path=os.path.join(out_path, skpname), red=redvalue)
+
+ # TODO(epoger): Add --mode tile 256 256 --writeWholeImage to the unittest,
+ # and fix its result! (imageURLs within whole-image entries are wrong when
+ # I tried adding that)
+ binary = find_run_binary.find_path_to_program('render_pictures')
+ render_pictures_cmd = [
+ binary,
+ '--config', '8888',
+ '-r', out_path,
+ '--writeChecksumBasedFilenames',
+ '--writeJsonSummaryPath', os.path.join(out_path, 'summary.json'),
+ '--writePath', out_path]
+ if image_base_gs_url:
+ render_pictures_cmd.extend(['--imageBaseGSUrl', image_base_gs_url])
+ return subprocess.check_output(render_pictures_cmd)
+
+ def _run_skpmaker(self, output_path, red=0, green=0, blue=0,
+ width=640, height=400):
+ """Runs the skpmaker binary to generate SKP with known characteristics.
+
+ Args:
+ output_path: Filepath to write the SKP into.
+ red: Value of red color channel in image, 0-255.
+ green: Value of green color channel in image, 0-255.
+ blue: Value of blue color channel in image, 0-255.
+ width: Width of canvas to create.
+ height: Height of canvas to create.
+ """
+ binary = find_run_binary.find_path_to_program('skpmaker')
+ return subprocess.check_output([
+ binary,
+ '--red', str(red),
+ '--green', str(green),
+ '--blue', str(blue),
+ '--width', str(width),
+ '--height', str(height),
+ '--writePath', str(output_path)])
+
+def mock_get_timestamp():
+ """Mock version of BaseComparisons.get_timestamp() for testing."""
+ return 12345678
+
+
+def main():
+ base_unittest.main(CompareRenderedPicturesTest)
+
+
+if __name__ == '__main__':
+ main()
« no previous file with comments | « gm/rebaseline_server/compare_rendered_pictures.py ('k') | gm/rebaseline_server/compare_to_expectations.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698