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

Side by Side Diff: scripts/slave/recipe_modules/chromium_android/api.py

Issue 2439213002: Add step to process Render Test results. (Closed)
Patch Set: Added parens to nested_step_name Created 4 years, 1 month 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
OLDNEW
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 contextlib 5 import contextlib
6 import datetime 6 import datetime
7 import json 7 import json
8 import os 8 import os
9 import pipes 9 import pipes
10 import re 10 import re
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 apk_package=None, 891 apk_package=None,
892 official_build=False, 892 official_build=False,
893 json_results_file=None, 893 json_results_file=None,
894 timeout_scale=None, strict_mode=None, 894 timeout_scale=None, strict_mode=None,
895 suffix=None, num_retries=None, 895 suffix=None, num_retries=None,
896 device_flags=None, 896 device_flags=None,
897 wrapper_script_suite_name=None, 897 wrapper_script_suite_name=None,
898 result_details=False, 898 result_details=False,
899 cs_base_url=None, 899 cs_base_url=None,
900 store_tombstones=False, 900 store_tombstones=False,
901 render_results_dir=None,
901 **kwargs): 902 **kwargs):
902 args = [ 903 args = [
903 '--blacklist-file', self.blacklist_file, 904 '--blacklist-file', self.blacklist_file,
904 ] 905 ]
905 if tool: 906 if tool:
906 args.append('--tool=%s' % tool) 907 args.append('--tool=%s' % tool)
907 if flakiness_dashboard: 908 if flakiness_dashboard:
908 args.extend(['--flakiness-dashboard-server', flakiness_dashboard]) 909 args.extend(['--flakiness-dashboard-server', flakiness_dashboard])
909 if annotation: 910 if annotation:
910 args.extend(['-A', annotation]) 911 args.extend(['-A', annotation])
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
950 annotation or name, ' (%s)' % suffix if suffix else '') 951 annotation or name, ' (%s)' % suffix if suffix else '')
951 952
952 try: 953 try:
953 step_result = self.test_runner( 954 step_result = self.test_runner(
954 step_name, 955 step_name,
955 args=args, 956 args=args,
956 wrapper_script_suite_name=wrapper_script_suite_name, 957 wrapper_script_suite_name=wrapper_script_suite_name,
957 **kwargs) 958 **kwargs)
958 finally: 959 finally:
959 result_step = self.m.step.active_result 960 result_step = self.m.step.active_result
961 if render_results_dir:
962 self._upload_render_test_failures(render_results_dir)
960 if result_details: 963 if result_details:
961 if (hasattr(result_step, 'test_utils') and 964 if (hasattr(result_step, 'test_utils') and
962 hasattr(result_step.test_utils, 'gtest_results')): 965 hasattr(result_step.test_utils, 'gtest_results')):
963 json_results = self.m.json.input( 966 json_results = self.m.json.input(
964 result_step.test_utils.gtest_results.raw) 967 result_step.test_utils.gtest_results.raw)
965 details = self.create_result_details(step_name, 968 details = self.create_result_details(step_name,
966 json_results, 969 json_results,
967 cs_base_url) 970 cs_base_url)
968 self.m.step.active_result.presentation.logs[ 971 self.m.step.active_result.presentation.logs['result_details'] = (
969 'result_details'] = details 972 details)
970 self.copy_gtest_results(result_step,
jbudorick 2016/11/03 18:34:36 This worries me.
mikecase (-- gone --) 2016/11/03 18:41:37 I think this should be fine. As long as nothing tr
jbudorick 2016/11/07 21:58:56 I'm particularly worried if something tries to use
mikecase (-- gone --) 2016/11/07 23:38:29 Gaahhhhhhh. Looking around I can't actually tell i
971 self.m.step.active_result)
972 return step_result 973 return step_result
973 974
974 def copy_gtest_results(self, result_step, active_step): 975 def copy_gtest_results(self, result_step, active_step):
975 if (hasattr(result_step, 'test_utils') and 976 if (hasattr(result_step, 'test_utils') and
976 hasattr(result_step.test_utils, 'gtest_results')): 977 hasattr(result_step.test_utils, 'gtest_results')):
977 active_step.test_utils = result_step.test_utils 978 active_step.test_utils = result_step.test_utils
978 979
979 def create_result_details(self, step_name, json_results_file, cs_base_url): 980 def create_result_details(self, step_name, json_results_file, cs_base_url):
980 presentation_args = ['--json-file', 981 presentation_args = ['--json-file',
981 json_results_file, 982 json_results_file,
982 '--master-name', 983 '--master-name',
983 self.m.properties.get('mastername')] 984 self.m.properties.get('mastername')]
984 if cs_base_url: 985 if cs_base_url:
985 presentation_args.extend(['--cs-base-url', cs_base_url]) 986 presentation_args.extend(['--cs-base-url', cs_base_url])
986 result_details = self.m.python( 987 result_details = self.m.python(
987 '%s: generate result details' % step_name, 988 '%s: generate result details' % step_name,
988 self.resource('test_results_presentation.py'), 989 self.resource('test_results_presentation.py'),
989 args=presentation_args, 990 args=presentation_args,
990 stdout=self.m.raw_io.output(), 991 stdout=self.m.raw_io.output(),
991 step_test_data=( 992 step_test_data=(
992 lambda: self.m.raw_io.test_api.stream_output( 993 lambda: self.m.raw_io.test_api.stream_output(
993 '<!DOCTYPE html><html></html>'))) 994 '<!DOCTYPE html><html></html>')))
994 return result_details.stdout.splitlines() 995 return result_details.stdout.splitlines()
995 996
997 def _upload_render_test_failures(self, render_results_dir):
998 """Uploads render test results. Generates HTML file displaying results."""
999 args = ['--output-html-file', self.m.raw_io.output(),
1000 '--buildername', self.m.properties['buildername'],
1001 '--build-number', self.m.properties['buildnumber'],
1002 '--render-results-dir', render_results_dir]
1003 step_result = self.m.python(
1004 name='[Render Tests] Upload Results',
1005 script=self.m.path['checkout'].join(
1006 'build', 'android', 'render_tests',
1007 'process_render_test_results.py'),
1008 args=args,
1009 step_test_data=lambda: self.m.raw_io.test_api.output(
1010 '<!DOCTYPE html><html></html>'))
1011 step_result.presentation.logs['render results'] = (
1012 step_result.raw_io.output.splitlines())
1013
996 def logcat_dump(self, gs_bucket=None): 1014 def logcat_dump(self, gs_bucket=None):
997 if gs_bucket: 1015 if gs_bucket:
998 log_path = self.m.chromium.output_dir.join('full_log') 1016 log_path = self.m.chromium.output_dir.join('full_log')
999 self.m.python( 1017 self.m.python(
1000 'logcat_dump', 1018 'logcat_dump',
1001 self.m.path['checkout'].join('build', 'android', 1019 self.m.path['checkout'].join('build', 'android',
1002 'adb_logcat_printer.py'), 1020 'adb_logcat_printer.py'),
1003 [ '--output-path', log_path, 1021 [ '--output-path', log_path,
1004 self.m.path['checkout'].join('out', 'logcat') ], 1022 self.m.path['checkout'].join('out', 'logcat') ],
1005 infra_step=True) 1023 infra_step=True)
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 def run_java_unit_test_suite(self, suite, verbose=True, 1210 def run_java_unit_test_suite(self, suite, verbose=True,
1193 json_results_file=None, suffix=None, **kwargs): 1211 json_results_file=None, suffix=None, **kwargs):
1194 args = [] 1212 args = []
1195 if verbose: 1213 if verbose:
1196 args.append('--verbose') 1214 args.append('--verbose')
1197 if self.c.BUILD_CONFIG == 'Release': 1215 if self.c.BUILD_CONFIG == 'Release':
1198 args.append('--release') 1216 args.append('--release')
1199 if json_results_file: 1217 if json_results_file:
1200 args.extend(['--json-results-file', json_results_file]) 1218 args.extend(['--json-results-file', json_results_file])
1201 1219
1202 self.test_runner( 1220 return self.test_runner(
1203 '%s%s' % (str(suite), ' (%s)' % suffix if suffix else ''), 1221 '%s%s' % (str(suite), ' (%s)' % suffix if suffix else ''),
1204 ['junit', '-s', suite] + args, 1222 ['junit', '-s', suite] + args,
1205 env=self.m.chromium.get_env(), 1223 env=self.m.chromium.get_env(),
1206 **kwargs) 1224 **kwargs)
1207 1225
1208 def _set_webview_command_line(self, command_line_args): 1226 def _set_webview_command_line(self, command_line_args):
1209 """Set the Android WebView command line. 1227 """Set the Android WebView command line.
1210 1228
1211 Args: 1229 Args:
1212 command_line_args: A list of command line arguments you want set for 1230 command_line_args: A list of command line arguments you want set for
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
1566 script = self.c.test_runner 1584 script = self.c.test_runner
1567 if wrapper_script_suite_name: 1585 if wrapper_script_suite_name:
1568 script = self.m.chromium.output_dir.join('bin', 'run_%s' % 1586 script = self.m.chromium.output_dir.join('bin', 'run_%s' %
1569 wrapper_script_suite_name) 1587 wrapper_script_suite_name)
1570 else: 1588 else:
1571 env = kwargs.get('env', {}) 1589 env = kwargs.get('env', {})
1572 env['CHROMIUM_OUTPUT_DIR'] = env.get('CHROMIUM_OUTPUT_DIR', 1590 env['CHROMIUM_OUTPUT_DIR'] = env.get('CHROMIUM_OUTPUT_DIR',
1573 self.m.chromium.output_dir) 1591 self.m.chromium.output_dir)
1574 kwargs['env'] = env 1592 kwargs['env'] = env
1575 return self.m.python(step_name, script, args, **kwargs) 1593 return self.m.python(step_name, script, args, **kwargs)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698