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

Side by Side Diff: build/android/test_runner.py

Issue 2198613002: [Android] Get rid of old perf test runner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: get rid of test_env Created 4 years, 4 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
« no previous file with comments | « build/android/pylib/utils/test_environment.py ('k') | build/android/test_runner.pydeps » ('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 # 2 #
3 # Copyright 2013 The Chromium Authors. All rights reserved. 3 # Copyright 2013 The Chromium Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Runs all types of tests from one unified interface.""" 7 """Runs all types of tests from one unified interface."""
8 8
9 import argparse 9 import argparse
10 import collections 10 import collections
(...skipping 20 matching lines...) Expand all
31 from pylib.base import environment_factory 31 from pylib.base import environment_factory
32 from pylib.base import test_dispatcher 32 from pylib.base import test_dispatcher
33 from pylib.base import test_instance_factory 33 from pylib.base import test_instance_factory
34 from pylib.base import test_run_factory 34 from pylib.base import test_run_factory
35 from pylib.constants import host_paths 35 from pylib.constants import host_paths
36 from pylib.linker import setup as linker_setup 36 from pylib.linker import setup as linker_setup
37 from pylib.junit import setup as junit_setup 37 from pylib.junit import setup as junit_setup
38 from pylib.junit import test_dispatcher as junit_dispatcher 38 from pylib.junit import test_dispatcher as junit_dispatcher
39 from pylib.monkey import setup as monkey_setup 39 from pylib.monkey import setup as monkey_setup
40 from pylib.monkey import test_options as monkey_test_options 40 from pylib.monkey import test_options as monkey_test_options
41 from pylib.perf import setup as perf_setup
42 from pylib.perf import test_options as perf_test_options
43 from pylib.perf import test_runner as perf_test_runner
44 from pylib.results import json_results 41 from pylib.results import json_results
45 from pylib.results import report_results 42 from pylib.results import report_results
46 43
47 44
48 _DEVIL_STATIC_CONFIG_FILE = os.path.abspath(os.path.join( 45 _DEVIL_STATIC_CONFIG_FILE = os.path.abspath(os.path.join(
49 host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'devil_config.json')) 46 host_paths.DIR_SOURCE_ROOT, 'build', 'android', 'devil_config.json'))
50 47
51 48
52 def AddCommonOptions(parser): 49 def AddCommonOptions(parser):
53 """Adds all common options to |parser|.""" 50 """Adds all common options to |parser|."""
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
605 group.add_argument( 602 group.add_argument(
606 '--break-on-failure', '--break_on_failure', dest='break_on_failure', 603 '--break-on-failure', '--break_on_failure', dest='break_on_failure',
607 action='store_true', help='Whether to break on failure.') 604 action='store_true', help='Whether to break on failure.')
608 group.add_argument( 605 group.add_argument(
609 '--write-buildbot-json', action='store_true', 606 '--write-buildbot-json', action='store_true',
610 help='Whether to output buildbot json.') 607 help='Whether to output buildbot json.')
611 AddCommonOptions(parser) 608 AddCommonOptions(parser)
612 AddDeviceOptions(parser) 609 AddDeviceOptions(parser)
613 610
614 611
615 def ProcessPerfTestOptions(args):
616 """Processes all perf test options.
617
618 Args:
619 args: argparse.Namespace object.
620
621 Returns:
622 A PerfOptions named tuple which contains all options relevant to
623 perf tests.
624 """
625 # TODO(jbudorick): Move single_step handling down into the perf tests.
626 if args.single_step:
627 args.single_step = ' '.join(args.single_step_command)
628 # TODO(jbudorick): Get rid of PerfOptions.
629 return perf_test_options.PerfOptions(
630 args.steps, args.flaky_steps, args.output_json_list,
631 args.print_step, args.no_timeout, args.test_filter,
632 args.dry_run, args.single_step, args.collect_chartjson_data,
633 args.output_chartjson_data, args.get_output_dir_archive,
634 args.max_battery_temp, args.min_battery_level,
635 args.known_devices_file)
636
637
638 def AddPythonTestOptions(parser): 612 def AddPythonTestOptions(parser):
639 group = parser.add_argument_group('Python Test Options') 613 group = parser.add_argument_group('Python Test Options')
640 group.add_argument( 614 group.add_argument(
641 '-s', '--suite', dest='suite_name', metavar='SUITE_NAME', 615 '-s', '--suite', dest='suite_name', metavar='SUITE_NAME',
642 choices=constants.PYTHON_UNIT_TEST_SUITES.keys(), 616 choices=constants.PYTHON_UNIT_TEST_SUITES.keys(),
643 help='Name of the test suite to run.') 617 help='Name of the test suite to run.')
644 AddCommonOptions(parser) 618 AddCommonOptions(parser)
645 619
646 620
647 def _RunLinkerTests(args, devices): 621 def _RunLinkerTests(args, devices):
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 results=results, 667 results=results,
694 test_type='Monkey', 668 test_type='Monkey',
695 test_package='Monkey') 669 test_package='Monkey')
696 670
697 if args.json_results_file: 671 if args.json_results_file:
698 json_results.GenerateJsonResultsFile([results], args.json_results_file) 672 json_results.GenerateJsonResultsFile([results], args.json_results_file)
699 673
700 return exit_code 674 return exit_code
701 675
702 676
703 def _RunPerfTests(args, active_devices):
704 """Subcommand of RunTestsCommands which runs perf tests."""
705 perf_options = ProcessPerfTestOptions(args)
706
707 # Just save a simple json with a list of test names.
708 if perf_options.output_json_list:
709 return perf_test_runner.OutputJsonList(
710 perf_options.steps, perf_options.output_json_list)
711
712 # Just print the results from a single previously executed step.
713 if perf_options.print_step:
714 return perf_test_runner.PrintTestOutput(
715 perf_options.print_step, perf_options.output_chartjson_data,
716 perf_options.get_output_dir_archive)
717
718 runner_factory, tests, devices = perf_setup.Setup(
719 perf_options, active_devices)
720
721 # shard=False means that each device will get the full list of tests
722 # and then each one will decide their own affinity.
723 # shard=True means each device will pop the next test available from a queue,
724 # which increases throughput but have no affinity.
725 results, _ = test_dispatcher.RunTests(
726 tests, runner_factory, devices, shard=False, test_timeout=None,
727 num_retries=args.num_retries)
728
729 report_results.LogFull(
730 results=results,
731 test_type='Perf',
732 test_package='Perf')
733
734 if args.json_results_file:
735 json_results.GenerateJsonResultsFile([results], args.json_results_file)
736
737 if perf_options.single_step:
738 return perf_test_runner.PrintTestOutput('single_step')
739
740 perf_test_runner.PrintSummary(tests)
741
742 # Always return 0 on the sharding stage. Individual tests exit_code
743 # will be returned on the print_step stage.
744 return 0
745
746
747 def _RunPythonTests(args): 677 def _RunPythonTests(args):
748 """Subcommand of RunTestsCommand which runs python unit tests.""" 678 """Subcommand of RunTestsCommand which runs python unit tests."""
749 suite_vars = constants.PYTHON_UNIT_TEST_SUITES[args.suite_name] 679 suite_vars = constants.PYTHON_UNIT_TEST_SUITES[args.suite_name]
750 suite_path = suite_vars['path'] 680 suite_path = suite_vars['path']
751 suite_test_modules = suite_vars['test_modules'] 681 suite_test_modules = suite_vars['test_modules']
752 682
753 sys.path = [suite_path] + sys.path 683 sys.path = [suite_path] + sys.path
754 try: 684 try:
755 suite = unittest.TestSuite() 685 suite = unittest.TestSuite()
756 suite.addTests(unittest.defaultTestLoader.loadTestsFromName(m) 686 suite.addTests(unittest.defaultTestLoader.loadTestsFromName(m)
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 def get_devices(): 758 def get_devices():
829 return _GetAttachedDevices(args.blacklist_file, args.test_device, 759 return _GetAttachedDevices(args.blacklist_file, args.test_device,
830 args.enable_device_cache, args.num_retries) 760 args.enable_device_cache, args.num_retries)
831 761
832 if command == 'linker': 762 if command == 'linker':
833 return _RunLinkerTests(args, get_devices()) 763 return _RunLinkerTests(args, get_devices())
834 elif command == 'junit': 764 elif command == 'junit':
835 return _RunJUnitTests(args) 765 return _RunJUnitTests(args)
836 elif command == 'monkey': 766 elif command == 'monkey':
837 return _RunMonkeyTests(args, get_devices()) 767 return _RunMonkeyTests(args, get_devices())
838 elif command == 'perf':
839 return _RunPerfTests(args, get_devices())
840 elif command == 'python': 768 elif command == 'python':
841 return _RunPythonTests(args) 769 return _RunPythonTests(args)
842 else: 770 else:
843 raise Exception('Unknown test type.') 771 raise Exception('Unknown test type.')
844 772
845 773
846 _SUPPORTED_IN_PLATFORM_MODE = [ 774 _SUPPORTED_IN_PLATFORM_MODE = [
847 # TODO(jbudorick): Add support for more test types. 775 # TODO(jbudorick): Add support for more test types.
848 'gtest', 776 'gtest',
849 'instrumentation', 777 'instrumentation',
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 if e.is_infra_error: 930 if e.is_infra_error:
1003 return constants.INFRA_EXIT_CODE 931 return constants.INFRA_EXIT_CODE
1004 return constants.ERROR_EXIT_CODE 932 return constants.ERROR_EXIT_CODE
1005 except: # pylint: disable=W0702 933 except: # pylint: disable=W0702
1006 logging.exception('Unrecognized error occurred.') 934 logging.exception('Unrecognized error occurred.')
1007 return constants.ERROR_EXIT_CODE 935 return constants.ERROR_EXIT_CODE
1008 936
1009 937
1010 if __name__ == '__main__': 938 if __name__ == '__main__':
1011 sys.exit(main()) 939 sys.exit(main())
OLDNEW
« no previous file with comments | « build/android/pylib/utils/test_environment.py ('k') | build/android/test_runner.pydeps » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698