1#!/usr/bin/env python3 2# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 3import argparse 4import os 5from metric import (JsonEncodeMetric, JsonEncodeMetricGroupDescriptions, LoadEvents, 6 MetricGroup) 7from common_metrics import Cycles 8 9# Global command line arguments. 10_args = None 11 12 13def main() -> None: 14 global _args 15 16 def dir_path(path: str) -> str: 17 """Validate path is a directory for argparse.""" 18 if os.path.isdir(path): 19 return path 20 raise argparse.ArgumentTypeError( 21 f'\'{path}\' is not a valid directory') 22 23 parser = argparse.ArgumentParser(description="ARM perf json generator") 24 parser.add_argument( 25 "-metricgroups", help="Generate metricgroups data", action='store_true') 26 parser.add_argument("vendor", help="e.g. arm") 27 parser.add_argument("model", help="e.g. neoverse-n1") 28 parser.add_argument( 29 'events_path', 30 type=dir_path, 31 help='Root of tree containing architecture directories containing json files' 32 ) 33 _args = parser.parse_args() 34 35 directory = f"{_args.events_path}/arm64/{_args.vendor}/{_args.model}/" 36 LoadEvents(directory) 37 38 all_metrics = MetricGroup("", [ 39 Cycles(), 40 ]) 41 42 if _args.metricgroups: 43 print(JsonEncodeMetricGroupDescriptions(all_metrics)) 44 else: 45 print(JsonEncodeMetric(all_metrics)) 46 47 48if __name__ == '__main__': 49 main() 50