| #!/usr/bin/env python3 |
| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Prints the specified trace file information in JSON format""" |
| |
| from __future__ import print_function |
| |
| import argparse |
| import hashlib |
| import json |
| import os |
| import subprocess |
| import sys |
| import utils |
| |
| |
| def main(args): |
| parser = argparse.ArgumentParser(description=__doc__) |
| parser.add_argument('trace_file', help='.trace file name') |
| opts = parser.parse_args(args) |
| |
| trace_fname = opts.trace_file |
| if not os.path.isfile(trace_fname): |
| utils.panic('Unable to open <%s>. File not found.' % trace_fname) |
| |
| try: |
| cmd = ['apitrace', 'info', trace_fname] |
| result = subprocess.run( |
| cmd, check=True, encoding='utf-8', capture_output=True) |
| |
| res = json.loads(result.stdout) |
| data_results = { |
| 'trace_file_version': res['ContainerVersion'], |
| 'trace_frames_count': res['FramesCount'], |
| } |
| print(json.dumps(data_results, indent=2, sort_keys=True)) |
| except subprocess.CalledProcessError as e: |
| utils.panic(f'Unable to retreive {trace_fname} information. {str(e)}') |
| except Exception as e: |
| utils.panic(f'Unable to decode apitrace info output: <{str(e)}>') |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |