#!/usr/bin/env python3 # SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) import argparse import os from metric import (JsonEncodeMetric, JsonEncodeMetricGroupDescriptions, LoadEvents, MetricGroup) from common_metrics import Cycles # Global command line arguments. _args = None def main() -> None: global _args def dir_path(path: str) -> str: """Validate path is a directory for argparse.""" if os.path.isdir(path): return path raise argparse.ArgumentTypeError( f'\'{path}\' is not a valid directory') parser = argparse.ArgumentParser(description="ARM perf json generator") parser.add_argument( "-metricgroups", help="Generate metricgroups data", action='store_true') parser.add_argument("vendor", help="e.g. arm") parser.add_argument("model", help="e.g. neoverse-n1") parser.add_argument( 'events_path', type=dir_path, help='Root of tree containing architecture directories containing json files' ) _args = parser.parse_args() directory = f"{_args.events_path}/arm64/{_args.vendor}/{_args.model}/" LoadEvents(directory) all_metrics = MetricGroup("", [ Cycles(), ]) if _args.metricgroups: print(JsonEncodeMetricGroupDescriptions(all_metrics)) else: print(JsonEncodeMetric(all_metrics)) if __name__ == '__main__': main()