Make all traces explicitly support the CTF 1.8 spec
[ctf-testsuite.git] / tests / 1.8 / stress / stream / pass / many-packets / test.py
CommitLineData
14fedc72
MD
1#!/usr/bin/env python3
2
3# Expects either "prepare" or "clean" argument
4
5import sys
6import os
7
8def arg_err():
9 print('Please specify "prepare <SIZE>" or "clean <SIZE>" as first argument.')
10 sys.exit(-1)
11
12if (len(sys.argv) <= 1):
13 arg_err()
14mode = sys.argv[1]
15if (len(sys.argv) <= 2):
16 arg_err()
17array_len = int(sys.argv[2])
18
19tracedir_name = './trace-' + str(array_len) + '/'
20output_metadata = tracedir_name + 'metadata'
21output_stream = tracedir_name + 'stream'
22
23
24def write_binary(f, arr):
25 f.write(bytes(arr))
26
27def generate_metadata(array_len):
28 # Generate metadata
29 metadata_str = \
30 ( '/* CTF 1.8 */\n'
31 '\n'
32 'typealias integer {{ size = 8; align = 8; signed = false; base = 10; }} := uint8_t;\n'
33 'typealias integer {{ size = 32; align = 32; signed = false; base = hex; }} := uint32_t;\n'
34 '\n'
35 'trace {{\n'
83fcdab0
FD
36 ' major = 1;\n'
37 ' minor = 8;\n'
14fedc72
MD
38 ' uuid = "2a6422d0-6cee-11e0-8c08-cb07d7b3a564";\n'
39 ' byte_order = le;\n'
40 '}};\n'
41 '\n'
42 'stream {{\n'
43 ' packet.context := struct {{\n'
44 ' uint8_t packet_size; \n'
45 ' }};\n'
46 '}};\n').format(array_len)
47 metadata_f = open(output_metadata, 'w')
48 metadata_f.write(metadata_str)
49 metadata_f.close()
50
51def generate_stream(array_len):
52 # Generate stream
53 stream_packet_header = [
54 0x8, # packet_size, in bits
55 ]
56 stream_f = open(output_stream, 'wb')
57 # generate trace content filled with 1-byte packets
58 for i in range(array_len):
59 write_binary(stream_f, stream_packet_header)
60 stream_f.close()
61
62def test_prepare():
63 print('Preparing test for many packets length ' + str(array_len) + ' bytes')
64 os.mkdir(tracedir_name)
65 generate_metadata(array_len)
66 generate_stream(array_len)
67
68def test_clean():
69 print('Cleaning up test for many packets length ' + str(array_len) + ' bytes')
70 try:
71 os.remove(output_metadata)
72 except:
73 pass
74 try:
75 os.remove(output_stream)
76 except:
77 pass
78 try:
79 os.rmdir(tracedir_name)
80 except:
81 pass
82
83if (mode == "prepare"):
84 test_clean()
85 test_prepare()
86elif (mode == "clean"):
87 test_clean()
88else:
89 arg_err()
This page took 0.024719 seconds and 4 git commands to generate.