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

Unified Diff: build/android/pylib/results/presentation/test_results_presentation.py

Issue 2821533005: Make test results presentation enabled for swarming. (Closed)
Patch Set: fix arguments Created 3 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | testing/buildbot/chromium.linux.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/pylib/results/presentation/test_results_presentation.py
diff --git a/build/android/pylib/results/presentation/test_results_presentation.py b/build/android/pylib/results/presentation/test_results_presentation.py
index 3324784a4040100e77574208024121954943a889..6ae79a85448de6c8c131be60b97cc0756f8a7e2f 100755
--- a/build/android/pylib/results/presentation/test_results_presentation.py
+++ b/build/android/pylib/results/presentation/test_results_presentation.py
@@ -308,12 +308,12 @@ def upload_to_google_bucket(html, test_name, builder_name, build_number,
def main():
parser = argparse.ArgumentParser()
- parser.add_argument('--json-file', help='Path of json file.', required=True)
+ parser.add_argument('--json-file', help='Path of json file.')
parser.add_argument('--cs-base-url', help='Base url for code search.',
default='http://cs.chromium.org')
parser.add_argument('--bucket', help='Google storage bucket.', required=True)
- parser.add_argument('--builder-name', help='Builder name.', required=True)
- parser.add_argument('--build-number', help='Build number.', required=True)
+ parser.add_argument('--builder-name', help='Builder name.')
+ parser.add_argument('--build-number', help='Build number.')
parser.add_argument('--test-name', help='The name of the test.',
required=True)
parser.add_argument('--server-url', help='The url of the server.',
@@ -324,18 +324,80 @@ def main():
'whether to download the file, or view in browser.'),
default='text/html',
choices=['text/html', 'application/octet-stream'])
+ parser.add_argument(
jbudorick 2017/04/18 15:59:25 For future CLs, it's worth noting that argparse ha
BigBossZhiling 2017/04/18 17:52:29 Acknowledged.
+ '-o', '--output-json',
+ help='(Swarming Merge Script API)'
+ ' Output JSON file to create.')
+ parser.add_argument(
+ '--build-properties',
+ help='(Swarming Merge Script API) '
+ 'Build property JSON file provided by recipes.')
+ parser.add_argument(
+ '--summary-json',
+ help='(Swarming Merge Script API)'
+ ' Summary of shard state running on swarming.'
+ ' (Output of the swarming.py collect'
+ ' --task-summary-json=XXX command.)')
+ parser.add_argument(
+ 'positional', nargs='*',
+ help='output.json from shards.')
+
args = parser.parse_args()
- if os.path.exists(args.json_file):
- result_html_string = result_details(args.json_file, args.cs_base_url,
- args.bucket, args.server_url)
- print upload_to_google_bucket(result_html_string.encode('UTF-8'),
- args.test_name, args.builder_name,
- args.build_number, args.bucket,
- args.server_url, args.content_type)
- else:
- raise IOError('--json-file %s not found.' % args.json_file)
+ # One of build_perperties or (build_number or builder_names) should be given.
mikecase (-- gone --) 2017/04/18 15:39:27 nit: I would move these commnets inside the Except
BigBossZhiling 2017/04/18 17:52:29 Done.
+ if not (bool(args.build_properties) ^
jbudorick 2017/04/18 15:59:25 I would shy away from xor here and below. I think
BigBossZhiling 2017/04/18 17:52:29 Done.
+ bool(args.build_number or args.builder_name)):
mikecase (-- gone --) 2017/04/18 15:39:28 should this be bool(args.build_number AND args.bui
jbudorick 2017/04/18 15:59:25 I think this part is OK as-is.= given the check be
BigBossZhiling 2017/04/18 17:52:29 Acknowledged.
+ raise Exception('Error in build properties arguments.')
+
+ # args.build_number and args.builder_name has to be be given together
+ # or not given at all.
mikecase (-- gone --) 2017/04/18 15:39:28 nit: I would move these commnets inside the Except
+ if bool(args.build_number) ^ bool(args.builder_name):
jbudorick 2017/04/18 15:59:25 if (args.build_number is None) != (args.builder_na
+ raise Exception('Build number/builder name not specified.')
+
+ # Only one of args.positional and args.json_file should be given.
mikecase (-- gone --) 2017/04/18 15:39:27 nit: I would move these commnets inside the Except
BigBossZhiling 2017/04/18 17:52:29 Done.
+ if not bool(args.positional) ^ bool(args.json_file):
jbudorick 2017/04/18 15:59:25 (args.positional is None) != (args.json_file is No
BigBossZhiling 2017/04/18 17:52:29 Acknowledged.
+ raise Exception('Error in json file arguments.')
+
+ if args.build_properties:
+ build_properties = json.loads(args.build_properties)
+ if ((not 'buildnumber' in build_properties) or
+ (not 'buildername' in build_properties)):
+ raise Exception('Build number/builder name not specified.')
+ build_number = build_properties['buildnumber']
+ builder_name = build_properties['buildername']
+
+ if args.build_number and args.builder_name:
jbudorick 2017/04/18 15:59:25 elif
BigBossZhiling 2017/04/18 17:52:29 Done.
+ build_number = args.build_number
+ builder_name = args.builder_name
+
+ if args.positional:
+ if not len(args.positional) == 1:
+ raise Exception('More than 1 json file specified.')
+ json_file = args.positional[0]
+
+ if args.json_file:
jbudorick 2017/04/18 15:59:25 elif
BigBossZhiling 2017/04/18 17:52:28 Done.
+ json_file = args.json_file
+
+ if not os.path.exists(json_file):
+ raise IOError('--json-file %s not found.' % json_file)
+
+ result_html_string = result_details(json_file, args.cs_base_url,
+ args.bucket, args.server_url)
+ result_details_link = upload_to_google_bucket(
+ result_html_string.encode('UTF-8'),
+ args.test_name, builder_name,
+ build_number, args.bucket,
+ args.server_url, args.content_type)
+
+ if args.output_json:
+ with open(json_file) as original_json_file:
+ json_object = json.loads(original_json_file.read())
+ json_object['links'] = {'result_details': result_details_link}
+ with open(args.output_json, 'w') as f:
+ f.write(str(json_object))
+ else:
+ print result_details_link
if __name__ == '__main__':
sys.exit(main())
« no previous file with comments | « no previous file | testing/buildbot/chromium.linux.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698