xref: /aosp_15_r20/cts/tools/cts-test-metrics/parse_test_metrics.py (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
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