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