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

Unified Diff: tools/telemetry/catapult_base/dependency_manager/dependency_manager.py

Issue 1599413006: Remove catapult_base from telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@perf_cb_move
Patch Set: Created 4 years, 11 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
Index: tools/telemetry/catapult_base/dependency_manager/dependency_manager.py
diff --git a/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py b/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py
deleted file mode 100644
index 147c5c4f066b171005afef1809fa82f99fce9a97..0000000000000000000000000000000000000000
--- a/tools/telemetry/catapult_base/dependency_manager/dependency_manager.py
+++ /dev/null
@@ -1,172 +0,0 @@
-# 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 os
-import sys
-
-sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(
- os.path.abspath(__file__)))))
-from catapult_base.dependency_manager import base_config
-from catapult_base.dependency_manager import exceptions
-
-
-DEFAULT_TYPE = 'default'
-
-
-class DependencyManager(object):
- def __init__(self, configs, supported_config_types=None):
- """Manages file dependencies found locally or in cloud_storage.
-
- Args:
- configs: A list of instances of BaseConfig or it's subclasses, passed
- in decreasing order of precedence.
- supported_config_types: A list of whitelisted config_types.
- No restrictions if None is specified.
-
- Raises:
- ValueError: If |configs| is not a list of instances of BaseConfig or
- its subclasses.
- UnsupportedConfigFormatError: If supported_config_types is specified and
- configs contains a config not in the supported config_types.
-
- Example: DependencyManager([config1, config2, config3])
- No requirements on the type of Config, and any dependencies that have
- local files for the same platform will first look in those from
- config1, then those from config2, and finally those from config3.
- """
- if configs is None or type(configs) != list:
- raise ValueError(
- 'Must supply a list of config files to DependencyManager')
- # self._lookup_dict is a dictionary with the following format:
- # { dependency1: {platform1: dependency_info1,
- # platform2: dependency_info2}
- # dependency2: {platform1: dependency_info3,
- # ...}
- # ...}
- #
- # Where the dependencies and platforms are strings, and the
- # dependency_info's are DependencyInfo instances.
- self._lookup_dict = {}
- self.supported_configs = supported_config_types or []
- for config in configs:
- self._UpdateDependencies(config)
-
- def FetchPath(self, dependency, platform):
- """Get a path to an executable for |dependency|, downloading as needed.
-
- A path to a default executable may be returned if a platform specific
- version is not specified in the config(s).
-
- Args:
- dependency: Name of the desired dependency, as given in the config(s)
- used in this DependencyManager.
- platform: Name of the platform the dependency will run on. Often of the
- form 'os_architecture'. Must match those specified in the config(s)
- used in this DependencyManager.
- Returns:
- A path to an executable of |dependency| that will run on |platform|,
- downloading from cloud storage if needed.
-
- Raises:
- NoPathFoundError: If a local copy of the executable cannot be found and
- a remote path could not be downloaded from cloud_storage.
- CredentialsError: If cloud_storage credentials aren't configured.
- PermissionError: If cloud_storage credentials are configured, but not
- with an account that has permission to download the remote file.
- NotFoundError: If the remote file does not exist where expected in
- cloud_storage.
- ServerError: If an internal server error is hit while downloading the
- remote file.
- CloudStorageError: If another error occured while downloading the remote
- path.
- FileNotFoundError: If an attempted download was otherwise unsuccessful.
-
- """
- dependency_info = self._GetDependencyInfo(dependency, platform)
- if not dependency_info:
- raise exceptions.NoPathFoundError(dependency, platform)
- path = dependency_info.GetLocalPath()
- if not path or not os.path.exists(path):
- path = dependency_info.GetRemotePath()
- if not path or not os.path.exists(path):
- raise exceptions.NoPathFoundError(dependency, platform)
- return path
-
- def LocalPath(self, dependency, platform):
- """Get a path to a locally stored executable for |dependency|.
-
- A path to a default executable may be returned if a platform specific
- version is not specified in the config(s).
- Will not download the executable.
-
- Args:
- dependency: Name of the desired dependency, as given in the config(s)
- used in this DependencyManager.
- platform: Name of the platform the dependency will run on. Often of the
- form 'os_architecture'. Must match those specified in the config(s)
- used in this DependencyManager.
- Returns:
- A path to an executable for |dependency| that will run on |platform|.
-
- Raises:
- NoPathFoundError: If a local copy of the executable cannot be found.
- """
- dependency_info = self._GetDependencyInfo(dependency, platform)
- if not dependency_info:
- raise exceptions.NoPathFoundError(dependency, platform)
- local_path = dependency_info.GetLocalPath()
- if not local_path or not os.path.exists(local_path):
- raise exceptions.NoPathFoundError(dependency, platform)
- return local_path
-
- def _UpdateDependencies(self, config):
- """Add the dependency information stored in |config| to this instance.
-
- Args:
- config: An instances of BaseConfig or a subclasses.
-
- Raises:
- UnsupportedConfigFormatError: If supported_config_types was specified
- and config is not in the supported config_types.
- """
- if not isinstance(config, base_config.BaseConfig):
- raise ValueError('Must use a BaseConfig or subclass instance with the '
- 'DependencyManager.')
- if (self.supported_configs and
- config.GetConfigType() not in self.supported_configs):
- raise exceptions.UnsupportedConfigFormatError(config.GetConfigType(),
- config.config_path)
- for dep_info in config.IterDependencyInfo():
- dependency = dep_info.dependency
- platform = dep_info.platform
- if dependency not in self._lookup_dict:
- self._lookup_dict[dependency] = {}
- if platform not in self._lookup_dict[dependency]:
- self._lookup_dict[dependency][platform] = dep_info
- else:
- self._lookup_dict[dependency][platform].Update(dep_info)
-
-
- def _GetDependencyInfo(self, dependency, platform):
- """Get information for |dependency| on |platform|, or a default if needed.
-
- Args:
- dependency: Name of the desired dependency, as given in the config(s)
- used in this DependencyManager.
- platform: Name of the platform the dependency will run on. Often of the
- form 'os_architecture'. Must match those specified in the config(s)
- used in this DependencyManager.
-
- Returns: The dependency_info for |dependency| on |platform| if it exists.
- Or the default version of |dependency| if it exists, or None if neither
- exist.
- """
- if not self._lookup_dict or dependency not in self._lookup_dict:
- return None
- dependency_dict = self._lookup_dict[dependency]
- device_type = platform
- if not device_type in dependency_dict:
- device_type = DEFAULT_TYPE
- return dependency_dict.get(device_type)
-

Powered by Google App Engine
This is Rietveld 408576698