1*b7c941bbSAndroid Build Coastguard Worker#!/usr/bin/python 2*b7c941bbSAndroid Build Coastguard Worker# Copyright (C) 2016 The Android Open Source Project 3*b7c941bbSAndroid Build Coastguard Worker# 4*b7c941bbSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*b7c941bbSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*b7c941bbSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*b7c941bbSAndroid Build Coastguard Worker# 8*b7c941bbSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*b7c941bbSAndroid Build Coastguard Worker# 10*b7c941bbSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*b7c941bbSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*b7c941bbSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*b7c941bbSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*b7c941bbSAndroid Build Coastguard Worker# limitations under the License. 15*b7c941bbSAndroid Build Coastguard Worker# 16*b7c941bbSAndroid Build Coastguard Worker 17*b7c941bbSAndroid Build Coastguard Workerimport argparse, json, sys 18*b7c941bbSAndroid Build Coastguard Worker 19*b7c941bbSAndroid Build Coastguard Workerclass MetricsParser(object): 20*b7c941bbSAndroid Build Coastguard Worker """Executor of this utility""" 21*b7c941bbSAndroid Build Coastguard Worker 22*b7c941bbSAndroid Build Coastguard Worker def __init__(self): 23*b7c941bbSAndroid Build Coastguard Worker self._parser = argparse.ArgumentParser('Parse CTS Test metrics jsons') 24*b7c941bbSAndroid Build Coastguard Worker self._parser.add_argument('filenames', metavar='filenames', nargs='+', 25*b7c941bbSAndroid Build Coastguard Worker help='filenames of metrics jsons to be parsed') 26*b7c941bbSAndroid Build Coastguard Worker self._metrics = [] 27*b7c941bbSAndroid Build Coastguard Worker 28*b7c941bbSAndroid Build Coastguard Worker def _ParseArgs(self): 29*b7c941bbSAndroid Build Coastguard Worker self._args = self._parser.parse_args() 30*b7c941bbSAndroid Build Coastguard Worker 31*b7c941bbSAndroid Build Coastguard Worker def _Parse(self, filename): 32*b7c941bbSAndroid Build Coastguard Worker json_file = open(filename) 33*b7c941bbSAndroid Build Coastguard Worker json_data = json.load(json_file) 34*b7c941bbSAndroid Build Coastguard Worker self._metrics.append(json_data) 35*b7c941bbSAndroid Build Coastguard Worker self._PrintJson(filename, json_data) 36*b7c941bbSAndroid Build Coastguard Worker 37*b7c941bbSAndroid Build Coastguard Worker def _PrintJson(self, filename, json_data): 38*b7c941bbSAndroid Build Coastguard Worker print "\nFilename: %s" % filename 39*b7c941bbSAndroid Build Coastguard Worker stream_names = json_data.keys() 40*b7c941bbSAndroid Build Coastguard Worker for stream_name in stream_names: 41*b7c941bbSAndroid Build Coastguard Worker metrics_list = json_data.get(stream_name) 42*b7c941bbSAndroid Build Coastguard Worker for metrics in metrics_list: 43*b7c941bbSAndroid Build Coastguard Worker print "\nStream Name: %s" % stream_name 44*b7c941bbSAndroid Build Coastguard Worker for key in metrics.keys(): 45*b7c941bbSAndroid Build Coastguard Worker print "Key: %s \t Value: %s" % (key, str(metrics.get(key))) 46*b7c941bbSAndroid Build Coastguard Worker 47*b7c941bbSAndroid Build Coastguard Worker def Run(self): 48*b7c941bbSAndroid Build Coastguard Worker self._ParseArgs() 49*b7c941bbSAndroid Build Coastguard Worker try: 50*b7c941bbSAndroid Build Coastguard Worker for filename in self._args.filenames: 51*b7c941bbSAndroid Build Coastguard Worker self._Parse(filename) 52*b7c941bbSAndroid Build Coastguard Worker except (IOError, ValueError) as e: 53*b7c941bbSAndroid Build Coastguard Worker print >> sys.stderr, e 54*b7c941bbSAndroid Build Coastguard Worker raise KeyboardInterrupt 55*b7c941bbSAndroid Build Coastguard Worker 56*b7c941bbSAndroid Build Coastguard Workerif __name__ == '__main__': 57*b7c941bbSAndroid Build Coastguard Worker MetricsParser().Run() 58*b7c941bbSAndroid Build Coastguard Worker 59