| #!/usr/bin/env python3 |
| # Copyright (C) 2022 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 os import sys, path |
| |
| import synth_common |
| |
| PROCESS_A_NAME = 'test_process_a' |
| PROCESS_B_NAME = 'test_process_b' |
| PROCESS_C_NAME = 'test_process_c' |
| PROCESS_A_PID = 1 |
| PROCESS_B_PID = 2 |
| PROCESS_C_PID = 3 |
| PROCESS_A_PPID = 4 |
| PROCESS_B_PPID = 5 |
| PROCESS_C_PPID = 6 |
| PROCESS_A_TID = 7 |
| # These values need to be the same to keep track of process ids in kernel space |
| PROCESS_B_TID = PROCESS_B_PID |
| PROCESS_C_TID = PROCESS_C_PID |
| |
| trace = synth_common.create_trace() |
| trace.add_packet() |
| trace.add_process(PROCESS_A_PID, PROCESS_A_PPID, PROCESS_A_NAME) |
| trace.add_process(PROCESS_B_PID, PROCESS_B_PPID, PROCESS_B_NAME) |
| trace.add_process(PROCESS_C_PID, PROCESS_C_PPID, PROCESS_C_NAME) |
| trace.add_thread(PROCESS_A_TID, PROCESS_A_PID, cmdline='Binder') |
| trace.add_ftrace_packet(cpu=0) |
| |
| trace.add_binder_transaction( |
| transaction_id=1, |
| ts_start=1, |
| ts_end=2, |
| tid=PROCESS_A_TID, |
| pid=PROCESS_A_PID, |
| reply_id=2, |
| reply_ts_start=3, |
| reply_ts_end=4, |
| reply_tid=PROCESS_B_TID, |
| reply_pid=PROCESS_B_PID) |
| trace.add_binder_transaction( |
| transaction_id=3, |
| ts_start=5, |
| ts_end=6, |
| tid=PROCESS_A_TID, |
| pid=PROCESS_A_PID, |
| reply_id=4, |
| reply_ts_start=7, |
| reply_ts_end=8, |
| reply_tid=PROCESS_C_TID, |
| reply_pid=PROCESS_C_PID) |
| |
| sys.stdout.buffer.write(trace.trace.SerializeToString()) |