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

Unified Diff: tools/rebaseline_imagefiles.py

Issue 18324018: rebaseline.py: use specified configs/tests as a FILTER over actually-run tests (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: sync_to_r9955 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
« no previous file with comments | « tools/rebaseline.py ('k') | tools/tests/rebaseline/output/all/output-expected/command_line » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/rebaseline_imagefiles.py
===================================================================
--- tools/rebaseline_imagefiles.py (revision 9955)
+++ tools/rebaseline_imagefiles.py (working copy)
@@ -55,9 +55,9 @@
# summary of results; typically "actual-results.json"
# tests: list of tests to rebaseline, or None if we should rebaseline
# whatever files the JSON results summary file tells us to
- # configs: which configs to run for each test; this should only be
- # specified if the list of tests was also specified (otherwise,
- # the JSON file will give us test names and configs)
+ # configs: which configs to run for each test, or None if we should
+ # rebaseline whatever configs the JSON results summary file tells
+ # us to
# dry_run: if True, instead of actually downloading files or adding
# files to checkout, display a list of operations that
# we would normally perform
@@ -67,9 +67,6 @@
def __init__(self, expectations_root, json_base_url, json_filename,
tests=None, configs=None, dry_run=False,
add_new=False, missing_json_is_fatal=False):
- if configs and not tests:
- raise ValueError('configs should only be specified if tests ' +
- 'were specified also')
self._expectations_root = expectations_root
self._tests = tests
self._configs = configs
@@ -125,20 +122,6 @@
print '# Couldn\'t fetch gs_url %s' % url
return False
- # Download a single actual result from skia-autogen, returning True if it
- # succeeded.
- def _DownloadFromAutogen(self, infilename, outfilename,
- expectations_subdir, builder_name):
- url = ('http://skia-autogen.googlecode.com/svn/gm-actual/' +
- expectations_subdir + '/' + builder_name + '/' +
- expectations_subdir + '/' + infilename)
- try:
- self._DownloadFile(source_url=url, dest_filename=outfilename)
- return True
- except CommandFailedException:
- print '# Couldn\'t fetch autogen_url %s' % url
- return False
-
# Download a single file, raising a CommandFailedException if it fails.
def _DownloadFile(self, source_url, dest_filename):
# Download into a temporary file and then rename it afterwards,
@@ -247,28 +230,14 @@
print ''
print '# ' + infilename
- # First try to download this result image from Google Storage.
- # If that fails, try skia-autogen.
- # If that fails too, just go on to the next file.
- #
- # This not treated as a fatal failure because not all
- # platforms generate all configs (e.g., Android does not
- # generate PDF).
- #
- # TODO(epoger): Once we are downloading only files that the
- # actual-results.json file told us to, this should become a
- # fatal error. (If the actual-results.json file told us that
- # the test failed with XXX results, we should be able to download
- # those results every time.)
+ # Download this result image from Google Storage; if that fails,
+ # raise an exception (because if actual-results.json told us that
+ # a particular image version is available for download, we should
+ # always be able to get it!)
if not self._DownloadFromGoogleStorage(infilename=infilename,
outfilename=outfilename,
all_results=all_results):
- if not self._DownloadFromAutogen(infilename=infilename,
- outfilename=outfilename,
- expectations_subdir=expectations_subdir,
- builder_name=builder_name):
- print '# Couldn\'t fetch infilename ' + infilename
- return
+ raise Exception('# Couldn\'t fetch infilename ' + infilename)
# Add this file to version control (if appropriate).
if self._add_new:
@@ -282,36 +251,6 @@
cmd = [ 'git', 'add', outfilename ]
self._Call(cmd)
- # Rebaseline the given configs for a single test.
- #
- # params:
- # expectations_subdir
- # builder_name
- # test: a single test to rebaseline
- # all_results: a dictionary of all actual results
- def _RebaselineOneTest(self, expectations_subdir, builder_name, test,
- all_results):
- if self._configs:
- configs = self._configs
- else:
- if (expectations_subdir == 'base-shuttle-win7-intel-angle'):
- configs = [ 'angle', 'anglemsaa16' ]
- else:
- configs = [ '565', '8888', 'gpu', 'pdf', 'mesa', 'msaa16',
- 'msaa4' ]
- if self._dry_run:
- print ''
- print '# ' + expectations_subdir + ':'
- for config in configs:
- infilename = test + '_' + config + '.png'
- outfilename = os.path.join(self._expectations_root,
- expectations_subdir, infilename);
- self._RebaselineOneFile(expectations_subdir=expectations_subdir,
- builder_name=builder_name,
- infilename=infilename,
- outfilename=outfilename,
- all_results=all_results)
-
# Rebaseline all tests/types we specified in the constructor,
# within this gm-expectations subdir.
#
@@ -323,19 +262,26 @@
subdir, builder, subdir,
self._json_filename])
all_results = self._GetActualResults(json_url=json_url)
+ filenames = self._GetFilesToRebaseline(json_url=json_url,
+ add_new=self._add_new)
+ skipped_files = []
+ for filename in filenames:
+ (test, config) = self._testname_pattern.match(filename).groups()
+ if self._tests:
+ if test not in self._tests:
+ skipped_files.append(filename)
+ continue
+ if self._configs:
+ if config not in self._configs:
+ skipped_files.append(filename)
+ continue
+ outfilename = os.path.join(subdir, filename);
+ self._RebaselineOneFile(expectations_subdir=subdir,
+ builder_name=builder,
+ infilename=filename,
+ outfilename=outfilename,
+ all_results=all_results)
- if self._tests:
- for test in self._tests:
- self._RebaselineOneTest(expectations_subdir=subdir,
- builder_name=builder,
- test=test, all_results=all_results)
- else: # get the raw list of files that need rebaselining from JSON
- filenames = self._GetFilesToRebaseline(json_url=json_url,
- add_new=self._add_new)
- for filename in filenames:
- outfilename = os.path.join(subdir, filename);
- self._RebaselineOneFile(expectations_subdir=subdir,
- builder_name=builder,
- infilename=filename,
- outfilename=outfilename,
- all_results=all_results)
+ if skipped_files:
+ print ('Skipped these files due to test/config filters: %s' %
+ skipped_files)
« no previous file with comments | « tools/rebaseline.py ('k') | tools/tests/rebaseline/output/all/output-expected/command_line » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698