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

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

Issue 149503002: Enable stack tool and ASan symbolization of logcat on Android bots. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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_run_bot.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 hashlib 8 import hashlib
9 import json 9 import json
10 import multiprocessing 10 import multiprocessing
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 523
524 def LogcatDump(options): 524 def LogcatDump(options):
525 # Print logcat, kill logcat monitor 525 # Print logcat, kill logcat monitor
526 bb_annotations.PrintNamedStep('logcat_dump') 526 bb_annotations.PrintNamedStep('logcat_dump')
527 logcat_file = os.path.join(CHROME_OUT_DIR, options.target, 'full_log') 527 logcat_file = os.path.join(CHROME_OUT_DIR, options.target, 'full_log')
528 RunCmd([SrcPath('build' , 'android', 'adb_logcat_printer.py'), 528 RunCmd([SrcPath('build' , 'android', 'adb_logcat_printer.py'),
529 '--output-path', logcat_file, LOGCAT_DIR]) 529 '--output-path', logcat_file, LOGCAT_DIR])
530 RunCmd(['cat', logcat_file]) 530 RunCmd(['cat', logcat_file])
531 531
532 532
533 def RunStackToolSteps(options):
534 """Run stack tool steps.
535
536 Stack tool is run for logcat dump, optionally for ASAN.
537 """
538 bb_annotations.PrintNamedStep('Run stack tool with logcat dump')
539 logcat_file = os.path.join(CHROME_OUT_DIR, options.target, 'full_log')
540 RunCmd([os.path.join(CHROME_SRC_DIR, 'third_party', 'android_platform',
541 'development', 'scripts', 'stack'),
542 '--more-info', logcat_file])
543 if options.asan_symbolize:
544 bb_annotations.PrintNamedStep('Run stack tool for ASAN')
545 RunCmd([
546 os.path.join(CHROME_SRC_DIR, 'build', 'android', 'asan_symbolize.py'),
547 '-l', logcat_file])
548
549
533 def GenerateTestReport(options): 550 def GenerateTestReport(options):
534 bb_annotations.PrintNamedStep('test_report') 551 bb_annotations.PrintNamedStep('test_report')
535 for report in glob.glob( 552 for report in glob.glob(
536 os.path.join(CHROME_OUT_DIR, options.target, 'test_logs', '*.log')): 553 os.path.join(CHROME_OUT_DIR, options.target, 'test_logs', '*.log')):
537 RunCmd(['cat', report]) 554 RunCmd(['cat', report])
538 os.remove(report) 555 os.remove(report)
539 556
540 557
541 def MainTestWrapper(options): 558 def MainTestWrapper(options):
542 try: 559 try:
(...skipping 16 matching lines...) Expand all
559 UploadHTML(options, '%s/java' % options.coverage_bucket, coverage_html, 576 UploadHTML(options, '%s/java' % options.coverage_bucket, coverage_html,
560 'Coverage Report') 577 'Coverage Report')
561 shutil.rmtree(coverage_html, ignore_errors=True) 578 shutil.rmtree(coverage_html, ignore_errors=True)
562 579
563 if options.experimental: 580 if options.experimental:
564 RunTestSuites(options, gtest_config.EXPERIMENTAL_TEST_SUITES) 581 RunTestSuites(options, gtest_config.EXPERIMENTAL_TEST_SUITES)
565 582
566 finally: 583 finally:
567 # Run all post test steps 584 # Run all post test steps
568 LogcatDump(options) 585 LogcatDump(options)
586 if not options.disable_stack_tool:
587 RunStackToolSteps(options)
569 GenerateTestReport(options) 588 GenerateTestReport(options)
570 # KillHostHeartbeat() has logic to check if heartbeat process is running, 589 # KillHostHeartbeat() has logic to check if heartbeat process is running,
571 # and kills only if it finds the process is running on the host. 590 # and kills only if it finds the process is running on the host.
572 provision_devices.KillHostHeartbeat() 591 provision_devices.KillHostHeartbeat()
573 592
574 593
575 def GetDeviceStepsOptParser(): 594 def GetDeviceStepsOptParser():
576 parser = bb_utils.GetParser() 595 parser = bb_utils.GetParser()
577 parser.add_option('--experimental', action='store_true', 596 parser.add_option('--experimental', action='store_true',
578 help='Run experiemental tests') 597 help='Run experiemental tests')
(...skipping 16 matching lines...) Expand all
595 parser.add_option( 614 parser.add_option(
596 '--flakiness-server', 615 '--flakiness-server',
597 help=('The flakiness dashboard server to which the results should be ' 616 help=('The flakiness dashboard server to which the results should be '
598 'uploaded.')) 617 'uploaded.'))
599 parser.add_option( 618 parser.add_option(
600 '--auto-reconnect', action='store_true', 619 '--auto-reconnect', action='store_true',
601 help='Push script to device which restarts adbd on disconnections.') 620 help='Push script to device which restarts adbd on disconnections.')
602 parser.add_option( 621 parser.add_option(
603 '--logcat-dump-output', 622 '--logcat-dump-output',
604 help='The logcat dump output will be "tee"-ed into this file') 623 help='The logcat dump output will be "tee"-ed into this file')
605 624 parser.add_option('--disable-stack-tool', action='store_true',
625 help='Do not run stack tool.')
626 parser.add_option('--asan-symbolize', action='store_true',
627 help='Run stack tool for ASAN')
606 return parser 628 return parser
607 629
608 630
609 def main(argv): 631 def main(argv):
610 parser = GetDeviceStepsOptParser() 632 parser = GetDeviceStepsOptParser()
611 options, args = parser.parse_args(argv[1:]) 633 options, args = parser.parse_args(argv[1:])
612 634
613 if args: 635 if args:
614 return sys.exit('Unused args %s' % args) 636 return sys.exit('Unused args %s' % args)
615 637
616 unknown_tests = set(options.test_filter) - VALID_TESTS 638 unknown_tests = set(options.test_filter) - VALID_TESTS
617 if unknown_tests: 639 if unknown_tests:
618 return sys.exit('Unknown tests %s' % list(unknown_tests)) 640 return sys.exit('Unknown tests %s' % list(unknown_tests))
619 641
620 setattr(options, 'target', options.factory_properties.get('target', 'Debug')) 642 setattr(options, 'target', options.factory_properties.get('target', 'Debug'))
621 if options.coverage_bucket: 643 if options.coverage_bucket:
622 setattr(options, 'coverage_dir', 644 setattr(options, 'coverage_dir',
623 os.path.join(CHROME_OUT_DIR, options.target, 'coverage')) 645 os.path.join(CHROME_OUT_DIR, options.target, 'coverage'))
624 646
625 MainTestWrapper(options) 647 MainTestWrapper(options)
626 648
627 649
628 if __name__ == '__main__': 650 if __name__ == '__main__':
629 sys.exit(main(sys.argv)) 651 sys.exit(main(sys.argv))
OLDNEW
« no previous file with comments | « no previous file | build/android/buildbot/bb_run_bot.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698