| #!/usr/bin/env python |
| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| import argparse |
| import json |
| import os |
| import sys |
| |
| from telemetry.core import util |
| |
| sys.path.insert(1, os.path.abspath(os.path.join( |
| util.GetCatapultDir(), 'common', 'py_utils'))) |
| sys.path.insert(1, os.path.abspath(os.path.join( |
| util.GetCatapultDir(), 'dependency_manager'))) |
| from py_utils import cloud_storage |
| import dependency_manager |
| |
| |
| def ValidateCloudStorageDependencies(file_path): |
| base_config = dependency_manager.BaseConfig(file_path) |
| cloud_storage_deps_not_exist = [] |
| for dep_info in base_config.IterDependencyInfo(): |
| if dep_info.has_cloud_storage_info: |
| if not dep_info.cloud_storage_info.DependencyExistsInCloudStorage(): |
| print >> sys.stderr, ( |
| '%s does not exist in cloud storage' % dep_info.cloud_storage_info) |
| cloud_storage_deps_not_exist = True |
| else: |
| print >> sys.stdout, ( |
| '%s passes cloud storage validation' % dep_info.dependency) |
| |
| if cloud_storage_deps_not_exist: |
| raise Exception( |
| "Some dependencies specify cloud storage locations that don't exist.") |
| |
| |
| def Main(args): |
| parser = argparse.ArgumentParser( |
| description='Validate the dependencies in a binary dependency json file') |
| parser.add_argument('file_path', type=str, |
| help='The path to binary dependency json file') |
| options = parser.parse_args(args) |
| ValidateCloudStorageDependencies(options.file_path) |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(Main(sys.argv[1:])) |