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

Unified Diff: gm/rebaseline_server/server.py

Issue 688353003: Add support for rebaselining from trybots. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 1 month 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/server.py
diff --git a/gm/rebaseline_server/server.py b/gm/rebaseline_server/server.py
index 6062aed641e1f9581ccc852eaf9f656265682bef..75bd041131affba31d9acb83f7ab5da3f4bd7c01 100755
--- a/gm/rebaseline_server/server.py
+++ b/gm/rebaseline_server/server.py
@@ -262,6 +262,7 @@ class Server(object):
def __init__(self,
actuals_dir=DEFAULT_ACTUALS_DIR,
json_filename=DEFAULT_JSON_FILENAME,
+ rietveld_issue=None,
gm_summaries_bucket=DEFAULT_GM_SUMMARIES_BUCKET,
port=DEFAULT_PORT, export=False, editable=True,
reload_seconds=0, config_pairs=None, builder_regex_list=None,
@@ -272,6 +273,8 @@ class Server(object):
actuals_dir: directory under which we will check out the latest actual
GM results
json_filename: basename of the JSON summary file to load for each builder
+ rietveld_issue: download json_filename files from latest trybot runs on
+ this codereview.chromium.org issue.
gm_summaries_bucket: Google Storage bucket to download json_filename
files from; if None or '', don't fetch new actual-results files
at all, just compare to whatever files are already in actuals_dir
@@ -294,6 +297,7 @@ class Server(object):
"""
self._actuals_dir = actuals_dir
self._json_filename = json_filename
+ self._rietveld_issue = rietveld_issue
self._gm_summaries_bucket = gm_summaries_bucket
self._port = port
self._export = export
@@ -385,6 +389,44 @@ class Server(object):
with self.results_rlock:
if invalidate:
self._results = None
+
+ if self._rietveld_issue:
+ logging.info(
+ 'Updating GM result summaries in %s from rietveld_issue %s ...'
+ % (self._actuals_dir, self._rietveld_issue))
+
+ # Clean out actuals_dir first, in case some builders have gone away
rmistry 2014/11/05 13:39:16 There is a lot of code duplication here with the s
bungeman-skia 2014/11/07 22:56:53 Done.
+ # since we last ran.
+ if os.path.isdir(self._actuals_dir):
+ shutil.rmtree(self._actuals_dir)
+
+ # Get the list of actuals we care about.
+ all_actuals = download_actuals.get_rietveld_actuals(
+ self._rietveld_issue, self._json_filename)
+
+ if self._builder_regex_list:
+ matching_builders = []
+ for builder in all_actuals:
+ for regex in self._builder_regex_list:
+ if re.match(regex, builder):
+ matching_builders.append(builder)
+ break # go on to the next builder, no need to try more regexes
+ else:
+ matching_builders = all_actuals.keys()
+
+ # Download the JSON file for each builder we care about.
+ #
+ # TODO(epoger): When this is a large number of builders, we would be
+ # better off downloading them in parallel!
+ for builder in matching_builders:
+ self._gs.download_file(
+ source_bucket=all_actuals[builder][0],
+ source_path=all_actuals[builder][1],
+ source_generation=all_actuals[builder][2],
+ dest_path=os.path.join(self._actuals_dir, builder,
+ self._json_filename),
+ create_subdirs_if_needed=True)
+
if self._gm_summaries_bucket:
logging.info(
'Updating GM result summaries in %s from gm_summaries_bucket %s ...'
@@ -899,6 +941,9 @@ def main():
'to access this server. WARNING: doing so will '
'allow users on other hosts to modify your '
'GM expectations, if combined with --editable.'))
+ parser.add_argument('--rietveld_issue',
+ help=('Download json_filename files from latest trybot'
+ 'runs on this codereview.chromium.org issue.'))
parser.add_argument('--gm-summaries-bucket',
help=('Google Cloud Storage bucket to download '
'JSON_FILENAME files from. '
@@ -939,6 +984,7 @@ def main():
global _SERVER
_SERVER = Server(actuals_dir=args.actuals_dir,
json_filename=args.json_filename,
+ rietveld_issue=args.rietveld_issue,
gm_summaries_bucket=args.gm_summaries_bucket,
port=args.port, export=args.export, editable=args.editable,
reload_seconds=args.reload, config_pairs=config_pairs,
« gm/rebaseline_server/download_actuals.py ('K') | « gm/rebaseline_server/download_actuals.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698