def _CheckWprShaFiles(input_api, output_api): """Check whether the wpr sha files have matching URLs.""" old_sys_path = sys.path try: perf_dir = input_api.PresubmitLocalPath() catapult_path = os.path.abspath(os.path.join( perf_dir, '..', '..', 'third_party', 'catapult', 'catapult_base')) sys.path.insert(1, catapult_path) from catapult_base import cloud_storage # pylint: disable=import-error finally: sys.path = old_sys_path results = [] for affected_file in input_api.AffectedFiles(include_deletes=False): filename = affected_file.AbsoluteLocalPath() if not filename.endswith('wpr.sha1'): continue expected_hash = cloud_storage.ReadHash(filename) is_wpr_file_uploaded = any( cloud_storage.Exists(bucket, expected_hash) for bucket in cloud_storage.BUCKET_ALIASES.itervalues()) if not is_wpr_file_uploaded: wpr_filename = filename[:-5] results.append(output_api.PresubmitError( 'The file matching %s is not in Cloud Storage yet.\n' 'You can upload your new WPR archive file with the command:\n' 'depot_tools/upload_to_google_storage.py --bucket ' '<Your pageset\'s bucket> %s.\nFor more info: see ' 'http://www.chromium.org/developers/telemetry/' 'record_a_page_set#TOC-Upload-the-recording-to-Cloud-Storage' % (filename, wpr_filename))) return results
def _GetFilesNotInCloud(input_api): """Searches for .sha1 files and checks to see if they have already been uploaded Cloud Storage. Returns a list of those that have not. """ hash_paths = [] for affected_file in input_api.AffectedFiles(include_deletes=False): hash_path = affected_file.AbsoluteLocalPath() _, extension = os.path.splitext(hash_path) if extension == '.sha1': hash_paths.append(hash_path) if not hash_paths: return [] cloud_storage = LoadSupport(input_api) # Look in both buckets, in case the user uploaded the file manually. hashes_in_cloud_storage = cloud_storage.List(cloud_storage.PUBLIC_BUCKET) try: hashes_in_cloud_storage += cloud_storage.List(cloud_storage.INTERNAL_BUCKET) except (cloud_storage.PermissionError, cloud_storage.CredentialsError): pass files = [] for hash_path in hash_paths: file_hash = cloud_storage.ReadHash(hash_path) if file_hash not in hashes_in_cloud_storage: files.append((hash_path, file_hash)) return files
def _CheckWprShaFiles(input_api, output_api): """Check whether the wpr sha files have matching URLs.""" from catapult_base import cloud_storage results = [] for affected_file in input_api.AffectedFiles(include_deletes=False): filename = affected_file.AbsoluteLocalPath() if not filename.endswith('wpr.sha1'): continue expected_hash = cloud_storage.ReadHash(filename) is_wpr_file_uploaded = any( cloud_storage.Exists(bucket, expected_hash) for bucket in cloud_storage.BUCKET_ALIASES.itervalues()) if not is_wpr_file_uploaded: wpr_filename = filename[:-5] results.append(output_api.PresubmitError( 'There is no URLs matched for wpr sha file %s.\n' 'You can upload your new wpr archive file with the command:\n' 'depot_tools/upload_to_google_storage.py --bucket ' '<Your pageset\'s bucket> %s.\nFor more info: see ' 'http://www.chromium.org/developers/telemetry/' 'record_a_page_set#TOC-Upload-the-recording-to-Cloud-Storage' % (filename, wpr_filename))) return results