xref: /aosp_15_r20/system/extras/tests/workloads/atrace-uncompress.py (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
1*288bf522SAndroid Build Coastguard Worker#
2*288bf522SAndroid Build Coastguard Worker# Uncompress a file generated via atrace -z
3*288bf522SAndroid Build Coastguard Worker#
4*288bf522SAndroid Build Coastguard Worker# Usage: python atrace-uncompress.py infile > outfile
5*288bf522SAndroid Build Coastguard Worker#
6*288bf522SAndroid Build Coastguard Workerimport sys, zlib
7*288bf522SAndroid Build Coastguard Worker
8*288bf522SAndroid Build Coastguard Workerdef main():
9*288bf522SAndroid Build Coastguard Worker
10*288bf522SAndroid Build Coastguard Worker	if len(sys.argv) != 2:
11*288bf522SAndroid Build Coastguard Worker		print >> sys.stderr, ('Usage: %s inputfile' % sys.argv[0])
12*288bf522SAndroid Build Coastguard Worker		sys.exit(1)
13*288bf522SAndroid Build Coastguard Worker
14*288bf522SAndroid Build Coastguard Worker	infile = open(sys.argv[1], "rb")
15*288bf522SAndroid Build Coastguard Worker	out = infile.read()
16*288bf522SAndroid Build Coastguard Worker	parts = out.split('\nTRACE:', 1)
17*288bf522SAndroid Build Coastguard Worker
18*288bf522SAndroid Build Coastguard Worker	data = ''.join(parts[1])
19*288bf522SAndroid Build Coastguard Worker
20*288bf522SAndroid Build Coastguard Worker	# Remove CR characters
21*288bf522SAndroid Build Coastguard Worker	if data.startswith('\r\n'):
22*288bf522SAndroid Build Coastguard Worker		data = data.replace('\r\n', '\n')
23*288bf522SAndroid Build Coastguard Worker
24*288bf522SAndroid Build Coastguard Worker	# Skip the initial newline.
25*288bf522SAndroid Build Coastguard Worker	data = data[1:]
26*288bf522SAndroid Build Coastguard Worker
27*288bf522SAndroid Build Coastguard Worker	if not data:
28*288bf522SAndroid Build Coastguard Worker		print >> sys.stderr, ('No trace data found')
29*288bf522SAndroid Build Coastguard Worker		sys.exit(1)
30*288bf522SAndroid Build Coastguard Worker
31*288bf522SAndroid Build Coastguard Worker	out = zlib.decompress(data)
32*288bf522SAndroid Build Coastguard Worker	print(out)
33*288bf522SAndroid Build Coastguard Worker
34*288bf522SAndroid Build Coastguard Workerif __name__ == '__main__':
35*288bf522SAndroid Build Coastguard Worker	main()
36