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

Unified Diff: tools/bisect-perf-regression.py

Issue 16132012: First pass android support in bisect script. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 6 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
« no previous file with comments | « no previous file | tools/bisect_android_envsetup_helper.sh » ('j') | tools/bisect_utils.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/bisect-perf-regression.py
diff --git a/tools/bisect-perf-regression.py b/tools/bisect-perf-regression.py
index 83a75d0a1c01a9274e5aed3bb8e771bb4ca5b90c..7564bc8ee74cb10e90edc842432baac2e1381686 100755
--- a/tools/bisect-perf-regression.py
+++ b/tools/bisect-perf-regression.py
@@ -362,6 +362,52 @@ class DesktopBuilder(Builder):
return build_success
+class AndroidBuilder(Builder):
+ """AndroidBuilder is used to build on android."""
+ def InstallAPK(self, opts):
+ """Installs apk to device.
+
+ Args:
+ opts: The options parsed from the command line.
+
+ Returns:
+ True if successful.
+ """
+ path_to_tool = os.path.join('build', 'android', 'adb_install_apk.py')
+ cmd = [path_to_tool, '--apk', 'ContentShell.apk', '--apk_package',
+ 'org.chromium.content_shell_apk', '--release']
+ (_, return_code) = RunProcess(cmd, opts.output_buildbot_annotations)
+ return not return_code
+
+ def Build(self, depot, opts):
+ """Builds the android content shell and other necessary tools using options
+ passed into the script.
+
+ Args:
+ depot: Current depot being bisected.
+ opts: The options parsed from the command line.
+
+ Returns:
+ True if build was successful.
+ """
+ targets = ['content_shell_apk', 'forwarder2', 'md5sum']
+ threads = 16
+ if opts.use_goma:
+ threads = 64
+
+ build_success = False
+ if opts.build_preference == 'ninja':
+ build_success = BuildWithNinja(threads, targets,
+ opts.output_buildbot_annotations)
+ else:
+ assert False, 'No build system defined.'
+
+ if build_success:
+ build_success = self.InstallAPK(opts)
+
+ return build_success
+
+
class CrosBuilder(Builder):
"""CrosBuilder is used to build and image ChromeOS/Chromium when cros is the
target platform."""
@@ -728,6 +774,8 @@ class BisectPerformanceMetrics(object):
if opts.target_platform == 'cros':
self.builder = CrosBuilder()
+ elif opts.target_platform == 'android':
+ self.builder = AndroidBuilder()
else:
self.builder = DesktopBuilder()
@@ -1297,7 +1345,7 @@ class BisectPerformanceMetrics(object):
return depot_revision_list
- def GatherReferenceValues(self, good_rev, bad_rev, cmd, metric):
+ def GatherReferenceValues(self, good_rev, bad_rev, cmd, metric, tgt_depot):
tonyg 2013/06/07 21:02:26 The style guide frowns on abbreviations like this.
shatch 2013/06/07 21:57:39 Done.
"""Gathers reference values by running the performance tests on the
known good and bad revisions.
@@ -1312,7 +1360,7 @@ class BisectPerformanceMetrics(object):
A tuple with the results of building and running each revision.
"""
bad_run_results = self.SyncBuildAndRunRevision(bad_rev,
- self.opts.target_platform,
+ tgt_depot,
cmd,
metric)
@@ -1320,7 +1368,7 @@ class BisectPerformanceMetrics(object):
if not bad_run_results[1]:
good_run_results = self.SyncBuildAndRunRevision(good_rev,
- self.opts.target_platform,
+ tgt_depot,
cmd,
metric)
@@ -1536,7 +1584,8 @@ class BisectPerformanceMetrics(object):
(bad_results, good_results) = self.GatherReferenceValues(good_revision,
bad_revision,
command_to_run,
- metric)
+ metric,
+ target_depot)
if self.opts.output_buildbot_annotations:
bisect_utils.OutputAnnotationStepClosed()
@@ -2076,11 +2125,12 @@ def main():
'are msvs/ninja.')
parser.add_option('--target_platform',
type='choice',
- choices=['chromium', 'cros'],
+ choices=['chromium', 'cros', 'android'],
default='chromium',
- help='The target platform. Choices are "default" (current '
- 'platform, or "cros". If choosing "cros", you '
- 'must be properly set up to build.')
+ help='The target platform. Choices are "chromium" (current '
+ 'platform, "cros", or "android". If you specify something '
tonyg 2013/06/07 21:02:26 I think there should be a ) after platform
shatch 2013/06/07 21:57:39 Done.
+ 'other than "chromium", you must be properly set up to '
+ 'build that platform.')
parser.add_option('--cros_board',
type='str',
help='The cros board type to build.')
@@ -2157,6 +2207,8 @@ def main():
opts.truncate_percent = min(max(opts.truncate_percent, 0), 25)
opts.truncate_percent = opts.truncate_percent / 100.0
+ path_to_file = os.path.abspath(os.path.dirname(sys.argv[0]))
+
metric_values = opts.metric.split('/')
if len(metric_values) != 2:
print "Invalid metric specified: [%s]" % (opts.metric,)
@@ -2167,11 +2219,10 @@ def main():
if bisect_utils.CreateBisectDirectoryAndSetupDepot(opts):
return 1
- if opts.target_platform == 'cros':
- if not bisect_utils.SetupCrosRepo():
- print 'Error: Failed to grab cros source.'
- print
- return 1
+ if not bisect_utils.SetupPlatformBuildEnvironment(opts, path_to_file):
+ print 'Error: Failed to set platform environment.'
+ print
+ return 1
os.chdir(os.path.join(os.getcwd(), 'src'))
« no previous file with comments | « no previous file | tools/bisect_android_envsetup_helper.sh » ('j') | tools/bisect_utils.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698