| OLD | NEW |
| 1 # Copyright 2013 The Chromium Authors. All rights reserved. | 1 # Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import os | 5 import os |
| 6 import re | 6 import re |
| 7 import urllib | 7 import urllib |
| 8 | 8 |
| 9 from infra.libs.infra_types import freeze | 9 from infra.libs.infra_types import freeze |
| 10 from slave import recipe_api | 10 from slave import recipe_api |
| (...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 400 infra_step=True, | 400 infra_step=True, |
| 401 env=self.m.chromium.get_env()) | 401 env=self.m.chromium.get_env()) |
| 402 | 402 |
| 403 def monkey_test(self, **kwargs): | 403 def monkey_test(self, **kwargs): |
| 404 args = [ | 404 args = [ |
| 405 'monkey', | 405 'monkey', |
| 406 '-v', | 406 '-v', |
| 407 '--package=%s' % self.c.channel, | 407 '--package=%s' % self.c.channel, |
| 408 '--event-count=50000' | 408 '--event-count=50000' |
| 409 ] | 409 ] |
| 410 return self.m.python( | 410 return self.test_runner( |
| 411 'Monkey Test', | 411 'Monkey Test', |
| 412 self.c.test_runner, | |
| 413 args, | 412 args, |
| 414 env={'BUILDTYPE': self.c.BUILD_CONFIG}, | 413 env={'BUILDTYPE': self.c.BUILD_CONFIG}, |
| 415 **kwargs) | 414 **kwargs) |
| 416 | 415 |
| 417 | 416 |
| 418 def _run_sharded_tests(self, | 417 def _run_sharded_tests(self, |
| 419 config='sharded_perf_tests.json', | 418 config='sharded_perf_tests.json', |
| 420 flaky_config=None, | 419 flaky_config=None, |
| 421 chartjson_output=False, | 420 chartjson_output=False, |
| 422 **kwargs): | 421 **kwargs): |
| 423 args = ['perf', '--release', '--verbose', '--steps', config] | 422 args = ['perf', '--release', '--verbose', '--steps', config] |
| 424 if flaky_config: | 423 if flaky_config: |
| 425 args.extend(['--flaky-steps', flaky_config]) | 424 args.extend(['--flaky-steps', flaky_config]) |
| 426 args.extend(['--collect-chartjson-data'] if chartjson_output else []) | 425 args.extend(['--collect-chartjson-data'] if chartjson_output else []) |
| 427 | 426 |
| 428 self.m.python( | 427 self.test_runner( |
| 429 'Sharded Perf Tests', | 428 'Sharded Perf Tests', |
| 430 self.c.test_runner, | |
| 431 args, | 429 args, |
| 432 cwd=self.m.path['checkout'], | 430 cwd=self.m.path['checkout'], |
| 433 env=self.m.chromium.get_env(), | 431 env=self.m.chromium.get_env(), |
| 434 **kwargs) | 432 **kwargs) |
| 435 | 433 |
| 436 def run_sharded_perf_tests(self, config, flaky_config=None, perf_id=None, | 434 def run_sharded_perf_tests(self, config, flaky_config=None, perf_id=None, |
| 437 test_type_transform=lambda x: x, | 435 test_type_transform=lambda x: x, |
| 438 chartjson_file=False, **kwargs): | 436 chartjson_file=False, **kwargs): |
| 439 """Run the perf tests from the given config file. | 437 """Run the perf tests from the given config file. |
| 440 | 438 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 if self.c.coverage: | 533 if self.c.coverage: |
| 536 args.extend(['--coverage-dir', self.coverage_dir, | 534 args.extend(['--coverage-dir', self.coverage_dir, |
| 537 '--python-only']) | 535 '--python-only']) |
| 538 if host_driven_root: | 536 if host_driven_root: |
| 539 args.extend(['--host-driven-root', host_driven_root]) | 537 args.extend(['--host-driven-root', host_driven_root]) |
| 540 if official_build: | 538 if official_build: |
| 541 args.extend(['--official-build']) | 539 args.extend(['--official-build']) |
| 542 if json_results_file: | 540 if json_results_file: |
| 543 args.extend(['--json-results-file', json_results_file]) | 541 args.extend(['--json-results-file', json_results_file]) |
| 544 | 542 |
| 545 return self.m.python( | 543 return self.test_runner( |
| 546 'Instrumentation test %s%s' % (annotation or test_apk, | 544 'Instrumentation test %s%s' % (annotation or test_apk, |
| 547 ' (%s)' % suffix if suffix else ''), | 545 ' (%s)' % suffix if suffix else ''), |
| 548 self.c.test_runner, | |
| 549 args=['instrumentation'] + args, | 546 args=['instrumentation'] + args, |
| 550 **kwargs) | 547 **kwargs) |
| 551 | 548 |
| 552 def logcat_dump(self, gs_bucket=None): | 549 def logcat_dump(self, gs_bucket=None): |
| 553 if gs_bucket: | 550 if gs_bucket: |
| 554 log_path = self.m.chromium.output_dir.join('full_log') | 551 log_path = self.m.chromium.output_dir.join('full_log') |
| 555 self.m.python( | 552 self.m.python( |
| 556 'logcat_dump', | 553 'logcat_dump', |
| 557 self.m.path['checkout'].join('build', 'android', | 554 self.m.path['checkout'].join('build', 'android', |
| 558 'adb_logcat_printer.py'), | 555 'adb_logcat_printer.py'), |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 if gtest_filter: | 667 if gtest_filter: |
| 671 args.append('--gtest_filter=%s' % gtest_filter) | 668 args.append('--gtest_filter=%s' % gtest_filter) |
| 672 if tool: | 669 if tool: |
| 673 args.append('--tool=%s' % tool) | 670 args.append('--tool=%s' % tool) |
| 674 if flakiness_dashboard: | 671 if flakiness_dashboard: |
| 675 args.append('--flakiness-dashboard-server=%s' % | 672 args.append('--flakiness-dashboard-server=%s' % |
| 676 flakiness_dashboard) | 673 flakiness_dashboard) |
| 677 if json_results_file: | 674 if json_results_file: |
| 678 args.extend(['--json-results-file', json_results_file]) | 675 args.extend(['--json-results-file', json_results_file]) |
| 679 | 676 |
| 680 self.m.python( | 677 self.test_runner( |
| 681 name or str(suite), | 678 name or str(suite), |
| 682 self.c.test_runner, | |
| 683 ['gtest', '-s', suite] + args, | 679 ['gtest', '-s', suite] + args, |
| 684 env=self.m.chromium.get_env(), | 680 env=self.m.chromium.get_env(), |
| 685 **kwargs) | 681 **kwargs) |
| 686 | 682 |
| 687 def run_java_unit_test_suite(self, suite, verbose=True, **kwargs): | 683 def run_java_unit_test_suite(self, suite, verbose=True, **kwargs): |
| 688 args = [] | 684 args = [] |
| 689 if verbose: | 685 if verbose: |
| 690 args.append('--verbose') | 686 args.append('--verbose') |
| 691 if self.c.BUILD_CONFIG == 'Release': | 687 if self.c.BUILD_CONFIG == 'Release': |
| 692 args.append('--release') | 688 args.append('--release') |
| 693 | 689 |
| 694 self.m.python( | 690 self.test_runner( |
| 695 str(suite), | 691 str(suite), |
| 696 self.c.test_runner, | |
| 697 ['junit', '-s', suite] + args, | 692 ['junit', '-s', suite] + args, |
| 698 env=self.m.chromium.get_env(), | 693 env=self.m.chromium.get_env(), |
| 699 **kwargs) | 694 **kwargs) |
| 700 | 695 |
| 701 def run_python_unit_test_suite(self, suite, verbose=True, **kwargs): | 696 def run_python_unit_test_suite(self, suite, verbose=True, **kwargs): |
| 702 args = [] | 697 args = [] |
| 703 if verbose: | 698 if verbose: |
| 704 args.append('--verbose') | 699 args.append('--verbose') |
| 705 | 700 |
| 706 self.m.python( | 701 self.test_runner( |
| 707 str(suite), | 702 str(suite), |
| 708 self.c.test_runner, | |
| 709 ['python', '-s', suite] + args, | 703 ['python', '-s', suite] + args, |
| 710 env=self.m.chromium.get_env(), | 704 env=self.m.chromium.get_env(), |
| 711 **kwargs) | 705 **kwargs) |
| 712 | 706 |
| 713 def coverage_report(self, **kwargs): | 707 def coverage_report(self, **kwargs): |
| 714 assert self.c.coverage, ( | 708 assert self.c.coverage, ( |
| 715 'Trying to generate coverage report but coverage is not enabled') | 709 'Trying to generate coverage report but coverage is not enabled') |
| 716 gs_dest = 'java/%s/%s' % ( | 710 gs_dest = 'java/%s/%s' % ( |
| 717 self.m.properties['buildername'], self.m.properties['revision']) | 711 self.m.properties['buildername'], self.m.properties['revision']) |
| 718 | 712 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 730 | 724 |
| 731 self.m.gsutil.upload( | 725 self.m.gsutil.upload( |
| 732 source=self.coverage_dir.join('coverage_html'), | 726 source=self.coverage_dir.join('coverage_html'), |
| 733 bucket='chrome-code-coverage', | 727 bucket='chrome-code-coverage', |
| 734 dest=gs_dest, | 728 dest=gs_dest, |
| 735 args=['-R'], | 729 args=['-R'], |
| 736 name='upload coverage report', | 730 name='upload coverage report', |
| 737 link_name='Coverage report', | 731 link_name='Coverage report', |
| 738 version='4.7', | 732 version='4.7', |
| 739 **kwargs) | 733 **kwargs) |
| 734 |
| 735 def test_runner(self, step_name, args=None, **kwargs): |
| 736 """Wrapper for the python testrunner script. |
| 737 |
| 738 Args: |
| 739 step_name: Name of the step. |
| 740 args: Testrunner arguments. |
| 741 """ |
| 742 try: |
| 743 step_result = self.m.python( |
| 744 step_name, self.c.test_runner, args, **kwargs) |
| 745 return step_result |
| 746 except self.m.step.StepFailure as f: |
| 747 step_result = f.result |
| 748 raise |
| 749 finally: |
| 750 if (step_result.retcode == |
| 751 self.c.test_runner_exit_codes['ERROR']): |
| 752 step_result.presentation.status = self.m.step.FAILURE |
| 753 elif (step_result.retcode == |
| 754 self.c.test_runner_exit_codes['INFRA']): |
| 755 step_result.presentation.status = self.m.step.EXCEPTION |
| 756 elif (step_result.retcode == |
| 757 self.c.test_runner_exit_codes['WARNING']): |
| 758 step_result.presentation.status = self.m.step.WARNING |
| OLD | NEW |