Commit | Line | Data |
---|---|---|
300b4c33 | 1 | #!/usr/bin/env python3 |
24a3136a DS |
2 | import unittest |
3 | import sys | |
4 | from babeltrace import * | |
5 | ||
6 | class TestBabeltracePythonModule(unittest.TestCase): | |
7 | ||
8 | def test_handle_decl(self): | |
9 | #Context creation, adding trace | |
10 | ctx = Context() | |
11 | trace_handle = ctx.add_trace( | |
12 | "ctf-traces/succeed/lttng-modules-2.0-pre5", | |
13 | "ctf") | |
14 | self.assertIsNotNone(trace_handle, "Error adding trace") | |
15 | ||
16 | #TraceHandle test | |
17 | ts_begin = trace_handle.get_timestamp_begin(ctx, CLOCK_REAL) | |
18 | ts_end = trace_handle.get_timestamp_end(ctx, CLOCK_REAL) | |
19 | self.assertGreater(ts_end, ts_begin, "Error get_timestamp from trace_handle") | |
20 | ||
21 | lst = ctf.get_event_decl_list(trace_handle, ctx) | |
22 | self.assertIsNotNone(lst, "Error get_event_decl_list") | |
23 | ||
24 | name = lst[0].get_name() | |
25 | self.assertIsNotNone(name) | |
26 | ||
27 | fields = lst[0].get_decl_fields(ctf.scope.EVENT_FIELDS) | |
28 | self.assertIsNotNone(fields, "Error getting FieldDecl list") | |
29 | ||
30 | if len(fields) > 0: | |
31 | self.assertIsNotNone(fields[0].get_name(), | |
32 | "Error getting name from FieldDecl") | |
33 | ||
34 | #Remove trace | |
35 | ctx.remove_trace(trace_handle) | |
36 | del ctx | |
37 | del trace_handle | |
38 | ||
39 | ||
40 | def test_iterator_event(self): | |
41 | #Context creation, adding trace | |
42 | ctx = Context() | |
43 | trace_handle = ctx.add_trace( | |
44 | "ctf-traces/succeed/lttng-modules-2.0-pre5", | |
45 | "ctf") | |
46 | self.assertIsNotNone(trace_handle, "Error adding trace") | |
47 | ||
48 | begin_pos = IterPos(SEEK_BEGIN) | |
49 | it = ctf.Iterator(ctx, begin_pos) | |
50 | self.assertIsNotNone(it, "Error creating iterator") | |
51 | ||
52 | event = it.read_event() | |
53 | self.assertIsNotNone(event, "Error reading event") | |
54 | ||
55 | handle = event.get_handle() | |
56 | self.assertIsNotNone(handle, "Error getting handle") | |
57 | ||
58 | context = event.get_context() | |
59 | self.assertIsNotNone(context, "Error getting context") | |
60 | ||
61 | name = "" | |
62 | while event is not None and name != "sched_switch": | |
63 | name = event.get_name() | |
64 | self.assertIsNotNone(name, "Error getting event name") | |
65 | ||
66 | ts = event.get_timestamp() | |
67 | self.assertGreaterEqual(ts, 0, "Error getting timestamp") | |
68 | ||
69 | cycles = event.get_cycles() | |
70 | self.assertGreaterEqual(cycles, 0, "Error getting cycles") | |
71 | ||
72 | if name == "sched_switch": | |
73 | scope = event.get_top_level_scope(ctf.scope.STREAM_PACKET_CONTEXT) | |
74 | self.assertIsNotNone(scope, "Error getting scope definition") | |
75 | ||
76 | field = event.get_field(scope, "cpu_id") | |
77 | prev_comm_str = field.get_uint64() | |
78 | self.assertEqual(ctf.field_error(), 0, "Error getting vec info") | |
79 | ||
80 | field_lst = event.get_field_list(scope) | |
81 | self.assertIsNotNone(field_lst, "Error getting field list") | |
82 | ||
83 | fname = field.field_name() | |
84 | self.assertIsNotNone(fname, "Error getting field name") | |
85 | ||
86 | ftype = field.field_type() | |
87 | self.assertIsNot(ftype, -1, "Error getting field type (unknown)") | |
88 | ||
89 | ret = it.next() | |
90 | self.assertGreaterEqual(ret, 0, "Error moving iterator") | |
91 | ||
92 | event = it.read_event() | |
93 | ||
94 | pos = it.get_pos() | |
95 | self.assertIsNotNone(pos._pos, "Error getting iterator position") | |
96 | ||
97 | ret = it.set_pos(pos) | |
98 | self.assertEqual(ret, 0, "Error setting iterator position") | |
99 | ||
100 | pos = it.create_time_pos(ts) | |
101 | self.assertIsNotNone(pos._pos, "Error creating time-based iterator position") | |
102 | ||
103 | del it, pos | |
104 | set_pos = IterPos(SEEK_TIME, ts) | |
105 | it = ctf.Iterator(ctx, begin_pos, set_pos) | |
106 | self.assertIsNotNone(it, "Error creating iterator with end_pos") | |
107 | ||
108 | ||
109 | def test_file_class(self): | |
110 | f = File("test-bitfield.c") | |
111 | self.assertIsNotNone(f, "Error opening file") | |
112 | f.close() | |
113 | ||
114 | ||
115 | if __name__ == "__main__": | |
116 | unittest.main() |