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