Index: tools/memory_inspector/PRESUBMIT.py |
diff --git a/tools/memory_inspector/PRESUBMIT.py b/tools/memory_inspector/PRESUBMIT.py |
index 5d0e21e3d35ec130486171526ef8518fef52cd38..9e44d9e8d2e3abd16dcc95c2dbaa7c99c15328c8 100644 |
--- a/tools/memory_inspector/PRESUBMIT.py |
+++ b/tools/memory_inspector/PRESUBMIT.py |
@@ -9,7 +9,7 @@ details on the presubmit API built into gcl. |
""" |
-def CommonChecks(input_api, output_api): |
+def _CommonChecks(input_api, output_api): |
output = [] |
blacklist = [r'classification_rules.*'] |
output.extend(input_api.canned_checks.RunPylint( |
@@ -30,9 +30,46 @@ def CommonChecks(input_api, output_api): |
return output |
+def _CheckPrebuiltsAreUploaded(input_api, output_api): |
+ import sys |
+ import urllib2 |
+ old_sys_path = sys.path[:] |
M-A Ruel
2014/09/12 13:58:37
Actually you want to do the reverse;
old_sys_path
Primiano Tucci (use gerrit)
2014/09/12 15:30:41
Uh? I'm fine both ways.
Can I ask just you what wo
M-A Ruel
2014/09/16 13:00:19
Well, the original could be something else than a
|
+ try: |
+ sys.path.append(input_api.os_path.join(input_api.PresubmitLocalPath())) |
+ from memory_inspector import constants |
+ finally: |
+ sys.path = old_sys_path |
+ missing_files = [] |
+ for f in input_api.os_listdir(constants.PREBUILTS_PATH): |
+ if not f.endswith('.sha1'): |
+ continue |
+ prebuilt_sha_path = input_api.os_path.join(constants.PREBUILTS_PATH, f) |
+ with open(prebuilt_sha_path) as sha_file: |
+ sha = sha_file.read().strip() |
+ url = constants.PREBUILTS_BASE_URL + sha |
M-A Ruel
2014/09/12 13:58:37
Is it https?
Primiano Tucci (use gerrit)
2014/09/12 15:30:42
Yes, it is
PREBUILTS_BASE_URL = 'https://storage.g
|
+ request = urllib2.Request(url) |
+ request.get_method = lambda : 'HEAD' |
+ try: |
+ urllib2.urlopen(request) |
M-A Ruel
2014/09/12 13:58:37
Use a timeout
Primiano Tucci (use gerrit)
2014/09/12 15:30:41
Done.
|
+ except Exception, e: |
M-A Ruel
2014/09/12 13:58:37
Exception as e:
Primiano Tucci (use gerrit)
2014/09/12 15:30:42
Done.
|
+ if isinstance(e, urllib2.HTTPError) and e.code == 404: |
+ missing_files += [prebuilt_sha_path] |
+ else: |
+ return [output_api.PresubmitError('HTTP Error while checking %s' % url, |
+ long_text=str(e))] |
+ if missing_files: |
+ return [output_api.PresubmitError( |
+ 'Some prebuilts have not been uploaded. Perhaps you forgot to ' |
+ 'upload_to_google_storage.py?', missing_files)] |
+ return [] |
+ |
+ |
def CheckChangeOnUpload(input_api, output_api): |
- return CommonChecks(input_api, output_api) |
+ results = [] |
+ results.extend(_CommonChecks(input_api, output_api)) |
+ results.extend(_CheckPrebuiltsAreUploaded(input_api, output_api)) |
+ return results |
def CheckChangeOnCommit(input_api, output_api): |
- return CommonChecks(input_api, output_api) |
+ return _CommonChecks(input_api, output_api) |