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

Unified Diff: tools/telemetry/telemetry/internal/browser/browser_options.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
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/telemetry/internal/browser/browser_options.py
diff --git a/tools/telemetry/telemetry/internal/browser/browser_options.py b/tools/telemetry/telemetry/internal/browser/browser_options.py
deleted file mode 100644
index 7684c36dff83e1dbe8af19233f4633d27dce7791..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/browser/browser_options.py
+++ /dev/null
@@ -1,438 +0,0 @@
-# Copyright 2012 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 copy
-import logging
-import optparse
-import os
-import shlex
-import socket
-import sys
-
-import net_configs
-
-from catapult_base import cloud_storage # pylint: disable=import-error
-
-from telemetry.core import platform
-from telemetry.core import util
-from telemetry.internal.browser import browser_finder
-from telemetry.internal.browser import browser_finder_exceptions
-from telemetry.internal.browser import profile_types
-from telemetry.internal.platform import device_finder
-from telemetry.internal.platform.profiler import profiler_finder
-from telemetry.internal.util import binary_manager
-from telemetry.util import wpr_modes
-
-
-class BrowserFinderOptions(optparse.Values):
- """Options to be used for discovering a browser."""
-
- def __init__(self, browser_type=None):
- optparse.Values.__init__(self)
-
- self.browser_type = browser_type
- self.browser_executable = None
- self.chrome_root = None
- self.device = None
- self.cros_ssh_identity = None
-
- self.extensions_to_load = []
-
- # If set, copy the generated profile to this path on exit.
- self.output_profile_path = None
-
- self.cros_remote = None
-
- self.profiler = None
- self.verbosity = 0
-
- self.browser_options = BrowserOptions()
- self.output_file = None
-
- self.android_blacklist_file = None
- self.android_rndis = False
- self.no_performance_mode = False
-
- def __repr__(self):
- return str(sorted(self.__dict__.items()))
-
- def Copy(self):
- return copy.deepcopy(self)
-
- def CreateParser(self, *args, **kwargs):
- parser = optparse.OptionParser(*args, **kwargs)
-
- # Selection group
- group = optparse.OptionGroup(parser, 'Which browser to use')
- group.add_option('--browser',
- dest='browser_type',
- default=None,
- help='Browser type to run, '
- 'in order of priority. Supported values: list,%s' %
- ','.join(browser_finder.FindAllBrowserTypes(self)))
- group.add_option('--browser-executable',
- dest='browser_executable',
- help='The exact browser to run.')
- group.add_option('--chrome-root',
- dest='chrome_root',
- help='Where to look for chrome builds.'
- 'Defaults to searching parent dirs by default.')
- group.add_option('--device',
- dest='device',
- help='The device ID to use.'
- 'If not specified, only 0 or 1 connected devices are supported. If'
- 'specified as "android", all available Android devices are used.')
- group.add_option('--target-arch',
- dest='target_arch',
- help='The target architecture of the browser. Options available are: '
- 'x64, x86_64, arm, arm64 and mips. '
- 'Defaults to the default architecture of the platform if omitted.')
- group.add_option(
- '--remote',
- dest='cros_remote',
- help='The hostname of a remote ChromeOS device to use.')
- group.add_option(
- '--remote-ssh-port',
- type=int,
- default=socket.getservbyname('ssh'),
- dest='cros_remote_ssh_port',
- help='The SSH port of the remote ChromeOS device (requires --remote).')
- identity = None
- testing_rsa = os.path.join(
- util.GetTelemetryThirdPartyDir(), 'chromite', 'ssh_keys', 'testing_rsa')
- if os.path.exists(testing_rsa):
- identity = testing_rsa
- group.add_option('--identity',
- dest='cros_ssh_identity',
- default=identity,
- help='The identity file to use when ssh\'ing into the ChromeOS device')
- parser.add_option_group(group)
-
- # Debugging options
- group = optparse.OptionGroup(parser, 'When things go wrong')
- profiler_choices = profiler_finder.GetAllAvailableProfilers()
- group.add_option(
- '--profiler', default=None, type='choice',
- choices=profiler_choices,
- help='Record profiling data using this tool. Supported values: %s. '
- '(Notice: this flag cannot be used for Timeline Based Measurement '
- 'benchmarks.)' % ', '.join(profiler_choices))
- group.add_option(
- '-v', '--verbose', action='count', dest='verbosity',
- help='Increase verbosity level (repeat as needed)')
- group.add_option('--print-bootstrap-deps',
- action='store_true',
- help='Output bootstrap deps list.')
- parser.add_option_group(group)
-
- # Platform options
- group = optparse.OptionGroup(parser, 'Platform options')
- group.add_option('--no-performance-mode', action='store_true',
- help='Some platforms run on "full performance mode" where the '
- 'test is executed at maximum CPU speed in order to minimize noise '
- '(specially important for dashboards / continuous builds). '
- 'This option prevents Telemetry from tweaking such platform settings.')
- group.add_option('--android-rndis', dest='android_rndis', default=False,
- action='store_true', help='Use RNDIS forwarding on Android.')
- group.add_option('--no-android-rndis', dest='android_rndis',
- action='store_false', help='Do not use RNDIS forwarding on Android.'
- ' [default]')
- group.add_option('--android-blacklist-file',
- help='Device blacklist JSON file.')
- parser.add_option_group(group)
-
- # Browser options.
- self.browser_options.AddCommandLineArgs(parser)
-
- real_parse = parser.parse_args
- def ParseArgs(args=None):
- defaults = parser.get_default_values()
- for k, v in defaults.__dict__.items():
- if k in self.__dict__ and self.__dict__[k] != None:
- continue
- self.__dict__[k] = v
- ret = real_parse(args, self) # pylint: disable=E1121
-
- if self.verbosity >= 2:
- logging.getLogger().setLevel(logging.DEBUG)
- elif self.verbosity:
- logging.getLogger().setLevel(logging.INFO)
- else:
- logging.getLogger().setLevel(logging.WARNING)
-
- if self.device == 'list':
- if binary_manager.NeedsInit():
- binary_manager.InitDependencyManager(None)
- devices = device_finder.GetDevicesMatchingOptions(self)
- print 'Available devices:'
- for device in devices:
- print ' ', device.name
- sys.exit(0)
-
- if self.browser_executable and not self.browser_type:
- self.browser_type = 'exact'
- if self.browser_type == 'list':
- if binary_manager.NeedsInit():
- binary_manager.InitDependencyManager(None)
- devices = device_finder.GetDevicesMatchingOptions(self)
- if not devices:
- sys.exit(0)
- browser_types = {}
- for device in devices:
- try:
- possible_browsers = browser_finder.GetAllAvailableBrowsers(self,
- device)
- browser_types[device.name] = sorted(
- [browser.browser_type for browser in possible_browsers])
- except browser_finder_exceptions.BrowserFinderException as ex:
- print >> sys.stderr, 'ERROR: ', ex
- sys.exit(1)
- print 'Available browsers:'
- if len(browser_types) == 0:
- print ' No devices were found.'
- for device_name in sorted(browser_types.keys()):
- print ' ', device_name
- for browser_type in browser_types[device_name]:
- print ' ', browser_type
- sys.exit(0)
-
- # Parse browser options.
- self.browser_options.UpdateFromParseResults(self)
-
- return ret
- parser.parse_args = ParseArgs
- return parser
-
- def AppendExtraBrowserArgs(self, args):
- self.browser_options.AppendExtraBrowserArgs(args)
-
- def MergeDefaultValues(self, defaults):
- for k, v in defaults.__dict__.items():
- self.ensure_value(k, v)
-
-class BrowserOptions(object):
- """Options to be used for launching a browser."""
- def __init__(self):
- self.browser_type = None
- self.show_stdout = False
-
- # When set to True, the browser will use the default profile. Telemetry
- # will not provide an alternate profile directory.
- self.dont_override_profile = False
- self.profile_dir = None
- self.profile_type = None
- self._extra_browser_args = set()
- self.extra_wpr_args = []
- self.wpr_mode = wpr_modes.WPR_OFF
- self.netsim = None
- self.full_performance_mode = True
-
- # The amount of time Telemetry should wait for the browser to start.
- # This property is not exposed as a command line option.
- self._browser_startup_timeout = 60
-
- self.disable_background_networking = True
- self.no_proxy_server = False
- self.browser_user_agent_type = None
-
- self.clear_sytem_cache_for_browser_and_profile_on_start = False
- self.startup_url = 'about:blank'
-
- # Background pages of built-in component extensions can interfere with
- # performance measurements.
- self.disable_component_extensions_with_background_pages = True
- # Disable default apps.
- self.disable_default_apps = True
-
- self.enable_logging = False
- # The cloud storage bucket & path for uploading logs data produced by the
- # browser to.
- # If logs_cloud_remote_path is None, a random remote path is generated every
- # time the logs data is uploaded.
- self.logs_cloud_bucket = cloud_storage.TELEMETRY_OUTPUT
- self.logs_cloud_remote_path = None
-
- # TODO(danduong): Find a way to store target_os here instead of
- # finder_options.
- self._finder_options = None
-
- # Whether to take screen shot for failed page & put them in telemetry's
- # profiling results.
- self.take_screenshot_for_failed_page = False
-
- def __repr__(self):
- # This works around the infinite loop caused by the introduction of a
- # circular reference with _finder_options.
- obj = self.__dict__.copy()
- del obj['_finder_options']
- return str(sorted(obj.items()))
-
- def IsCrosBrowserOptions(self):
- return False
-
- @classmethod
- def AddCommandLineArgs(cls, parser):
-
- ############################################################################
- # Please do not add any more options here without first discussing with #
- # a telemetry owner. This is not the right place for platform-specific #
- # options. #
- ############################################################################
-
- group = optparse.OptionGroup(parser, 'Browser options')
- profile_choices = profile_types.GetProfileTypes()
- group.add_option('--profile-type',
- dest='profile_type',
- type='choice',
- default='clean',
- choices=profile_choices,
- help=('The user profile to use. A clean profile is used by default. '
- 'Supported values: ' + ', '.join(profile_choices)))
- group.add_option('--profile-dir',
- dest='profile_dir',
- help='Profile directory to launch the browser with. '
- 'A clean profile is used by default')
- group.add_option('--extra-browser-args',
- dest='extra_browser_args_as_string',
- help='Additional arguments to pass to the browser when it starts')
- group.add_option('--extra-wpr-args',
- dest='extra_wpr_args_as_string',
- help=('Additional arguments to pass to Web Page Replay. '
- 'See third_party/webpagereplay/replay.py for usage.'))
- group.add_option('--netsim', default=None, type='choice',
- choices=net_configs.NET_CONFIG_NAMES,
- help=('Run benchmark under simulated network conditions. '
- 'Will prompt for sudo. Supported values: ' +
- ', '.join(net_configs.NET_CONFIG_NAMES)))
- group.add_option('--show-stdout',
- action='store_true',
- help='When possible, will display the stdout of the process')
- group.add_option('--enable-browser-logging',
- dest='enable_logging',
- action='store_true',
- help=('Enable browser logging. The log file is saved in temp directory.'
- "Note that enabling this flag affects the browser's "
- 'performance'))
- parser.add_option_group(group)
-
- group = optparse.OptionGroup(parser, 'Compatibility options')
- group.add_option('--gtest_output',
- help='Ignored argument for compatibility with runtest.py harness')
- parser.add_option_group(group)
-
- def UpdateFromParseResults(self, finder_options):
- """Copies our options from finder_options"""
- browser_options_list = [
- 'extra_browser_args_as_string',
- 'extra_wpr_args_as_string',
- 'enable_logging',
- 'netsim',
- 'profile_dir',
- 'profile_type',
- 'show_stdout',
- ]
- for o in browser_options_list:
- a = getattr(finder_options, o, None)
- if a is not None:
- setattr(self, o, a)
- delattr(finder_options, o)
-
- self.browser_type = finder_options.browser_type
- self._finder_options = finder_options
-
- if hasattr(self, 'extra_browser_args_as_string'):
- tmp = shlex.split(
- self.extra_browser_args_as_string)
- self.AppendExtraBrowserArgs(tmp)
- delattr(self, 'extra_browser_args_as_string')
- if hasattr(self, 'extra_wpr_args_as_string'):
- tmp = shlex.split(
- self.extra_wpr_args_as_string)
- self.extra_wpr_args.extend(tmp)
- delattr(self, 'extra_wpr_args_as_string')
- if self.profile_type == 'default':
- self.dont_override_profile = True
-
- if self.profile_dir and self.profile_type != 'clean':
- logging.critical(
- "It's illegal to specify both --profile-type and --profile-dir.\n"
- "For more information see: http://goo.gl/ngdGD5")
- sys.exit(1)
-
- if self.profile_dir and not os.path.isdir(self.profile_dir):
- logging.critical(
- "Directory specified by --profile-dir (%s) doesn't exist "
- "or isn't a directory.\n"
- "For more information see: http://goo.gl/ngdGD5" % self.profile_dir)
- sys.exit(1)
-
- if not self.profile_dir:
- self.profile_dir = profile_types.GetProfileDir(self.profile_type)
-
- # This deferred import is necessary because browser_options is imported in
- # telemetry/telemetry/__init__.py.
- finder_options.browser_options = CreateChromeBrowserOptions(self)
-
- @property
- def finder_options(self):
- return self._finder_options
-
- @property
- def extra_browser_args(self):
- return self._extra_browser_args
-
- @property
- def browser_startup_timeout(self):
- return self._browser_startup_timeout
-
- @browser_startup_timeout.setter
- def browser_startup_timeout(self, value):
- self._browser_startup_timeout = value
-
- def AppendExtraBrowserArgs(self, args):
- if isinstance(args, list):
- self._extra_browser_args.update(args)
- else:
- self._extra_browser_args.add(args)
-
-
-def CreateChromeBrowserOptions(br_options):
- browser_type = br_options.browser_type
-
- if (platform.GetHostPlatform().GetOSName() == 'chromeos' or
- (browser_type and browser_type.startswith('cros'))):
- return CrosBrowserOptions(br_options)
-
- return br_options
-
-
-class ChromeBrowserOptions(BrowserOptions):
- """Chrome-specific browser options."""
-
- def __init__(self, br_options):
- super(ChromeBrowserOptions, self).__init__()
- # Copy to self.
- self.__dict__.update(br_options.__dict__)
-
-
-class CrosBrowserOptions(ChromeBrowserOptions):
- """ChromeOS-specific browser options."""
-
- def __init__(self, br_options):
- super(CrosBrowserOptions, self).__init__(br_options)
- # Create a browser with oobe property.
- self.create_browser_with_oobe = False
- # Clear enterprise policy before logging in.
- self.clear_enterprise_policy = True
- # Disable GAIA/enterprise services.
- self.disable_gaia_services = True
-
- self.auto_login = True
- self.gaia_login = False
- self.username = 'test@test.test'
- self.password = ''
- self.gaia_id = '12345'
-
- def IsCrosBrowserOptions(self):
- return True

Powered by Google App Engine
This is Rietveld 408576698