| #!/usr/bin/env python3 | |
| # Copyright (C) 2020 The Android Open Source Project | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| from __future__ import absolute_import | |
| from __future__ import division | |
| from __future__ import print_function | |
| import argparse | |
| import os | |
| import sys | |
| ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| sys.path.append(ROOT_DIR) | |
| from python.generators.diff_tests.utils import serialize_textproto_trace, serialize_python_trace | |
| def main(): | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument( | |
| '--out', type=str, help='out directory to search for trace descriptor') | |
| parser.add_argument( | |
| '--descriptor', type=str, help='path to the trace descriptor') | |
| parser.add_argument( | |
| '--extension-descriptor', | |
| action='append', | |
| type=str, | |
| help='paths to additional descriptors') | |
| parser.add_argument('trace_path', type=str, help='path of trace to serialize') | |
| args = parser.parse_args() | |
| if args.out and not args.descriptor: | |
| trace_protos_path = os.path.join(args.out, 'gen', 'protos', 'perfetto', | |
| 'trace') | |
| chrome_extension_descriptor_path = os.path.join( | |
| args.out, 'gen', 'protos', 'third_party', 'chromium', | |
| 'chrome_track_event.descriptor') | |
| trace_descriptor_path = os.path.join(trace_protos_path, 'trace.descriptor') | |
| test_extensions_descriptor_path = os.path.join( | |
| trace_protos_path, 'test_extensions.descriptor') | |
| winscope_extensions_descriptor_path = os.path.join(trace_protos_path, | |
| 'android', | |
| 'winscope.descriptor') | |
| gpu_track_event_descriptor_path = os.path.join( | |
| trace_protos_path, 'gpu', 'gpu_track_event.descriptor') | |
| extension_descriptors = [ | |
| chrome_extension_descriptor_path, test_extensions_descriptor_path, | |
| winscope_extensions_descriptor_path, gpu_track_event_descriptor_path | |
| ] | |
| elif args.descriptor and not args.out: | |
| trace_descriptor_path = args.descriptor | |
| extension_descriptors = [] | |
| else: | |
| raise RuntimeError( | |
| 'Exactly one of --out and --descriptor should be provided') | |
| if args.extension_descriptor: | |
| extension_descriptors.extend(args.extension_descriptor) | |
| trace_path = args.trace_path | |
| if trace_path.endswith('.py'): | |
| serialize_python_trace(ROOT_DIR, trace_descriptor_path, | |
| extension_descriptors, trace_path, sys.stdout.buffer) | |
| elif trace_path.endswith('.textproto'): | |
| serialize_textproto_trace(trace_descriptor_path, extension_descriptors, | |
| trace_path, sys.stdout.buffer) | |
| else: | |
| raise RuntimeError('Invalid extension for unserialized trace file') | |
| return 0 | |
| if __name__ == '__main__': | |
| sys.exit(main()) |