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

Unified Diff: gm/rebaseline_server/server.py

Issue 443013002: rebaseline_server: add "prefetch" directive that just warms the cache without awaiting results (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rebase Created 6 years, 4 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/imagepair_test.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gm/rebaseline_server/server.py
diff --git a/gm/rebaseline_server/server.py b/gm/rebaseline_server/server.py
index 6271f97dd2fa97dbd0da68456b24f5f1fd255e57..03bbe74b01e3b327494e62976e9c3abe079cf0dd 100755
--- a/gm/rebaseline_server/server.py
+++ b/gm/rebaseline_server/server.py
@@ -73,12 +73,7 @@ DEFAULT_PORT = 8888
PARENT_DIRECTORY = os.path.dirname(os.path.realpath(__file__))
TRUNK_DIRECTORY = os.path.dirname(os.path.dirname(PARENT_DIRECTORY))
-# Directory, relative to PARENT_DIRECTORY, within which the server will serve
-# out image diff data from within the precomputed _SERVER.results .
-PRECOMPUTED_RESULTS_SUBDIR = 'results'
-# Directory, relative to PARENT_DIRECTORY, within which the server will serve
-# out live-generated image diff data.
-LIVE_RESULTS_SUBDIR = 'live-results'
+
# Directory, relative to PARENT_DIRECTORY, within which the server will serve
# out static files.
STATIC_CONTENTS_SUBDIR = 'static'
@@ -87,10 +82,19 @@ GENERATED_HTML_SUBDIR = 'generated-html'
GENERATED_IMAGES_SUBDIR = 'generated-images'
GENERATED_JSON_SUBDIR = 'generated-json'
+# Directives associated with various HTTP GET requests.
+GET__LIVE_RESULTS = 'live-results'
+GET__PRECOMPUTED_RESULTS = 'results'
+GET__PREFETCH_RESULTS = 'prefetch'
+GET__STATIC_CONTENTS = 'static'
+
# Parameters we use within do_GET_live_results()
LIVE_PARAM__SET_A_DIR = 'setADir'
LIVE_PARAM__SET_B_DIR = 'setBDir'
+# Parameters we use within do_GET_prefetch_results()
+PREFETCH_PARAM__DOWNLOAD_ONLY_DIFFERING = 'downloadOnlyDifferingImages'
+
# How often (in seconds) clients should reload while waiting for initial
# results to load.
RELOAD_INTERVAL_UNTIL_READY = 10
@@ -170,11 +174,11 @@ def _create_index(file_path, config_pairs):
file_handle.write('<li>Expectations vs Actuals</li><ul>')
for summary_type in SUMMARY_TYPES:
file_handle.write(
- '<li><a href="/{static_subdir}/view.html#/view.html?'
- 'resultsToLoad=/{results_subdir}/{summary_type}">'
+ '<li><a href="/{static_directive}/view.html#/view.html?'
+ 'resultsToLoad=/{results_directive}/{summary_type}">'
'{summary_type}</a></li>'.format(
- results_subdir=PRECOMPUTED_RESULTS_SUBDIR,
- static_subdir=STATIC_CONTENTS_SUBDIR,
+ results_directive=GET__PRECOMPUTED_RESULTS,
+ static_directive=GET__STATIC_CONTENTS,
summary_type=summary_type))
file_handle.write('</ul>')
if config_pairs:
@@ -185,7 +189,7 @@ def _create_index(file_path, config_pairs):
file_handle.write(
' <a href="/%s/view.html#/view.html?'
'resultsToLoad=/%s/%s/%s-vs-%s_%s.json">%s</a>' % (
- STATIC_CONTENTS_SUBDIR, STATIC_CONTENTS_SUBDIR,
+ GET__STATIC_CONTENTS, GET__STATIC_CONTENTS,
GENERATED_JSON_SUBDIR, config_pair[0], config_pair[1],
summary_type, summary_type))
file_handle.write('</li>')
@@ -461,10 +465,10 @@ class HTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
logging.debug('do_GET: path="%s"' % self.path)
if self.path == '' or self.path == '/' or self.path == '/index.html' :
self.redirect_to('/%s/%s/index.html' % (
- STATIC_CONTENTS_SUBDIR, GENERATED_HTML_SUBDIR))
+ GET__STATIC_CONTENTS, GENERATED_HTML_SUBDIR))
return
if self.path == '/favicon.ico' :
- self.redirect_to('/%s/favicon.ico' % STATIC_CONTENTS_SUBDIR)
+ self.redirect_to('/%s/favicon.ico' % GET__STATIC_CONTENTS)
return
# All requests must be of this form:
@@ -474,9 +478,10 @@ class HTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
normpath = posixpath.normpath(self.path)
(dispatcher_name, remainder) = PATHSPLIT_RE.match(normpath).groups()
dispatchers = {
- PRECOMPUTED_RESULTS_SUBDIR: self.do_GET_precomputed_results,
- LIVE_RESULTS_SUBDIR: self.do_GET_live_results,
- STATIC_CONTENTS_SUBDIR: self.do_GET_static,
+ GET__LIVE_RESULTS: self.do_GET_live_results,
+ GET__PRECOMPUTED_RESULTS: self.do_GET_precomputed_results,
+ GET__PREFETCH_RESULTS: self.do_GET_prefetch_results,
+ GET__STATIC_CONTENTS: self.do_GET_static,
}
dispatcher = dispatchers[dispatcher_name]
dispatcher(remainder)
@@ -537,6 +542,26 @@ class HTTPRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):
self.send_json_dict(results_obj.get_packaged_results_of_type(
results_mod.KEY__HEADER__RESULTS_ALL))
+ def do_GET_prefetch_results(self, url_remainder):
+ """ Prefetch image diff data for a future do_GET_live_results() call.
+
+ Args:
+ url_remainder: string indicating which image diffs to generate
+ """
+ logging.debug('do_GET_prefetch_results: url_remainder="%s"' % url_remainder)
+ param_dict = urlparse.parse_qs(url_remainder)
+ download_all_images = (
+ param_dict.get(PREFETCH_PARAM__DOWNLOAD_ONLY_DIFFERING, [''])[0].lower()
+ not in ['1', 'true'])
+ compare_rendered_pictures.RenderedPicturesComparisons(
+ setA_dirs=param_dict[LIVE_PARAM__SET_A_DIR],
+ setB_dirs=param_dict[LIVE_PARAM__SET_B_DIR],
+ image_diff_db=_SERVER.image_diff_db,
+ diff_base_url='/static/generated-images',
+ gs=_SERVER.gs, truncate_results=_SERVER.truncate_results,
+ prefetch_only=True, download_all_images=download_all_images)
+ self.send_response(200)
+
def do_GET_static(self, path):
""" Handle a GET request for a file under STATIC_CONTENTS_SUBDIR .
Only allow serving of files within STATIC_CONTENTS_SUBDIR that is a
« no previous file with comments | « gm/rebaseline_server/imagepair_test.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698