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

Unified Diff: gm/rebaseline_server/compare_rendered_pictures_test.py

Issue 274623002: make compare_rendered_pictures_test.py run end-to-end test (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: use subprocess.check_output() Created 6 years, 7 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: 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
index c1eebb794b4aa45fce7d681467bdd1882fab254f..e6d257403cb861bcadde9f856f73aac053f26078 100755
--- a/gm/rebaseline_server/compare_rendered_pictures_test.py
+++ b/gm/rebaseline_server/compare_rendered_pictures_test.py
@@ -19,6 +19,7 @@ within self._output_dir_expected, which wouldn't be good...
"""
import os
+import subprocess
import sys
# Imports from within Skia
@@ -31,22 +32,80 @@ import gm_json # must import results first, so that gm_json will be in sys.path
class CompareRenderedPicturesTest(base_unittest.TestCase):
def test_endToEnd(self):
- """Compare results of two render_pictures runs."""
- # TODO(epoger): Specify image_base_url pointing at the directory on local
- # disk containing our test images, so that we can actually compute pixel
- # diffs. For now, this test attempts to download images from
- # DEFAULT_IMAGE_BASE_URL, and there aren't any there yet.
+ """Generate two sets of SKPs, run render_pictures over both, and compare
+ the results."""
+ self._generate_skps_and_run_render_pictures(
+ subdir='before_patch', skpdict={
+ 'changed.skp': 200,
+ 'unchanged.skp': 100,
+ 'only-in-before.skp': 128,
+ })
+ self._generate_skps_and_run_render_pictures(
+ subdir='after_patch', skpdict={
+ 'changed.skp': 201,
+ 'unchanged.skp': 100,
+ 'only-in-after.skp': 128,
+ })
+
results_obj = compare_rendered_pictures.RenderedPicturesComparisons(
- actuals_root=os.path.join(self._input_dir, 'render_pictures_output'),
+ actuals_root=self._temp_dir,
subdirs=('before_patch', 'after_patch'),
generated_images_root=self._temp_dir,
diff_base_url='/static/generated-images')
results_obj.get_timestamp = mock_get_timestamp
+
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):
+ """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 = self.find_path_to_program('render_pictures')
+ return subprocess.check_output([
+ binary,
+ '--clone', '1',
+ '--config', '8888',
+ '-r', out_path,
+ '--writeChecksumBasedFilenames',
+ '--writeJsonSummaryPath', os.path.join(out_path, 'summary.json'),
+ '--writePath', out_path])
+
+ 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 = self.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."""
« no previous file with comments | « gm/rebaseline_server/base_unittest.py ('k') | gm/rebaseline_server/testdata/inputs/render_pictures_output/.gitattributes » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698