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

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

Issue 22825016: Archive webkit_tests results on android bots if requested. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: actually fix typo and remove unnecessary bb_utils. qualifier Created 7 years, 3 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/buildbot/bb_utils.py » ('j') | build/android/buildbot/bb_utils.py » ('J')
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 hashlib 8 import hashlib
9 import multiprocessing 9 import multiprocessing
10 import os 10 import os
11 import random 11 import random
12 import shutil 12 import shutil
13 import sys 13 import sys
14 14
15 import bb_utils 15 import bb_utils
16 import bb_annotations 16 import bb_annotations
17 17
18 sys.path.append(os.path.join(os.path.dirname(__file__), '..')) 18 sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
19 import provision_devices 19 import provision_devices
20 from pylib import android_commands 20 from pylib import android_commands
21 from pylib import constants 21 from pylib import constants
22 from pylib.gtest import gtest_config 22 from pylib.gtest import gtest_config
23 23
24 CHROME_SRC_DIR = bb_utils.CHROME_SRC
25 CHROME_OUT_DIR = bb_utils.CHROME_OUT_DIR
24 sys.path.append(os.path.join( 26 sys.path.append(os.path.join(
25 constants.DIR_SOURCE_ROOT, 'third_party', 'android_testrunner')) 27 CHROME_SRC_DIR, 'third_party', 'android_testrunner'))
26 import errors 28 import errors
27 29
28 30
29 CHROME_SRC = constants.DIR_SOURCE_ROOT 31 SLAVE_SCRIPTS_DIR = os.path.join(bb_utils.BB_BUILD_DIR, 'scripts', 'slave')
30 LOGCAT_DIR = os.path.join(CHROME_SRC, 'out', 'logcat') 32 LOGCAT_DIR = os.path.join(bb_utils.CHROME_OUT_DIR, 'logcat')
31 33
32 # Describes an instrumation test suite: 34 # Describes an instrumation test suite:
33 # test: Name of test we're running. 35 # test: Name of test we're running.
34 # apk: apk to be installed. 36 # apk: apk to be installed.
35 # apk_package: package for the apk to be installed. 37 # apk_package: package for the apk to be installed.
36 # test_apk: apk to run tests on. 38 # test_apk: apk to run tests on.
37 # test_data: data folder in format destination:source. 39 # test_data: data folder in format destination:source.
38 # host_driven_root: The host-driven test root directory. 40 # host_driven_root: The host-driven test root directory.
39 # annotation: Annotation of the tests to include. 41 # annotation: Annotation of the tests to include.
40 # exclude_annotation: The annotation of the tests to exclude. 42 # exclude_annotation: The annotation of the tests to exclude.
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 """Run layout tests on an actual device.""" 215 """Run layout tests on an actual device."""
214 bb_annotations.PrintNamedStep('webkit_tests') 216 bb_annotations.PrintNamedStep('webkit_tests')
215 cmd_args = [ 217 cmd_args = [
216 '--no-show-results', 218 '--no-show-results',
217 '--no-new-test-results', 219 '--no-new-test-results',
218 '--full-results-html', 220 '--full-results-html',
219 '--clobber-old-results', 221 '--clobber-old-results',
220 '--exit-after-n-failures', '5000', 222 '--exit-after-n-failures', '5000',
221 '--exit-after-n-crashes-or-timeouts', '100', 223 '--exit-after-n-crashes-or-timeouts', '100',
222 '--debug-rwt-logging', 224 '--debug-rwt-logging',
223 '--results-directory', '..layout-test-results', 225 '--results-directory', '../layout-test-results',
Dirk Pranke 2013/08/28 19:49:29 Looks like this was a typo introduced in https:/
Isaac (away) 2013/08/28 20:03:50 :-) == imsrry
224 '--target', options.target, 226 '--target', options.target,
225 '--builder-name', options.build_properties.get('buildername', ''), 227 '--builder-name', options.build_properties.get('buildername', ''),
226 '--build-number', str(options.build_properties.get('buildnumber', '')), 228 '--build-number', str(options.build_properties.get('buildnumber', '')),
227 '--master-name', options.build_properties.get('mastername', ''), 229 '--master-name', options.build_properties.get('mastername', ''),
228 '--build-name', options.build_properties.get('buildername', ''), 230 '--build-name', options.build_properties.get('buildername', ''),
229 '--platform=android'] 231 '--platform=android']
230 232
231 for flag in 'test_results_server', 'driver_name', 'additional_drt_flag': 233 for flag in 'test_results_server', 'driver_name', 'additional_drt_flag':
232 if flag in options.factory_properties: 234 if flag in options.factory_properties:
233 cmd_args.extend(['--%s' % flag.replace('_', '-'), 235 cmd_args.extend(['--%s' % flag.replace('_', '-'),
234 options.factory_properties.get(flag)]) 236 options.factory_properties.get(flag)])
235 237
236 for f in options.factory_properties.get('additional_expectations', []): 238 for f in options.factory_properties.get('additional_expectations', []):
237 cmd_args.extend( 239 cmd_args.extend(
238 ['--additional-expectations=%s' % os.path.join(CHROME_SRC, *f)]) 240 ['--additional-expectations=%s' % os.path.join(CHROME_SRC_DIR, *f)])
239 241
240 # TODO(dpranke): Remove this block after 242 # TODO(dpranke): Remove this block after
241 # https://codereview.chromium.org/12927002/ lands. 243 # https://codereview.chromium.org/12927002/ lands.
242 for f in options.factory_properties.get('additional_expectations_files', []): 244 for f in options.factory_properties.get('additional_expectations_files', []):
243 cmd_args.extend( 245 cmd_args.extend(
244 ['--additional-expectations=%s' % os.path.join(CHROME_SRC, *f)]) 246 ['--additional-expectations=%s' % os.path.join(CHROME_SRC_DIR, *f)])
245 247
246 RunCmd(['webkit/tools/layout_tests/run_webkit_tests.py'] + cmd_args) 248 RunCmd(['webkit/tools/layout_tests/run_webkit_tests.py'] + cmd_args)
247 249
250 if options.factory_properties.get('archive_webkit_results', False):
251 bb_annotations.PrintNamedStep('archive_webkit_results')
252 RunCmd([os.path.join(SLAVE_SCRIPTS_DIR, 'archive_layout_test_results.py'),
253 '--results-dir', '../layout-test-results',
254 '--target', options.target,
255 '--build-dir', CHROME_OUT_DIR,
256 '--build-number', str(options.build_properties.get('buildnumber', '')),
257 '--builder-name', options.build_properties.get('buildername', '')])
258
248 259
249 def SpawnLogcatMonitor(): 260 def SpawnLogcatMonitor():
250 shutil.rmtree(LOGCAT_DIR, ignore_errors=True) 261 shutil.rmtree(LOGCAT_DIR, ignore_errors=True)
251 bb_utils.SpawnCmd([ 262 bb_utils.SpawnCmd([
252 os.path.join(CHROME_SRC, 'build', 'android', 'adb_logcat_monitor.py'), 263 os.path.join(CHROME_SRC_DIR, 'build', 'android', 'adb_logcat_monitor.py'),
253 LOGCAT_DIR]) 264 LOGCAT_DIR])
254 265
255 # Wait for logcat_monitor to pull existing logcat 266 # Wait for logcat_monitor to pull existing logcat
256 RunCmd(['sleep', '5']) 267 RunCmd(['sleep', '5'])
257 268
258 def ProvisionDevices(options): 269 def ProvisionDevices(options):
259 bb_annotations.PrintNamedStep('provision_devices') 270 bb_annotations.PrintNamedStep('provision_devices')
260 271
261 if not bb_utils.TESTING: 272 if not bb_utils.TESTING:
262 # Restart adb to work around bugs, sleep to wait for usb discovery. 273 # Restart adb to work around bugs, sleep to wait for usb discovery.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 'https://storage.googleapis.com/%s/index.html' % gs_path) 352 'https://storage.googleapis.com/%s/index.html' % gs_path)
342 353
343 354
344 def GenerateJavaCoverageReport(options): 355 def GenerateJavaCoverageReport(options):
345 """Generates an HTML coverage report using EMMA and uploads it.""" 356 """Generates an HTML coverage report using EMMA and uploads it."""
346 bb_annotations.PrintNamedStep('java_coverage_report') 357 bb_annotations.PrintNamedStep('java_coverage_report')
347 358
348 coverage_html = os.path.join(options.coverage_dir, 'coverage_html') 359 coverage_html = os.path.join(options.coverage_dir, 'coverage_html')
349 RunCmd(['build/android/generate_emma_html.py', 360 RunCmd(['build/android/generate_emma_html.py',
350 '--coverage-dir', options.coverage_dir, 361 '--coverage-dir', options.coverage_dir,
351 '--metadata-dir', os.path.join(CHROME_SRC, 'out', options.target), 362 '--metadata-dir', os.path.join(CHROME_OUT_DIR, options.target),
352 '--cleanup', 363 '--cleanup',
353 '--output', os.path.join(coverage_html, 'index.html')]) 364 '--output', os.path.join(coverage_html, 'index.html')])
354 UploadCoverageData(options, coverage_html, 'java') 365 UploadCoverageData(options, coverage_html, 'java')
355 366
356 367
357 def LogcatDump(options): 368 def LogcatDump(options):
358 # Print logcat, kill logcat monitor 369 # Print logcat, kill logcat monitor
359 bb_annotations.PrintNamedStep('logcat_dump') 370 bb_annotations.PrintNamedStep('logcat_dump')
360 logcat_file = os.path.join(CHROME_SRC, 'out', options.target, 'full_log') 371 logcat_file = os.path.join(CHROME_OUT_DIR, options.target, 'full_log')
361 with open(logcat_file, 'w') as f: 372 with open(logcat_file, 'w') as f:
362 RunCmd([ 373 RunCmd([
363 os.path.join(CHROME_SRC, 'build', 'android', 'adb_logcat_printer.py'), 374 os.path.join(CHROME_SRC_DIR, 'build', 'android',
375 'adb_logcat_printer.py'),
364 LOGCAT_DIR], stdout=f) 376 LOGCAT_DIR], stdout=f)
365 RunCmd(['cat', logcat_file]) 377 RunCmd(['cat', logcat_file])
366 378
367 379
368 def GenerateTestReport(options): 380 def GenerateTestReport(options):
369 bb_annotations.PrintNamedStep('test_report') 381 bb_annotations.PrintNamedStep('test_report')
370 for report in glob.glob( 382 for report in glob.glob(
371 os.path.join(CHROME_SRC, 'out', options.target, 'test_logs', '*.log')): 383 os.path.join(CHROME_OUT_DIR, options.target, 'test_logs', '*.log')):
372 RunCmd(['cat', report]) 384 RunCmd(['cat', report])
373 os.remove(report) 385 os.remove(report)
374 386
375 387
376 def MainTestWrapper(options): 388 def MainTestWrapper(options):
377 try: 389 try:
378 # Spawn logcat monitor 390 # Spawn logcat monitor
379 SpawnLogcatMonitor() 391 SpawnLogcatMonitor()
380 392
381 # Run all device setup steps 393 # Run all device setup steps
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 if args: 453 if args:
442 return sys.exit('Unused args %s' % args) 454 return sys.exit('Unused args %s' % args)
443 455
444 unknown_tests = set(options.test_filter) - VALID_TESTS 456 unknown_tests = set(options.test_filter) - VALID_TESTS
445 if unknown_tests: 457 if unknown_tests:
446 return sys.exit('Unknown tests %s' % list(unknown_tests)) 458 return sys.exit('Unknown tests %s' % list(unknown_tests))
447 459
448 setattr(options, 'target', options.factory_properties.get('target', 'Debug')) 460 setattr(options, 'target', options.factory_properties.get('target', 'Debug'))
449 if options.coverage_bucket: 461 if options.coverage_bucket:
450 setattr(options, 'coverage_dir', 462 setattr(options, 'coverage_dir',
451 os.path.join(CHROME_SRC, 'out', options.target, 'coverage')) 463 os.path.join(CHROME_OUT_DIR, options.target, 'coverage'))
452 464
453 MainTestWrapper(options) 465 MainTestWrapper(options)
454 466
455 467
456 if __name__ == '__main__': 468 if __name__ == '__main__':
457 sys.exit(main(sys.argv)) 469 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | build/android/buildbot/bb_utils.py » ('j') | build/android/buildbot/bb_utils.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698