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

Unified Diff: compute_engine_scripts/telemetry/telemetry_slave_scripts/write_json_summary.py

Issue 183763025: vm_run_skia_try/write_json_summary: run skpdiff within imagediffdb, not on its own (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: ravi's comments Created 6 years, 10 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: compute_engine_scripts/telemetry/telemetry_slave_scripts/write_json_summary.py
diff --git a/compute_engine_scripts/telemetry/telemetry_slave_scripts/write_json_summary.py b/compute_engine_scripts/telemetry/telemetry_slave_scripts/write_json_summary.py
index 50c44b20e1eb20633a96447d4a0f83d4c8cc70e9..5e88b206ae138939c3f4694bb003b57d73768ec9 100644
--- a/compute_engine_scripts/telemetry/telemetry_slave_scripts/write_json_summary.py
+++ b/compute_engine_scripts/telemetry/telemetry_slave_scripts/write_json_summary.py
@@ -18,22 +18,22 @@ sys.path.append(
import json_summary_constants
-def WriteJsonSummary(img_root, nopatch_json, nopatch_img_dir_name,
- withpatch_json, withpatch_img_dir_name, output_file_path,
- gs_output_dir, gs_skp_dir, slave_num, gm_json_path,
- imagediffdb_path, skpdiff_output_csv):
+def WriteJsonSummary(img_root, nopatch_json, nopatch_images_base_url,
+ withpatch_json, withpatch_images_base_url,
+ output_file_path, gs_output_dir, gs_skp_dir, slave_num,
+ gm_json_path, imagediffdb_path):
"""Outputs the JSON summary of image comparisions.
Args:
img_root: (str) The root directory on local disk where we store all images.
nopatch_json: (str) Location of the nopatch render_pictures JSON summary
file.
- nopatch_img_dir_name: (str) Name of the directory within img_root that
- contains all nopatch images.
+ nopatch_images_base_url: (str) URL of directory containing all nopatch
+ images.
withpatch_json: (str) Location of the withpatch render_pictures JSON summary
file.
- withpatch_img_dir_name: (str) Name of the directory within img_root that
- contains all withpatch images.
+ withpatch_images_base_url: (str) URL of directory containing all withpatch
+ images.
output_file_path: (str) The local path to the JSON file that will be
created by this function which will contain a summary of all file
differences for this slave.
@@ -45,7 +45,6 @@ def WriteJsonSummary(img_root, nopatch_json, nopatch_img_dir_name,
this script.
gm_json_path: (str) Local complete path to gm_json.py in Skia trunk.
imagediffdb_path: (str) Local complete path to imagediffdb.py in Skia trunk.
- skpdiff_output_csv: (str) Local complete path to the CSV output of skpdiff.
"""
assert os.path.isfile(gm_json_path), 'Must specify a valid path to gm_json.py'
@@ -54,13 +53,15 @@ def WriteJsonSummary(img_root, nopatch_json, nopatch_img_dir_name,
'Must specify a valid path to imagediffdb.py')
imagediffdb_mod = imp.load_source(imagediffdb_path, imagediffdb_path)
- files_to_checksums1 = GetFilesAndChecksums(nopatch_json, gm_json_mod)
- files_to_checksums2 = GetFilesAndChecksums(withpatch_json, gm_json_mod)
+ files_to_checksums_nopatch = GetFilesAndChecksums(nopatch_json, gm_json_mod)
+ files_to_checksums_withpatch = GetFilesAndChecksums(
+ withpatch_json, gm_json_mod)
- assert len(files_to_checksums1) == len(files_to_checksums2), (
+ assert len(files_to_checksums_nopatch) == len(files_to_checksums_withpatch), (
'Number of images in both JSON summary files are different')
- assert files_to_checksums1.keys() == files_to_checksums2.keys(), (
- 'File names in both JSON summary files are different')
+ assert (files_to_checksums_nopatch.keys() ==
+ files_to_checksums_withpatch.keys(),
+ 'File names in both JSON summary files are different')
# Compare checksums in both directories and output differences.
file_differences = []
@@ -79,40 +80,38 @@ def WriteJsonSummary(img_root, nopatch_json, nopatch_img_dir_name,
json_summary = {
'slave%s' % slave_num: slave_dict
}
- # Read the skpdiff CSV output.
- page_to_perceptual_similarity = {}
- for row in csv.DictReader(open(skpdiff_output_csv, 'r')):
- page_to_perceptual_similarity[row['key']] = float(
- row[' perceptual'].strip())
-
- for file1 in files_to_checksums1:
- algo1, checksum1 = files_to_checksums1[file1]
- algo2, checksum2 = files_to_checksums2[file1]
- assert algo1 == algo2, 'Different algorithms found'
- if checksum1 != checksum2:
- # Call imagediffdb and then the diffs and metrics.
- image_diff = imagediffdb_mod.DiffRecord(
- storage_root=img_root,
- expected_image_url=None, # Do not need to download any img.
- expected_image_locator=os.path.splitext(file1)[0],
- actual_image_url=None, # Do not need to download any img.
- actual_image_locator=os.path.splitext(file1)[0],
- expected_images_subdir=nopatch_img_dir_name,
- actual_images_subdir=withpatch_img_dir_name)
+
+ image_diff_db = imagediffdb_mod.ImageDiffDB(storage_root=img_root)
+ for filename in files_to_checksums_nopatch:
+ algo_nopatch, checksum_nopatch = files_to_checksums_nopatch[filename]
+ algo_withpatch, checksum_withpatch = files_to_checksums_withpatch[filename]
+ assert algo_nopatch == algo_withpatch, 'Different checksum algorithms found'
+ if checksum_nopatch != checksum_withpatch:
+ # TODO(epoger): It seems silly that we add this DiffRecord to ImageDiffDB
+ # and then pull it out again right away, but this is a stepping-stone
+ # to using ImagePairSet instead of replicating its behavior here.
+ image_diff_db.add_image_pair(
+ expected_image_url=posixpath.join(nopatch_images_base_url, filename),
+ expected_image_locator=checksum_nopatch,
+ actual_image_url=posixpath.join(withpatch_images_base_url, filename),
+ actual_image_locator=checksum_withpatch)
+ diff_record = image_diff_db.get_diff_record(
+ expected_image_locator=checksum_nopatch,
+ actual_image_locator=checksum_withpatch)
file_differences.append({
- json_summary_constants.JSONKEY_FILE_NAME: file1,
+ json_summary_constants.JSONKEY_FILE_NAME: filename,
json_summary_constants.JSONKEY_SKP_LOCATION: posixpath.join(
- gs_skp_dir, GetSkpFileName(file1)),
+ gs_skp_dir, GetSkpFileName(filename)),
json_summary_constants.JSONKEY_NUM_PIXELS_DIFFERING:
- image_diff.get_num_pixels_differing(),
+ diff_record.get_num_pixels_differing(),
json_summary_constants.JSONKEY_PERCENT_PIXELS_DIFFERING:
- image_diff.get_percent_pixels_differing(),
+ diff_record.get_percent_pixels_differing(),
json_summary_constants.JSONKEY_WEIGHTED_DIFF_MEASURE:
- image_diff.get_weighted_diff_measure(),
+ diff_record.get_weighted_diff_measure(),
json_summary_constants.JSONKEY_MAX_DIFF_PER_CHANNEL:
- image_diff.get_max_diff_per_channel(),
+ diff_record.get_max_diff_per_channel(),
json_summary_constants.JSONKEY_PERCEPTUAL_SIMILARITY:
- page_to_perceptual_similarity[file1],
+ diff_record.get_perceptual_difference(),
})
if file_differences:
slave_dict[json_summary_constants.JSONKEY_FAILED_FILES_COUNT] = len(
@@ -147,16 +146,14 @@ if '__main__' == __name__:
'', '--nopatch_json',
help='Location of the nopatch render_pictures JSON summary file.')
option_parser.add_option(
- '', '--nopatch_img_dir_name',
- help='Name of the directory within img_root that contains all nopatch '
- 'images.')
+ '', '--nopatch_images_base_url',
+ help='URL of directory containing all nopatch images.')
option_parser.add_option(
'', '--withpatch_json',
help='Location of the withpatch render_pictures JSON summary file.')
option_parser.add_option(
- '', '--withpatch_img_dir_name',
- help='Name of the directory within img_root that contains all withpatch '
- 'images.')
+ '', '--withpatch_images_base_url',
+ help='URL of directory containing all withpatch images.')
option_parser.add_option(
'', '--output_file_path',
help='The local path to the JSON file that will be created by this '
@@ -180,25 +177,22 @@ if '__main__' == __name__:
option_parser.add_option(
'', '--imagediffdb_path',
help='Local complete path to imagediffdb.py in Skia trunk.')
- option_parser.add_option(
- '', '--skpdiff_output_csv',
- help='Local complete path to the CSV output of skpdiff.')
options, unused_args = option_parser.parse_args()
if (not options.nopatch_json or not options.withpatch_json
or not options.output_file_path or not options.gs_output_dir
or not options.gs_skp_dir or not options.slave_num
or not options.gm_json_path or not options.img_root
- or not options.nopatch_img_dir_name or not options.withpatch_img_dir_name
- or not options.imagediffdb_path or not options.skpdiff_output_csv):
+ or not options.nopatch_images_base_url
+ or not options.withpatch_images_base_url
+ or not options.imagediffdb_path):
option_parser.error(
- 'Must specify img_root, nopatch_json, nopatch_img_dir_name, '
- 'withpatch_json, withpatch_img_dir_name, output_file_path, '
+ 'Must specify img_root, nopatch_json, nopatch_images_base_url, '
+ 'withpatch_json, withpatch_images_base_url, output_file_path, '
'gs_output_dir, gs_skp_dir, slave_num, gm_json_path, '
- 'imagediffdb_path and skpdiff_output_csv.')
+ 'and imagediffdb_path.')
WriteJsonSummary(options.img_root, options.nopatch_json,
- options.nopatch_img_dir_name, options.withpatch_json,
- options.withpatch_img_dir_name, options.output_file_path,
+ options.nopatch_images_base_url, options.withpatch_json,
+ options.withpatch_images_base_url, options.output_file_path,
options.gs_output_dir, options.gs_skp_dir, options.slave_num,
- options.gm_json_path, options.imagediffdb_path,
- options.skpdiff_output_csv)
+ options.gm_json_path, options.imagediffdb_path)

Powered by Google App Engine
This is Rietveld 408576698