--- /dev/null
+import bt2
+import math
+
+bt2.register_plugin(__name__, "test_debug_info")
+
+
+class CompleteIter(bt2._UserMessageIterator):
+ def __init__(self, config, output_port):
+ ec = output_port.user_data
+ sc = ec.stream_class
+ tc = sc.trace_class
+
+ trace = tc()
+ stream = trace.create_stream(sc)
+
+ ev = self._create_event_message(ec, stream, default_clock_snapshot=123)
+
+ ev.event.payload_field["bool"] = False
+ ev.event.payload_field["real_single"] = 2.0
+ ev.event.payload_field["real_double"] = math.pi
+ ev.event.payload_field["int32"] = 121
+ ev.event.payload_field["int3"] = -1
+ ev.event.payload_field["int9_hex"] = -92
+ ev.event.payload_field["uint32"] = 121
+ ev.event.payload_field["uint61"] = 299792458
+ ev.event.payload_field["uint5_oct"] = 29
+ ev.event.payload_field["struct"]['str'] = "Rotisserie St-Hubert"
+ ev.event.payload_field["struct"]['option_real'] = math.pi
+ ev.event.payload_field["string"] = "ð"
+ ev.event.payload_field["dyn_array"] = [1.2, 2 / 3, 42.3, math.pi]
+ ev.event.payload_field["dyn_array_len"] = 4
+ ev.event.payload_field["dyn_array_with_len"] = [5.2, 5 / 3, 42.5, math.pi * 12]
+ ev.event.payload_field["sta_array"] = ['ð°', 'ðĶī', ' ð']
+ ev.event.payload_field["option_none"]
+ ev.event.payload_field["option_some"] = "NORMANDIN"
+ ev.event.payload_field["option_bool_selector"] = True
+ ev.event.payload_field["option_bool"] = "Mike's"
+ ev.event.payload_field["option_int_selector"] = 1
+ ev.event.payload_field["option_int"] = "Barbies resto bar grill"
+ ev.event.payload_field['variant'].selected_option_index = 0
+ ev.event.payload_field["variant"] = "Couche-Tard"
+
+ self._msgs = [
+ self._create_stream_beginning_message(stream),
+ ev,
+ self._create_stream_end_message(stream),
+ ]
+
+ def __next__(self):
+ if len(self._msgs) > 0:
+ return self._msgs.pop(0)
+ else:
+ raise StopIteration
+
+
+@bt2.plugin_component_class
+class CompleteSrc(bt2._UserSourceComponent, message_iterator_class=CompleteIter):
+ def __init__(self, config, params, obj):
+ tc = self._create_trace_class()
+ cc = self._create_clock_class()
+ sc = tc.create_stream_class(default_clock_class=cc)
+
+ dyn_array_elem_fc = tc.create_double_precision_real_field_class()
+ dyn_array_with_len_elem_fc = tc.create_double_precision_real_field_class()
+ dyn_array_with_len_fc = tc.create_unsigned_integer_field_class(19)
+ sta_array_elem_fc = tc.create_string_field_class()
+ option_some_fc = tc.create_string_field_class()
+ variant_fc = tc.create_variant_field_class()
+ variant_fc.append_option(
+ name='var_str', field_class=tc.create_string_field_class()
+ )
+ option_none_fc = tc.create_double_precision_real_field_class()
+ struct_fc = tc.create_structure_field_class()
+ struct_option_fc = tc.create_double_precision_real_field_class()
+ struct_fc.append_member('str', tc.create_string_field_class())
+ struct_fc.append_member(
+ 'option_real',
+ tc.create_option_without_selector_field_class(struct_option_fc),
+ )
+ option_bool_selector_fc = tc.create_bool_field_class()
+ option_int_selector_fc = tc.create_unsigned_integer_field_class(8)
+
+ payload = tc.create_structure_field_class()
+ payload += [
+ ("bool", tc.create_bool_field_class()),
+ ("real_single", tc.create_single_precision_real_field_class()),
+ ("real_double", tc.create_double_precision_real_field_class()),
+ ("int32", tc.create_signed_integer_field_class(32)),
+ ("int3", tc.create_signed_integer_field_class(3)),
+ (
+ "int9_hex",
+ tc.create_signed_integer_field_class(
+ 9, preferred_display_base=bt2.IntegerDisplayBase.HEXADECIMAL
+ ),
+ ),
+ ("uint32", tc.create_unsigned_integer_field_class(32)),
+ ("uint61", tc.create_unsigned_integer_field_class(61)),
+ (
+ "uint5_oct",
+ tc.create_unsigned_integer_field_class(
+ 5, preferred_display_base=bt2.IntegerDisplayBase.OCTAL
+ ),
+ ),
+ ("struct", struct_fc),
+ ("string", tc.create_string_field_class()),
+ ("dyn_array", tc.create_dynamic_array_field_class(dyn_array_elem_fc)),
+ ("dyn_array_len", dyn_array_with_len_fc),
+ (
+ "dyn_array_with_len",
+ tc.create_dynamic_array_field_class(
+ dyn_array_with_len_elem_fc, length_fc=dyn_array_with_len_fc
+ ),
+ ),
+ ("sta_array", tc.create_dynamic_array_field_class(sta_array_elem_fc)),
+ (
+ "option_none",
+ tc.create_option_without_selector_field_class(option_none_fc),
+ ),
+ (
+ "option_some",
+ tc.create_option_without_selector_field_class(option_some_fc),
+ ),
+ ("option_bool_selector", option_bool_selector_fc),
+ (
+ "option_bool",
+ tc.create_option_with_bool_selector_field_class(
+ tc.create_string_field_class(), option_bool_selector_fc
+ ),
+ ),
+ (
+ "option_bool_reversed",
+ tc.create_option_with_bool_selector_field_class(
+ tc.create_string_field_class(),
+ option_bool_selector_fc,
+ selector_is_reversed=True,
+ ),
+ ),
+ ("option_int_selector", option_int_selector_fc),
+ (
+ "option_int",
+ tc.create_option_with_integer_selector_field_class(
+ tc.create_string_field_class(),
+ option_int_selector_fc,
+ bt2.UnsignedIntegerRangeSet([(1, 3), (18, 44)]),
+ ),
+ ),
+ ("variant", variant_fc),
+ ]
+ ec = sc.create_event_class(name="my-event", payload_field_class=payload)
+
+ self._add_output_port("some-name", ec)