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

Unified Diff: telemetry/telemetry/internal/util/binary_manager.py

Issue 1838863002: Change telemetry run_tests.py to prefetch all binaries before tests in parallel (Closed) Base URL: https://github.com/catapult-project/catapult@master
Patch Set: Fix bug in DependencyManager.PrefetchPaths Created 4 years, 9 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: telemetry/telemetry/internal/util/binary_manager.py
diff --git a/telemetry/telemetry/internal/util/binary_manager.py b/telemetry/telemetry/internal/util/binary_manager.py
index 6af0c97c948266a9580bcba2cc12b8de28e4eb82..d4df68fad07e58b1573635c432065540175b27a0 100644
--- a/telemetry/telemetry/internal/util/binary_manager.py
+++ b/telemetry/telemetry/internal/util/binary_manager.py
@@ -5,12 +5,13 @@
import os
from catapult_base import binary_manager
-from dependency_manager import base_config
-from dependency_manager import exceptions as dependency_manager_exceptions
+from catapult_base import dependency_util
+import dependency_manager
from devil import devil_env
from telemetry.core import exceptions
from telemetry.core import util
+from telemetry.core import platform as platform_module
TELEMETRY_PROJECT_CONFIG = os.path.join(
@@ -21,8 +22,8 @@ CHROME_BINARY_CONFIG = os.path.join(util.GetCatapultDir(), 'catapult_base',
'catapult_base', 'chrome_binaries.json')
-NoPathFoundError = dependency_manager_exceptions.NoPathFoundError
-CloudStorageError = dependency_manager_exceptions.CloudStorageError
+NoPathFoundError = dependency_manager.NoPathFoundError
+CloudStorageError = dependency_manager.CloudStorageError
_binary_manager = None
@@ -38,10 +39,10 @@ def InitDependencyManager(environment_config):
raise exceptions.InitializationError(
'Trying to re-initialize the binary manager with config %s'
% environment_config)
- configs = [base_config.BaseConfig(TELEMETRY_PROJECT_CONFIG),
- base_config.BaseConfig(CHROME_BINARY_CONFIG)]
+ configs = [dependency_manager.BaseConfig(TELEMETRY_PROJECT_CONFIG),
+ dependency_manager.BaseConfig(CHROME_BINARY_CONFIG)]
if environment_config:
- configs.insert(0, base_config.BaseConfig(environment_config))
+ configs.insert(0, dependency_manager.BaseConfig(environment_config))
_binary_manager = binary_manager.BinaryManager(configs)
devil_env.config.Initialize()
@@ -65,3 +66,49 @@ def LocalPath(binary_name, arch, os_name, os_version=None):
raise exceptions.InitializationError(
'Called LocalPath with uninitialized binary manager.')
return _binary_manager.LocalPath(binary_name, arch, os_name, os_version)
+
+
+def FetchBinaryDepdencies(platform, client_config,
+ fetch_reference_chrome_binary):
+ """ Fetch all binary dependenencies for the given |platform|.
+
+ Note: we don't fetch browser binaries by default because the size of the
+ binary is about 2Gb, and it requires cloud storage permission to
+ chrome-telemetry bucket.
+
+ Args:
+ platform: an instance of telemetry.core.platform
+ client_config: A path (string) to a dependencies json file.
+ fetch_reference_chrome_binary: whether to fetch reference chrome binary for
+ the given platform.
+ """
+ configs = [dependency_manager.BaseConfig(TELEMETRY_PROJECT_CONFIG)]
+ if client_config:
+ configs.insert(0, dependency_manager.BaseConfig(client_config))
+ dep_manager = dependency_manager.DependencyManager(configs)
+ target_platform = '%s_%s' % (platform.GetOSName(), platform.GetArchName())
+ dep_manager.PrefetchPaths(target_platform)
+
+ if platform.GetOSName() == 'android':
+ host_platform = '%s_%s' % (
+ platform_module.GetHostPlatform().GetOSName(),
+ platform_module.GetHostPlatform().GetArchName())
+ dep_manager.PrefetchPaths(host_platform)
+
+ if fetch_reference_chrome_binary:
+ _FetchReferenceBrowserBinary(platform)
+
+
+def _FetchReferenceBrowserBinary(platform):
+ os_name = platform.GetOSName()
+ arch_name = platform.GetArchName()
+ manager = binary_manager.BinaryManager(
+ [dependency_manager.BaseConfig(CHROME_BINARY_CONFIG)])
+ if os_name == 'android':
+ os_version = dependency_util.GetChromeApkOsVersion(
+ platform.GetOSVersionName())
+ manager.FetchPath(
+ 'chrome_stable', arch_name, os_name, os_version)
+ else:
+ manager.FetchPath(
+ 'reference_build', arch_name, os_name)

Powered by Google App Engine
This is Rietveld 408576698