From: Philippe Proulx Date: Mon, 29 May 2017 19:33:55 +0000 (-0400) Subject: Fix: test_ir_visit.c: create valid SC PC/EH and trace packet header X-Git-Url: http://drtracing.org/?a=commitdiff_plain;h=c2aff3ff8f03e4aafb2ab4539bdac6b726d8c2f1;p=deliverable%2Fbabeltrace.git Fix: test_ir_visit.c: create valid SC PC/EH and trace packet header Since CTF IR is more strict regarding the semantics of trace packet header, stream class packet context and event header field types, this test fails because the default packet context field type of a stream class which is not created for a CTF writer object contains `timestamp_begin` and `timestamp_end` fields which are not mapped to a clock class. Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- diff --git a/tests/lib/test_ir_visit.c b/tests/lib/test_ir_visit.c index 2c06fed89..758efc2ff 100644 --- a/tests/lib/test_ir_visit.c +++ b/tests/lib/test_ir_visit.c @@ -92,6 +92,71 @@ error: return NULL; } +static void set_stream_class_field_types( + struct bt_ctf_stream_class *stream_class) +{ + struct bt_ctf_field_type *packet_context_type; + struct bt_ctf_field_type *event_header_type; + struct bt_ctf_field_type *ft; + int ret; + + packet_context_type = bt_ctf_field_type_structure_create(); + assert(packet_context_type); + ft = bt_ctf_field_type_integer_create(32); + assert(ft); + ret = bt_ctf_field_type_structure_add_field(packet_context_type, + ft, "packet_size"); + assert(ret == 0); + bt_put(ft); + ft = bt_ctf_field_type_integer_create(32); + assert(ft); + ret = bt_ctf_field_type_structure_add_field(packet_context_type, + ft, "content_size"); + assert(ret == 0); + bt_put(ft); + + event_header_type = bt_ctf_field_type_structure_create(); + assert(event_header_type); + ft = bt_ctf_field_type_integer_create(32); + assert(ft); + ret = bt_ctf_field_type_structure_add_field(event_header_type, + ft, "id"); + assert(ret == 0); + bt_put(ft); + + ret = bt_ctf_stream_class_set_packet_context_type(stream_class, + packet_context_type); + assert(ret == 0); + ret = bt_ctf_stream_class_set_event_header_type(stream_class, + event_header_type); + assert(ret == 0); + + bt_put(packet_context_type); + bt_put(event_header_type); +} + +static void set_trace_packet_header(struct bt_ctf_trace *trace) +{ + struct bt_ctf_field_type *packet_header_type; + struct bt_ctf_field_type *ft; + int ret; + + packet_header_type = bt_ctf_field_type_structure_create(); + assert(packet_header_type); + ft = bt_ctf_field_type_integer_create(32); + assert(ft); + ret = bt_ctf_field_type_structure_add_field(packet_header_type, + ft, "stream_id"); + assert(ret == 0); + bt_put(ft); + + ret = bt_ctf_trace_set_packet_header_type(trace, + packet_header_type); + assert(ret == 0); + + bt_put(packet_header_type); +} + struct bt_ctf_trace *init_trace(void) { int ret; @@ -106,6 +171,9 @@ struct bt_ctf_trace *init_trace(void) goto end; } + set_trace_packet_header(trace); + set_stream_class_field_types(sc1); + set_stream_class_field_types(sc2); ret = bt_ctf_trace_set_native_byte_order(trace, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN); assert(ret == 0);