1f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren#!/usr/bin/env python 2f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren# Copyright 2017 The Chromium Authors. All rights reserved. 3f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren# Use of this source code is governed by a BSD-style license that can be 4f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren# found in the LICENSE file. 5f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 6f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borenimport argparse 7f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borenimport json 8f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borenimport sys 9f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 10f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borenimport results_merger 11f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 12f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 13f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borendef StandardIsolatedScriptMerge(output_json, jsons_to_merge): 14f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren """Merge the contents of one or more results JSONs into a single JSON. 15f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 16f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren Args: 17f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren output_json: A path to a JSON file to which the merged results should be 18f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren written. 19f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren jsons_to_merge: A list of paths to JSON files that should be merged. 20f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren """ 21f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren shard_results_list = [] 22f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren for j in jsons_to_merge: 23f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren with open(j) as f: 24f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren shard_results_list.append(json.load(f)) 25f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren merged_results = results_merger.merge_test_results(shard_results_list) 26f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 27f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren with open(output_json, 'w') as f: 28f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren json.dump(merged_results, f) 29f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 30f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren return 0 31f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 32f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 33f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borendef main(): 34f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren parser = argparse.ArgumentParser() 35f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren parser.add_argument('-o', '--output-json', required=True) 36f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren parser.add_argument('--build-properties', help=argparse.SUPPRESS) 37f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren parser.add_argument('--summary-json', help=argparse.SUPPRESS) 38f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren parser.add_argument('jsons_to_merge', nargs='*') 39f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 40f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren args = parser.parse_args() 41f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren return StandardIsolatedScriptMerge(args.output_json, args.jsons_to_merge) 42f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 43f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren 44f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Borenif __name__ == '__main__': 45f94514b0ff8eccb2eaef8c77bee8c5f462b83b90Eric Boren sys.exit(main()) 46