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

Unified Diff: tools/telemetry/telemetry/page/profile_generator.py

Issue 1005203002: Telemetry: Move ProfileCreator to tools/perf/profile_creator. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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: tools/telemetry/telemetry/page/profile_generator.py
diff --git a/tools/telemetry/telemetry/page/profile_generator.py b/tools/telemetry/telemetry/page/profile_generator.py
deleted file mode 100644
index 4d7bf7d75d2cf385c747a59309e3c57ec7eb71ea..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/page/profile_generator.py
+++ /dev/null
@@ -1,147 +0,0 @@
-# Copyright 2014 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.
-
-"""Handles generating profiles and transferring them to/from mobile devices."""
-
-import logging
-import optparse
-import os
-import shutil
-import stat
-import sys
-import tempfile
-
-from telemetry import benchmark
-from telemetry.core import browser_options
-from telemetry.core import discover
-from telemetry.core import util
-from telemetry.page import profile_creator
-from telemetry.page import test_expectations
-from telemetry.results import results_options
-from telemetry.user_story import user_story_runner
-
-
-def _DiscoverProfileCreatorClasses():
- profile_creators_dir = os.path.abspath(os.path.join(util.GetBaseDir(),
- os.pardir, 'perf', 'profile_creators'))
- base_dir = os.path.abspath(os.path.join(profile_creators_dir, os.pardir))
-
- profile_creators_unfiltered = discover.DiscoverClasses(
- profile_creators_dir, base_dir, profile_creator.ProfileCreator)
-
- # Remove '_creator' suffix from keys.
- profile_creators = {}
- for test_name, test_class in profile_creators_unfiltered.iteritems():
- assert test_name.endswith('_creator')
- test_name = test_name[:-len('_creator')]
- profile_creators[test_name] = test_class
- return profile_creators
-
-
-def _IsPseudoFile(directory, paths):
- """Filter function for shutil.copytree() to reject socket files and symlinks
- since those can't be copied around on bots."""
- def IsSocket(full_path):
- """Check if a file at a given path is a socket."""
- try:
- if stat.S_ISSOCK(os.stat(full_path).st_mode):
- return True
- except OSError:
- # Thrown if we encounter a broken symlink.
- pass
- return False
-
- ignore_list = []
- for path in paths:
- full_path = os.path.join(directory, path)
-
- if os.path.isdir(full_path):
- continue
- if not IsSocket(full_path) and not os.path.islink(full_path):
- continue
-
- logging.warning('Ignoring pseudo file: %s' % full_path)
- ignore_list.append(path)
-
- return ignore_list
-
-
-def GenerateProfiles(profile_creator_class, profile_creator_name, options):
- """Generate a profile"""
-
- temp_output_directory = tempfile.mkdtemp()
- options.output_profile_path = temp_output_directory
-
- profile_creator_instance = profile_creator_class()
- try:
- profile_creator_instance.Run(options)
- except Exception as e:
- logging.exception('Profile creation failed.')
- shutil.rmtree(temp_output_directory)
- raise e
-
- # Everything is a-ok, move results to final destination.
- generated_profiles_dir = os.path.abspath(options.output_dir)
- if not os.path.exists(generated_profiles_dir):
- os.makedirs(generated_profiles_dir)
- out_path = os.path.join(generated_profiles_dir, profile_creator_name)
- if os.path.exists(out_path):
- shutil.rmtree(out_path)
-
- shutil.copytree(temp_output_directory, out_path, ignore=_IsPseudoFile)
- shutil.rmtree(temp_output_directory)
- sys.stderr.write("SUCCESS: Generated profile copied to: '%s'.\n" % out_path)
-
- return 0
-
-
-def AddCommandLineArgs(parser):
- user_story_runner.AddCommandLineArgs(parser)
-
- profile_creators = _DiscoverProfileCreatorClasses().keys()
- legal_profile_creators = '|'.join(profile_creators)
- group = optparse.OptionGroup(parser, 'Profile generation options')
- group.add_option('--profile-type-to-generate',
- dest='profile_type_to_generate',
- default=None,
- help='Type of profile to generate. '
- 'Supported values: %s' % legal_profile_creators)
- parser.add_option_group(group)
-
-
-def ProcessCommandLineArgs(parser, args):
- user_story_runner.ProcessCommandLineArgs(parser, args)
-
- if not args.profile_type_to_generate:
- parser.error("Must specify --profile-type-to-generate option.")
-
- profile_creators = _DiscoverProfileCreatorClasses().keys()
- if args.profile_type_to_generate not in profile_creators:
- legal_profile_creators = '|'.join(profile_creators)
- parser.error("Invalid profile type, legal values are: %s." %
- legal_profile_creators)
-
- if not args.browser_type:
- parser.error("Must specify --browser option.")
-
- if not args.output_dir:
- parser.error("Must specify --output-dir option.")
-
- if args.browser_options.dont_override_profile:
- parser.error("Can't use existing profile when generating profile.")
-
-
-def Main():
- options = browser_options.BrowserFinderOptions()
- parser = options.CreateParser(
- "%%prog <--profile-type-to-generate=...> <--browser=...> <--output-dir>")
- AddCommandLineArgs(parser)
- _, _ = parser.parse_args()
- ProcessCommandLineArgs(parser, options)
-
- # Generate profile.
- profile_creators = _DiscoverProfileCreatorClasses()
- profile_creator_class = profile_creators[options.profile_type_to_generate]
- return GenerateProfiles(profile_creator_class,
- options.profile_type_to_generate, options)
« no previous file with comments | « tools/telemetry/telemetry/page/profile_creator.py ('k') | tools/telemetry/telemetry/page/profile_generator_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698