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