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

Side by Side Diff: build/android/buildbot/bb_tests.py

Issue 11817033: Move android buildbot steps into buildbot dir (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | build/android/device_status_check.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import collections 6 import collections
7 import glob 7 import glob
8 import json 8 import json
9 import optparse 9 import optparse
10 import os 10 import os
11 import pipes 11 import pipes
12 import shutil 12 import shutil
13 import subprocess 13 import subprocess
14 import sys 14 import sys
15 15
16 sys.path.append(os.path.join(os.path.dirname(__file__), '..')) 16 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
17 from pylib import buildbot_report 17 from pylib import buildbot_report
18 from pylib import constants 18 from pylib import constants
19 from pylib.gtest import gtest_config
19 20
20 21
21 TESTING = 'BUILDBOT_TESTING' in os.environ 22 TESTING = 'BUILDBOT_TESTING' in os.environ
22 23
23 CHROME_SRC = constants.CHROME_DIR 24 CHROME_SRC = constants.CHROME_DIR
24 25
25 # Describes an instrumation test suite: 26 # Describes an instrumation test suite:
26 # test: Name of test we're running. 27 # test: Name of test we're running.
27 # apk: apk to be installed. 28 # apk: apk to be installed.
28 # apk_package: package for the apk to be installed. 29 # apk_package: package for the apk to be installed.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 print '<', ' '.join(map(pipes.quote, command)) 76 print '<', ' '.join(map(pipes.quote, command))
76 if code != 0: 77 if code != 0:
77 print 'ERROR: non-zero status %d from %s' % (code, command) 78 print 'ERROR: non-zero status %d from %s' % (code, command)
78 if flunk_on_failure: 79 if flunk_on_failure:
79 buildbot_report.PrintError() 80 buildbot_report.PrintError()
80 else: 81 else:
81 buildbot_report.PrintWarning() 82 buildbot_report.PrintWarning()
82 return code 83 return code
83 84
84 85
85 def RunTestSuites(options, suite): 86 def RunTestSuites(options, suites):
86 """Manages an invocation of run_tests.py. 87 """Manages an invocation of run_tests.py.
87 88
88 Args: 89 Args:
89 options: options object. 90 options: options object.
90 suite: The suite to pass to run_tests or None to run default suites. 91 suites: List of suites to run.
91 """ 92 """
92 args = ['--verbose'] 93 args = ['--verbose']
93 if suite:
94 args.extend(['-s', suite])
95 if options.target == 'Release': 94 if options.target == 'Release':
96 args.append('--release') 95 args.append('--release')
97 if options.asan: 96 if options.asan:
98 args.append('--tool=asan') 97 args.append('--tool=asan')
99 RunCmd(['build/android/run_tests.py'] + args) 98 for suite in suites:
99 buildbot_report.PrintNamedStep(suite)
100 RunCmd(['build/android/run_tests.py', '-s', suite] + args)
100 101
101 102
102 def InstallApk(options, test, print_step=False): 103 def InstallApk(options, test, print_step=False):
103 """Install an apk to all phones. 104 """Install an apk to all phones.
104 105
105 Args: 106 Args:
106 options: options object 107 options: options object
107 test: An I_TEST namedtuple 108 test: An I_TEST namedtuple
108 print_step: Print a buildbot step 109 print_step: Print a buildbot step
109 """ 110 """
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 '--build-number', options.build_properties.get('buildnumber', ''), 163 '--build-number', options.build_properties.get('buildnumber', ''),
163 '--master-name', options.build_properties.get('mastername', ''), 164 '--master-name', options.build_properties.get('mastername', ''),
164 '--build-name', options.build_properties.get('buildername', ''), 165 '--build-name', options.build_properties.get('buildername', ''),
165 '--platform=chromium-android', 166 '--platform=chromium-android',
166 '--test-results-server', 167 '--test-results-server',
167 options.factory_properties.get('test_results_server', '')]) 168 options.factory_properties.get('test_results_server', '')])
168 169
169 170
170 def MainTestWrapper(options): 171 def MainTestWrapper(options):
171 # Device check and alert emails 172 # Device check and alert emails
173 buildbot_report.PrintNamedStep('device_status_check')
172 RunCmd(['build/android/device_status_check.py'], flunk_on_failure=False) 174 RunCmd(['build/android/device_status_check.py'], flunk_on_failure=False)
173 175
174 if options.install: 176 if options.install:
175 test_obj = INSTRUMENTATION_TESTS[options.install] 177 test_obj = INSTRUMENTATION_TESTS[options.install]
176 InstallApk(options, test_obj, print_step=True) 178 InstallApk(options, test_obj, print_step=True)
177 179
178 if not options.test_filter: 180 if not options.test_filter:
179 return 181 return
180 182
181 # Spawn logcat monitor 183 # Spawn logcat monitor
182 logcat_dir = os.path.join(CHROME_SRC, 'out/logcat') 184 logcat_dir = os.path.join(CHROME_SRC, 'out/logcat')
183 shutil.rmtree(logcat_dir, ignore_errors=True) 185 shutil.rmtree(logcat_dir, ignore_errors=True)
184 SpawnCmd(['build/android/adb_logcat_monitor.py', logcat_dir]) 186 SpawnCmd(['build/android/adb_logcat_monitor.py', logcat_dir])
185 187
186 if 'unit' in options.test_filter: 188 if 'unit' in options.test_filter:
187 RunTestSuites(options, None) 189 RunTestSuites(options, gtest_config.STABLE_TEST_SUITES)
188 if 'ui' in options.test_filter: 190 if 'ui' in options.test_filter:
189 for test in INSTRUMENTATION_TESTS.itervalues(): 191 for test in INSTRUMENTATION_TESTS.itervalues():
190 RunInstrumentationSuite(options, test) 192 RunInstrumentationSuite(options, test)
191 if 'webkit' in options.test_filter: 193 if 'webkit' in options.test_filter:
192 RunTestSuites(options, 'webkit_unit_tests') 194 RunTestSuites(options, ['webkit_unit_tests', 'TestWebKitAPI'])
193 RunTestSuites(options, 'TestWebKitAPI')
194 RunWebkitLint(options.target) 195 RunWebkitLint(options.target)
195 if 'webkit_layout' in options.test_filter: 196 if 'webkit_layout' in options.test_filter:
196 RunWebkitLayoutTests(options) 197 RunWebkitLayoutTests(options)
197 198
198 if options.experimental: 199 if options.experimental:
199 RunTestSuites(options, 'sandbox_linux_unittests') 200 RunTestSuites(options, gtest_config.EXPERIMENTAL_TEST_SUITES)
200 201
201 # Print logcat, kill logcat monitor 202 # Print logcat, kill logcat monitor
202 buildbot_report.PrintNamedStep('Logcat dump') 203 buildbot_report.PrintNamedStep('logcat_dump')
203 RunCmd(['build/android/adb_logcat_printer.py', logcat_dir]) 204 RunCmd(['build/android/adb_logcat_printer.py', logcat_dir])
204 205
205 buildbot_report.PrintNamedStep('Test report') 206 buildbot_report.PrintNamedStep('test_report')
206 for report in glob.glob( 207 for report in glob.glob(
207 os.path.join(CHROME_SRC, 'out', options.target, 'test_logs', '*.log')): 208 os.path.join(CHROME_SRC, 'out', options.target, 'test_logs', '*.log')):
208 subprocess.Popen(['cat', report]).wait() 209 subprocess.Popen(['cat', report]).wait()
209 os.remove(report) 210 os.remove(report)
210 211
211 212
212 def main(argv): 213 def main(argv):
213 parser = optparse.OptionParser() 214 parser = optparse.OptionParser()
214 215
215 def convert_json(option, _, value, parser): 216 def convert_json(option, _, value, parser):
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 if unknown_tests: 249 if unknown_tests:
249 return ParserError('Unknown tests %s' % list(unknown_tests)) 250 return ParserError('Unknown tests %s' % list(unknown_tests))
250 251
251 setattr(options, 'target', options.factory_properties.get('target', 'Debug')) 252 setattr(options, 'target', options.factory_properties.get('target', 'Debug'))
252 253
253 MainTestWrapper(options) 254 MainTestWrapper(options)
254 255
255 256
256 if __name__ == '__main__': 257 if __name__ == '__main__':
257 sys.exit(main(sys.argv)) 258 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | build/android/device_status_check.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698