2 * test_bt_ctf_field_type_validation.c
4 * Babeltrace CTF IR field type validation test
6 * Copyright (c) 2016 Philippe Proulx <pproulx@efficios.com>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; under version 2 of the License.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License along
18 * with this program; if not, write to the Free Software Foundation, Inc.,
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #include <babeltrace/ctf-ir/field-types.h>
23 #include <babeltrace/ctf-ir/field-path.h>
24 #include <babeltrace/ctf-ir/event.h>
25 #include <babeltrace/ctf-ir/stream-class.h>
26 #include <babeltrace/ctf-ir/trace.h>
34 struct bt_ctf_field_type
*get_good_packet_header_type(void)
37 Generated by bt-ctfirtg using the following input:
97 length: trace.packet.header.iron.dust
102 length: trace.packet.header.stream_id
111 struct bt_ctf_field_type
*root
= NULL
;
112 struct bt_ctf_field_type
*root_magic
= NULL
;
113 struct bt_ctf_field_type
*root_uuid
= NULL
;
114 struct bt_ctf_field_type
*root_uuid_elem
= NULL
;
115 struct bt_ctf_field_type
*root_stream_id
= NULL
;
116 struct bt_ctf_field_type
*root_iron
= NULL
;
117 struct bt_ctf_field_type
*root_iron_listen
= NULL
;
118 struct bt_ctf_field_type
*root_iron_dust
= NULL
;
119 struct bt_ctf_field_type
*root_iron_parallel
= NULL
;
120 struct bt_ctf_field_type
*root_iron_parallel_int
= NULL
;
121 struct bt_ctf_field_type
*root_iron_fire
= NULL
;
122 struct bt_ctf_field_type
*root_iron_fire_word
= NULL
;
123 struct bt_ctf_field_type
*root_iron_fire_rabbit
= NULL
;
124 struct bt_ctf_field_type
*root_iron_fire_keen
= NULL
;
125 struct bt_ctf_field_type
*root_iron_fire_keen_elem
= NULL
;
126 struct bt_ctf_field_type
*root_iron_fire_keen_elem_RED
= NULL
;
127 struct bt_ctf_field_type
*root_iron_fire_keen_elem_BLUE
= NULL
;
128 struct bt_ctf_field_type
*root_iron_fire_keen_elem_BLUE_elem
= NULL
;
129 struct bt_ctf_field_type
*root_iron_fire_keen_elem_YELLOW
= NULL
;
130 struct bt_ctf_field_type
*root_iron_report
= NULL
;
131 struct bt_ctf_field_type
*root_iron_report_elem
= NULL
;
132 struct bt_ctf_field_type
*root_iron_group
= NULL
;
133 struct bt_ctf_field_type
*root_iron_group_elem
= NULL
;
134 struct bt_ctf_field_type
*root_serious
= NULL
;
137 root
= bt_ctf_field_type_structure_create();
139 ret
= bt_ctf_field_type_set_alignment(root
, 8);
141 root_magic
= bt_ctf_field_type_integer_create(32);
143 ret
= bt_ctf_field_type_integer_set_signed(root_magic
, 0);
145 ret
= bt_ctf_field_type_integer_set_base(root_magic
, 10);
147 ret
= bt_ctf_field_type_integer_set_encoding(root_magic
, CTF_STRING_NONE
);
149 ret
= bt_ctf_field_type_set_byte_order(root_magic
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
151 ret
= bt_ctf_field_type_set_alignment(root_magic
, 8);
153 ret
= bt_ctf_field_type_structure_add_field(root
, root_magic
, "magic");
155 root_uuid_elem
= bt_ctf_field_type_integer_create(8);
156 assert(root_uuid_elem
);
157 ret
= bt_ctf_field_type_integer_set_signed(root_uuid_elem
, 0);
159 ret
= bt_ctf_field_type_integer_set_base(root_uuid_elem
, 10);
161 ret
= bt_ctf_field_type_integer_set_encoding(root_uuid_elem
, CTF_STRING_NONE
);
163 ret
= bt_ctf_field_type_set_byte_order(root_uuid_elem
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
165 ret
= bt_ctf_field_type_set_alignment(root_uuid_elem
, 8);
167 root_uuid
= bt_ctf_field_type_array_create(root_uuid_elem
, 16);
169 ret
= bt_ctf_field_type_structure_add_field(root
, root_uuid
, "uuid");
171 root_stream_id
= bt_ctf_field_type_integer_create(32);
172 assert(root_stream_id
);
173 ret
= bt_ctf_field_type_integer_set_signed(root_stream_id
, 0);
175 ret
= bt_ctf_field_type_integer_set_base(root_stream_id
, 10);
177 ret
= bt_ctf_field_type_integer_set_encoding(root_stream_id
, CTF_STRING_NONE
);
179 ret
= bt_ctf_field_type_set_byte_order(root_stream_id
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
181 ret
= bt_ctf_field_type_set_alignment(root_stream_id
, 8);
183 ret
= bt_ctf_field_type_structure_add_field(root
, root_stream_id
, "stream_id");
185 root_iron
= bt_ctf_field_type_structure_create();
187 ret
= bt_ctf_field_type_set_alignment(root_iron
, 8);
189 root_iron_listen
= bt_ctf_field_type_string_create();
190 assert(root_iron_listen
);
191 ret
= bt_ctf_field_type_string_set_encoding(root_iron_listen
, CTF_STRING_UTF8
);
193 ret
= bt_ctf_field_type_structure_add_field(root_iron
, root_iron_listen
, "listen");
195 root_iron_dust
= bt_ctf_field_type_integer_create(23);
196 assert(root_iron_dust
);
197 ret
= bt_ctf_field_type_integer_set_signed(root_iron_dust
, 0);
199 ret
= bt_ctf_field_type_integer_set_base(root_iron_dust
, 10);
201 ret
= bt_ctf_field_type_integer_set_encoding(root_iron_dust
, CTF_STRING_NONE
);
203 ret
= bt_ctf_field_type_set_byte_order(root_iron_dust
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
205 ret
= bt_ctf_field_type_set_alignment(root_iron_dust
, 1);
207 ret
= bt_ctf_field_type_structure_add_field(root_iron
, root_iron_dust
, "dust");
209 root_iron_parallel_int
= bt_ctf_field_type_integer_create(10);
210 assert(root_iron_parallel_int
);
211 ret
= bt_ctf_field_type_integer_set_signed(root_iron_parallel_int
, 0);
213 ret
= bt_ctf_field_type_integer_set_base(root_iron_parallel_int
, 10);
215 ret
= bt_ctf_field_type_integer_set_encoding(root_iron_parallel_int
, CTF_STRING_NONE
);
217 ret
= bt_ctf_field_type_set_byte_order(root_iron_parallel_int
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
219 ret
= bt_ctf_field_type_set_alignment(root_iron_parallel_int
, 1);
221 root_iron_parallel
= bt_ctf_field_type_enumeration_create(root_iron_parallel_int
);
222 assert(root_iron_parallel
);
223 ret
= bt_ctf_field_type_enumeration_add_mapping(root_iron_parallel
, "RED", 0, 0);
225 ret
= bt_ctf_field_type_enumeration_add_mapping(root_iron_parallel
, "BLUE", 1, 1);
227 ret
= bt_ctf_field_type_enumeration_add_mapping(root_iron_parallel
, "YELLOW", 2, 2);
229 ret
= bt_ctf_field_type_structure_add_field(root_iron
, root_iron_parallel
, "parallel");
231 root_iron_fire
= bt_ctf_field_type_structure_create();
232 assert(root_iron_fire
);
233 ret
= bt_ctf_field_type_set_alignment(root_iron_fire
, 8);
235 root_iron_fire_word
= bt_ctf_field_type_integer_create(17);
236 assert(root_iron_fire_word
);
237 ret
= bt_ctf_field_type_integer_set_signed(root_iron_fire_word
, 0);
239 ret
= bt_ctf_field_type_integer_set_base(root_iron_fire_word
, 10);
241 ret
= bt_ctf_field_type_integer_set_encoding(root_iron_fire_word
, CTF_STRING_NONE
);
243 ret
= bt_ctf_field_type_set_byte_order(root_iron_fire_word
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
245 ret
= bt_ctf_field_type_set_alignment(root_iron_fire_word
, 1);
247 ret
= bt_ctf_field_type_structure_add_field(root_iron_fire
, root_iron_fire_word
, "word");
249 root_iron_fire_rabbit
= bt_ctf_field_type_string_create();
250 assert(root_iron_fire_rabbit
);
251 ret
= bt_ctf_field_type_string_set_encoding(root_iron_fire_rabbit
, CTF_STRING_UTF8
);
253 ret
= bt_ctf_field_type_structure_add_field(root_iron_fire
, root_iron_fire_rabbit
, "rabbit");
255 root_iron_fire_keen_elem
= bt_ctf_field_type_variant_create(NULL
, "iron.parallel");
256 assert(root_iron_fire_keen_elem
);
257 root_iron_fire_keen_elem_RED
= bt_ctf_field_type_string_create();
258 assert(root_iron_fire_keen_elem_RED
);
259 ret
= bt_ctf_field_type_string_set_encoding(root_iron_fire_keen_elem_RED
, CTF_STRING_UTF8
);
261 ret
= bt_ctf_field_type_variant_add_field(root_iron_fire_keen_elem
, root_iron_fire_keen_elem_RED
, "RED");
263 root_iron_fire_keen_elem_BLUE_elem
= bt_ctf_field_type_integer_create(5);
264 assert(root_iron_fire_keen_elem_BLUE_elem
);
265 ret
= bt_ctf_field_type_integer_set_signed(root_iron_fire_keen_elem_BLUE_elem
, 0);
267 ret
= bt_ctf_field_type_integer_set_base(root_iron_fire_keen_elem_BLUE_elem
, 10);
269 ret
= bt_ctf_field_type_integer_set_encoding(root_iron_fire_keen_elem_BLUE_elem
, CTF_STRING_NONE
);
271 ret
= bt_ctf_field_type_set_byte_order(root_iron_fire_keen_elem_BLUE_elem
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
273 ret
= bt_ctf_field_type_set_alignment(root_iron_fire_keen_elem_BLUE_elem
, 1);
275 root_iron_fire_keen_elem_BLUE
= bt_ctf_field_type_sequence_create(root_iron_fire_keen_elem_BLUE_elem
, "magic");
276 assert(root_iron_fire_keen_elem_BLUE
);
277 ret
= bt_ctf_field_type_variant_add_field(root_iron_fire_keen_elem
, root_iron_fire_keen_elem_BLUE
, "BLUE");
279 root_iron_fire_keen_elem_YELLOW
= bt_ctf_field_type_structure_create();
280 assert(root_iron_fire_keen_elem_YELLOW
);
281 ret
= bt_ctf_field_type_set_alignment(root_iron_fire_keen_elem_YELLOW
, 1);
283 ret
= bt_ctf_field_type_variant_add_field(root_iron_fire_keen_elem
, root_iron_fire_keen_elem_YELLOW
, "YELLOW");
285 root_iron_fire_keen
= bt_ctf_field_type_sequence_create(root_iron_fire_keen_elem
, "word");
286 assert(root_iron_fire_keen
);
287 ret
= bt_ctf_field_type_structure_add_field(root_iron_fire
, root_iron_fire_keen
, "keen");
289 ret
= bt_ctf_field_type_structure_add_field(root_iron
, root_iron_fire
, "fire");
291 root_iron_report_elem
= bt_ctf_field_type_string_create();
292 assert(root_iron_report_elem
);
293 ret
= bt_ctf_field_type_string_set_encoding(root_iron_report_elem
, CTF_STRING_UTF8
);
295 root_iron_report
= bt_ctf_field_type_sequence_create(root_iron_report_elem
, "trace.packet.header.iron.dust");
296 assert(root_iron_report
);
297 ret
= bt_ctf_field_type_structure_add_field(root_iron
, root_iron_report
, "report");
299 root_iron_group_elem
= bt_ctf_field_type_string_create();
300 assert(root_iron_group_elem
);
301 ret
= bt_ctf_field_type_string_set_encoding(root_iron_group_elem
, CTF_STRING_UTF8
);
303 root_iron_group
= bt_ctf_field_type_sequence_create(root_iron_group_elem
, "trace.packet.header.stream_id");
304 assert(root_iron_group
);
305 ret
= bt_ctf_field_type_structure_add_field(root_iron
, root_iron_group
, "group");
307 ret
= bt_ctf_field_type_structure_add_field(root
, root_iron
, "iron");
309 root_serious
= bt_ctf_field_type_integer_create(1);
310 assert(root_serious
);
311 ret
= bt_ctf_field_type_integer_set_signed(root_serious
, 0);
313 ret
= bt_ctf_field_type_integer_set_base(root_serious
, 10);
315 ret
= bt_ctf_field_type_integer_set_encoding(root_serious
, CTF_STRING_NONE
);
317 ret
= bt_ctf_field_type_set_byte_order(root_serious
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
319 ret
= bt_ctf_field_type_set_alignment(root_serious
, 1);
321 ret
= bt_ctf_field_type_structure_add_field(root
, root_serious
, "serious");
326 BT_PUT(root_uuid_elem
);
327 BT_PUT(root_stream_id
);
329 BT_PUT(root_iron_listen
);
330 BT_PUT(root_iron_dust
);
331 BT_PUT(root_iron_parallel
);
332 BT_PUT(root_iron_parallel_int
);
333 BT_PUT(root_iron_fire
);
334 BT_PUT(root_iron_fire_word
);
335 BT_PUT(root_iron_fire_rabbit
);
336 BT_PUT(root_iron_fire_keen
);
337 BT_PUT(root_iron_fire_keen_elem
);
338 BT_PUT(root_iron_fire_keen_elem_RED
);
339 BT_PUT(root_iron_fire_keen_elem_BLUE
);
340 BT_PUT(root_iron_fire_keen_elem_BLUE_elem
);
341 BT_PUT(root_iron_fire_keen_elem_YELLOW
);
342 BT_PUT(root_iron_report
);
343 BT_PUT(root_iron_report_elem
);
344 BT_PUT(root_iron_group
);
345 BT_PUT(root_iron_group_elem
);
346 BT_PUT(root_serious
);
352 struct bt_ctf_field_type
*get_good_packet_context_type(void)
355 Generated by bt-ctfirtg using the following input:
387 length: trace.packet.header.iron.fire.word
397 length: stream.packet.context.clover.oval
420 struct bt_ctf_field_type
*root
= NULL
;
421 struct bt_ctf_field_type
*root_placid
= NULL
;
422 struct bt_ctf_field_type
*root_meow
= NULL
;
423 struct bt_ctf_field_type
*root_serious
= NULL
;
424 struct bt_ctf_field_type
*root_naive
= NULL
;
425 struct bt_ctf_field_type
*root_naive_elem
= NULL
;
426 struct bt_ctf_field_type
*root_naive_elem_elem
= NULL
;
427 struct bt_ctf_field_type
*root_clover
= NULL
;
428 struct bt_ctf_field_type
*root_clover_oval
= NULL
;
429 struct bt_ctf_field_type
*root_clover_whole
= NULL
;
430 struct bt_ctf_field_type
*root_clover_whole_BLUE
= NULL
;
431 struct bt_ctf_field_type
*root_clover_whole_BLUE_elem
= NULL
;
432 struct bt_ctf_field_type
*root_clover_whole_RED
= NULL
;
433 struct bt_ctf_field_type
*root_clover_whole_YELLOW
= NULL
;
434 struct bt_ctf_field_type
*root_clover_egg
= NULL
;
435 struct bt_ctf_field_type
*root_clover_egg_elem
= NULL
;
436 struct bt_ctf_field_type
*root_clover_square
= NULL
;
437 struct bt_ctf_field_type
*root_clover_square_int
= NULL
;
438 struct bt_ctf_field_type
*root_clover_useful
= NULL
;
439 struct bt_ctf_field_type
*root_clover_useful_elem
= NULL
;
440 struct bt_ctf_field_type
*root_tart
= NULL
;
443 root
= bt_ctf_field_type_structure_create();
445 ret
= bt_ctf_field_type_set_alignment(root
, 8);
447 root_placid
= bt_ctf_field_type_integer_create(32);
449 ret
= bt_ctf_field_type_integer_set_signed(root_placid
, 0);
451 ret
= bt_ctf_field_type_integer_set_base(root_placid
, 10);
453 ret
= bt_ctf_field_type_integer_set_encoding(root_placid
, CTF_STRING_NONE
);
455 ret
= bt_ctf_field_type_set_byte_order(root_placid
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
457 ret
= bt_ctf_field_type_set_alignment(root_placid
, 8);
459 ret
= bt_ctf_field_type_structure_add_field(root
, root_placid
, "placid");
461 root_meow
= bt_ctf_field_type_string_create();
463 ret
= bt_ctf_field_type_string_set_encoding(root_meow
, CTF_STRING_UTF8
);
465 ret
= bt_ctf_field_type_structure_add_field(root
, root_meow
, "meow");
467 root_serious
= bt_ctf_field_type_integer_create(11);
468 assert(root_serious
);
469 ret
= bt_ctf_field_type_integer_set_signed(root_serious
, 0);
471 ret
= bt_ctf_field_type_integer_set_base(root_serious
, 10);
473 ret
= bt_ctf_field_type_integer_set_encoding(root_serious
, CTF_STRING_NONE
);
475 ret
= bt_ctf_field_type_set_byte_order(root_serious
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
477 ret
= bt_ctf_field_type_set_alignment(root_serious
, 1);
479 ret
= bt_ctf_field_type_structure_add_field(root
, root_serious
, "serious");
481 root_naive_elem_elem
= bt_ctf_field_type_string_create();
482 assert(root_naive_elem_elem
);
483 ret
= bt_ctf_field_type_string_set_encoding(root_naive_elem_elem
, CTF_STRING_UTF8
);
485 root_naive_elem
= bt_ctf_field_type_sequence_create(root_naive_elem_elem
, "placid");
486 assert(root_naive_elem
);
487 root_naive
= bt_ctf_field_type_array_create(root_naive_elem
, 17);
489 ret
= bt_ctf_field_type_structure_add_field(root
, root_naive
, "naive");
491 root_clover
= bt_ctf_field_type_structure_create();
493 ret
= bt_ctf_field_type_set_alignment(root_clover
, 1);
495 root_clover_oval
= bt_ctf_field_type_integer_create(17);
496 assert(root_clover_oval
);
497 ret
= bt_ctf_field_type_integer_set_signed(root_clover_oval
, 0);
499 ret
= bt_ctf_field_type_integer_set_base(root_clover_oval
, 10);
501 ret
= bt_ctf_field_type_integer_set_encoding(root_clover_oval
, CTF_STRING_NONE
);
503 ret
= bt_ctf_field_type_set_byte_order(root_clover_oval
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
505 ret
= bt_ctf_field_type_set_alignment(root_clover_oval
, 1);
507 ret
= bt_ctf_field_type_structure_add_field(root_clover
, root_clover_oval
, "oval");
509 root_clover_whole
= bt_ctf_field_type_variant_create(NULL
, "iron.parallel");
510 assert(root_clover_whole
);
511 root_clover_whole_BLUE_elem
= bt_ctf_field_type_string_create();
512 assert(root_clover_whole_BLUE_elem
);
513 ret
= bt_ctf_field_type_string_set_encoding(root_clover_whole_BLUE_elem
, CTF_STRING_UTF8
);
515 root_clover_whole_BLUE
= bt_ctf_field_type_sequence_create(root_clover_whole_BLUE_elem
, "trace.packet.header.iron.fire.word");
516 assert(root_clover_whole_BLUE
);
517 ret
= bt_ctf_field_type_variant_add_field(root_clover_whole
, root_clover_whole_BLUE
, "BLUE");
519 root_clover_whole_RED
= bt_ctf_field_type_integer_create(44);
520 assert(root_clover_whole_RED
);
521 ret
= bt_ctf_field_type_integer_set_signed(root_clover_whole_RED
, 0);
523 ret
= bt_ctf_field_type_integer_set_base(root_clover_whole_RED
, 10);
525 ret
= bt_ctf_field_type_integer_set_encoding(root_clover_whole_RED
, CTF_STRING_NONE
);
527 ret
= bt_ctf_field_type_set_byte_order(root_clover_whole_RED
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
529 ret
= bt_ctf_field_type_set_alignment(root_clover_whole_RED
, 1);
531 ret
= bt_ctf_field_type_variant_add_field(root_clover_whole
, root_clover_whole_RED
, "RED");
533 root_clover_whole_YELLOW
= bt_ctf_field_type_string_create();
534 assert(root_clover_whole_YELLOW
);
535 ret
= bt_ctf_field_type_string_set_encoding(root_clover_whole_YELLOW
, CTF_STRING_UTF8
);
537 ret
= bt_ctf_field_type_variant_add_field(root_clover_whole
, root_clover_whole_YELLOW
, "YELLOW");
539 ret
= bt_ctf_field_type_structure_add_field(root_clover
, root_clover_whole
, "whole");
541 root_clover_egg_elem
= bt_ctf_field_type_integer_create(55);
542 assert(root_clover_egg_elem
);
543 ret
= bt_ctf_field_type_integer_set_signed(root_clover_egg_elem
, 0);
545 ret
= bt_ctf_field_type_integer_set_base(root_clover_egg_elem
, 10);
547 ret
= bt_ctf_field_type_integer_set_encoding(root_clover_egg_elem
, CTF_STRING_NONE
);
549 ret
= bt_ctf_field_type_set_byte_order(root_clover_egg_elem
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
551 ret
= bt_ctf_field_type_set_alignment(root_clover_egg_elem
, 1);
553 root_clover_egg
= bt_ctf_field_type_sequence_create(root_clover_egg_elem
, "stream.packet.context.clover.oval");
554 assert(root_clover_egg
);
555 ret
= bt_ctf_field_type_structure_add_field(root_clover
, root_clover_egg
, "egg");
557 root_clover_square_int
= bt_ctf_field_type_integer_create(12);
558 assert(root_clover_square_int
);
559 ret
= bt_ctf_field_type_integer_set_signed(root_clover_square_int
, 0);
561 ret
= bt_ctf_field_type_integer_set_base(root_clover_square_int
, 10);
563 ret
= bt_ctf_field_type_integer_set_encoding(root_clover_square_int
, CTF_STRING_NONE
);
565 ret
= bt_ctf_field_type_set_byte_order(root_clover_square_int
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
567 ret
= bt_ctf_field_type_set_alignment(root_clover_square_int
, 1);
569 root_clover_square
= bt_ctf_field_type_enumeration_create(root_clover_square_int
);
570 assert(root_clover_square
);
571 ret
= bt_ctf_field_type_enumeration_add_mapping(root_clover_square
, "YOUNG", 0, 0);
573 ret
= bt_ctf_field_type_enumeration_add_mapping(root_clover_square
, "OLD", 1, 1);
575 ret
= bt_ctf_field_type_structure_add_field(root_clover
, root_clover_square
, "square");
577 root_clover_useful_elem
= bt_ctf_field_type_integer_create(2);
578 assert(root_clover_useful_elem
);
579 ret
= bt_ctf_field_type_integer_set_signed(root_clover_useful_elem
, 0);
581 ret
= bt_ctf_field_type_integer_set_base(root_clover_useful_elem
, 10);
583 ret
= bt_ctf_field_type_integer_set_encoding(root_clover_useful_elem
, CTF_STRING_NONE
);
585 ret
= bt_ctf_field_type_set_byte_order(root_clover_useful_elem
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
587 ret
= bt_ctf_field_type_set_alignment(root_clover_useful_elem
, 1);
589 root_clover_useful
= bt_ctf_field_type_sequence_create(root_clover_useful_elem
, "serious");
590 assert(root_clover_useful
);
591 ret
= bt_ctf_field_type_structure_add_field(root_clover
, root_clover_useful
, "useful");
593 ret
= bt_ctf_field_type_structure_add_field(root
, root_clover
, "clover");
595 root_tart
= bt_ctf_field_type_string_create();
597 ret
= bt_ctf_field_type_string_set_encoding(root_tart
, CTF_STRING_UTF8
);
599 ret
= bt_ctf_field_type_structure_add_field(root
, root_tart
, "tart");
604 BT_PUT(root_serious
);
606 BT_PUT(root_naive_elem
);
607 BT_PUT(root_naive_elem_elem
);
609 BT_PUT(root_clover_oval
);
610 BT_PUT(root_clover_whole
);
611 BT_PUT(root_clover_whole_BLUE
);
612 BT_PUT(root_clover_whole_BLUE_elem
);
613 BT_PUT(root_clover_whole_RED
);
614 BT_PUT(root_clover_whole_YELLOW
);
615 BT_PUT(root_clover_egg
);
616 BT_PUT(root_clover_egg_elem
);
617 BT_PUT(root_clover_square
);
618 BT_PUT(root_clover_square_int
);
619 BT_PUT(root_clover_useful
);
620 BT_PUT(root_clover_useful_elem
);
628 struct bt_ctf_field_type
*get_good_event_header_type(void)
631 Generated by bt-ctfirtg using the following input:
649 length: stream.packet.context.placid
656 length: trace.packet.header.serious
662 length: clover.whole.RED
670 length: action.special
677 struct bt_ctf_field_type
*root
= NULL
;
678 struct bt_ctf_field_type
*root_id
= NULL
;
679 struct bt_ctf_field_type
*root_timestamp
= NULL
;
680 struct bt_ctf_field_type
*root_action
= NULL
;
681 struct bt_ctf_field_type
*root_action_special
= NULL
;
682 struct bt_ctf_field_type
*root_action_lucky
= NULL
;
683 struct bt_ctf_field_type
*root_action_lucky_elem
= NULL
;
684 struct bt_ctf_field_type
*root_action_dream
= NULL
;
685 struct bt_ctf_field_type
*root_action_grandiose
= NULL
;
686 struct bt_ctf_field_type
*root_action_grandiose_elem
= NULL
;
687 struct bt_ctf_field_type
*root_stiff
= NULL
;
688 struct bt_ctf_field_type
*root_stiff_elem
= NULL
;
689 struct bt_ctf_field_type
*root_fruit
= NULL
;
690 struct bt_ctf_field_type
*root_fruit_apple
= NULL
;
691 struct bt_ctf_field_type
*root_fruit_apple_elem
= NULL
;
694 root
= bt_ctf_field_type_structure_create();
696 ret
= bt_ctf_field_type_set_alignment(root
, 8);
698 root_id
= bt_ctf_field_type_integer_create(17);
700 ret
= bt_ctf_field_type_integer_set_signed(root_id
, 0);
702 ret
= bt_ctf_field_type_integer_set_base(root_id
, 10);
704 ret
= bt_ctf_field_type_integer_set_encoding(root_id
, CTF_STRING_NONE
);
706 ret
= bt_ctf_field_type_set_byte_order(root_id
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
708 ret
= bt_ctf_field_type_set_alignment(root_id
, 1);
710 ret
= bt_ctf_field_type_structure_add_field(root
, root_id
, "id");
712 root_timestamp
= bt_ctf_field_type_integer_create(64);
713 assert(root_timestamp
);
714 ret
= bt_ctf_field_type_integer_set_signed(root_timestamp
, 0);
716 ret
= bt_ctf_field_type_integer_set_base(root_timestamp
, 10);
718 ret
= bt_ctf_field_type_integer_set_encoding(root_timestamp
, CTF_STRING_NONE
);
720 ret
= bt_ctf_field_type_set_byte_order(root_timestamp
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
722 ret
= bt_ctf_field_type_set_alignment(root_timestamp
, 8);
724 ret
= bt_ctf_field_type_structure_add_field(root
, root_timestamp
, "timestamp");
726 root_action
= bt_ctf_field_type_structure_create();
728 ret
= bt_ctf_field_type_set_alignment(root_action
, 8);
730 root_action_special
= bt_ctf_field_type_integer_create(17);
731 assert(root_action_special
);
732 ret
= bt_ctf_field_type_integer_set_signed(root_action_special
, 0);
734 ret
= bt_ctf_field_type_integer_set_base(root_action_special
, 10);
736 ret
= bt_ctf_field_type_integer_set_encoding(root_action_special
, CTF_STRING_NONE
);
738 ret
= bt_ctf_field_type_set_byte_order(root_action_special
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
740 ret
= bt_ctf_field_type_set_alignment(root_action_special
, 1);
742 ret
= bt_ctf_field_type_structure_add_field(root_action
, root_action_special
, "special");
744 root_action_lucky_elem
= bt_ctf_field_type_string_create();
745 assert(root_action_lucky_elem
);
746 ret
= bt_ctf_field_type_string_set_encoding(root_action_lucky_elem
, CTF_STRING_UTF8
);
748 root_action_lucky
= bt_ctf_field_type_sequence_create(root_action_lucky_elem
, "stream.packet.context.placid");
749 assert(root_action_lucky
);
750 ret
= bt_ctf_field_type_structure_add_field(root_action
, root_action_lucky
, "lucky");
752 root_action_dream
= bt_ctf_field_type_string_create();
753 assert(root_action_dream
);
754 ret
= bt_ctf_field_type_string_set_encoding(root_action_dream
, CTF_STRING_UTF8
);
756 ret
= bt_ctf_field_type_structure_add_field(root_action
, root_action_dream
, "dream");
758 root_action_grandiose_elem
= bt_ctf_field_type_integer_create(3);
759 assert(root_action_grandiose_elem
);
760 ret
= bt_ctf_field_type_integer_set_signed(root_action_grandiose_elem
, 0);
762 ret
= bt_ctf_field_type_integer_set_base(root_action_grandiose_elem
, 10);
764 ret
= bt_ctf_field_type_integer_set_encoding(root_action_grandiose_elem
, CTF_STRING_NONE
);
766 ret
= bt_ctf_field_type_set_byte_order(root_action_grandiose_elem
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
768 ret
= bt_ctf_field_type_set_alignment(root_action_grandiose_elem
, 1);
770 root_action_grandiose
= bt_ctf_field_type_sequence_create(root_action_grandiose_elem
, "trace.packet.header.serious");
771 assert(root_action_grandiose
);
772 ret
= bt_ctf_field_type_structure_add_field(root_action
, root_action_grandiose
, "grandiose");
774 ret
= bt_ctf_field_type_structure_add_field(root
, root_action
, "action");
776 root_stiff_elem
= bt_ctf_field_type_string_create();
777 assert(root_stiff_elem
);
778 ret
= bt_ctf_field_type_string_set_encoding(root_stiff_elem
, CTF_STRING_UTF8
);
780 root_stiff
= bt_ctf_field_type_sequence_create(root_stiff_elem
, "clover.whole.RED");
782 ret
= bt_ctf_field_type_structure_add_field(root
, root_stiff
, "stiff");
784 root_fruit
= bt_ctf_field_type_structure_create();
786 ret
= bt_ctf_field_type_set_alignment(root_fruit
, 1);
788 root_fruit_apple_elem
= bt_ctf_field_type_integer_create(5);
789 assert(root_fruit_apple_elem
);
790 ret
= bt_ctf_field_type_integer_set_signed(root_fruit_apple_elem
, 0);
792 ret
= bt_ctf_field_type_integer_set_base(root_fruit_apple_elem
, 10);
794 ret
= bt_ctf_field_type_integer_set_encoding(root_fruit_apple_elem
, CTF_STRING_NONE
);
796 ret
= bt_ctf_field_type_set_byte_order(root_fruit_apple_elem
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
798 ret
= bt_ctf_field_type_set_alignment(root_fruit_apple_elem
, 1);
800 root_fruit_apple
= bt_ctf_field_type_sequence_create(root_fruit_apple_elem
, "action.special");
801 assert(root_fruit_apple
);
802 ret
= bt_ctf_field_type_structure_add_field(root_fruit
, root_fruit_apple
, "apple");
804 ret
= bt_ctf_field_type_structure_add_field(root
, root_fruit
, "fruit");
808 BT_PUT(root_timestamp
);
810 BT_PUT(root_action_special
);
811 BT_PUT(root_action_lucky
);
812 BT_PUT(root_action_lucky_elem
);
813 BT_PUT(root_action_dream
);
814 BT_PUT(root_action_grandiose
);
815 BT_PUT(root_action_grandiose_elem
);
817 BT_PUT(root_stiff_elem
);
819 BT_PUT(root_fruit_apple
);
820 BT_PUT(root_fruit_apple_elem
);
826 struct bt_ctf_field_type
*get_good_stream_event_context_type(void)
829 Generated by bt-ctfirtg using the following input:
859 length: stream.packet.context.placid
862 length: trace.packet.header.iron.dust
865 length: stream.event.context.face.magic
874 struct bt_ctf_field_type
*root
= NULL
;
875 struct bt_ctf_field_type
*root_face
= NULL
;
876 struct bt_ctf_field_type
*root_face_branch
= NULL
;
877 struct bt_ctf_field_type
*root_face_branch_elem
= NULL
;
878 struct bt_ctf_field_type
*root_face_income
= NULL
;
879 struct bt_ctf_field_type
*root_face_income_elem
= NULL
;
880 struct bt_ctf_field_type
*root_face_magic
= NULL
;
881 struct bt_ctf_field_type
*root_face_lucky
= NULL
;
882 struct bt_ctf_field_type
*root_face_lucky_elem
= NULL
;
883 struct bt_ctf_field_type
*root_cats
= NULL
;
884 struct bt_ctf_field_type
*root_dream
= NULL
;
885 struct bt_ctf_field_type
*root_dream_elem
= NULL
;
886 struct bt_ctf_field_type
*root_dream_elem_elem
= NULL
;
887 struct bt_ctf_field_type
*root_dream_elem_elem_elem
= NULL
;
888 struct bt_ctf_field_type
*root_stream_id
= NULL
;
891 root
= bt_ctf_field_type_structure_create();
893 ret
= bt_ctf_field_type_set_alignment(root
, 8);
895 root_face
= bt_ctf_field_type_structure_create();
897 ret
= bt_ctf_field_type_set_alignment(root_face
, 8);
899 root_face_branch_elem
= bt_ctf_field_type_string_create();
900 assert(root_face_branch_elem
);
901 ret
= bt_ctf_field_type_string_set_encoding(root_face_branch_elem
, CTF_STRING_UTF8
);
903 root_face_branch
= bt_ctf_field_type_sequence_create(root_face_branch_elem
, "serious");
904 assert(root_face_branch
);
905 ret
= bt_ctf_field_type_structure_add_field(root_face
, root_face_branch
, "branch");
907 root_face_income_elem
= bt_ctf_field_type_string_create();
908 assert(root_face_income_elem
);
909 ret
= bt_ctf_field_type_string_set_encoding(root_face_income_elem
, CTF_STRING_UTF8
);
911 root_face_income
= bt_ctf_field_type_sequence_create(root_face_income_elem
, "magic");
912 assert(root_face_income
);
913 ret
= bt_ctf_field_type_structure_add_field(root_face
, root_face_income
, "income");
915 root_face_magic
= bt_ctf_field_type_integer_create(23);
916 assert(root_face_magic
);
917 ret
= bt_ctf_field_type_integer_set_signed(root_face_magic
, 0);
919 ret
= bt_ctf_field_type_integer_set_base(root_face_magic
, 10);
921 ret
= bt_ctf_field_type_integer_set_encoding(root_face_magic
, CTF_STRING_NONE
);
923 ret
= bt_ctf_field_type_set_byte_order(root_face_magic
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
925 ret
= bt_ctf_field_type_set_alignment(root_face_magic
, 1);
927 ret
= bt_ctf_field_type_structure_add_field(root_face
, root_face_magic
, "magic");
929 root_face_lucky_elem
= bt_ctf_field_type_string_create();
930 assert(root_face_lucky_elem
);
931 ret
= bt_ctf_field_type_string_set_encoding(root_face_lucky_elem
, CTF_STRING_UTF8
);
933 root_face_lucky
= bt_ctf_field_type_sequence_create(root_face_lucky_elem
, "magic");
934 assert(root_face_lucky
);
935 ret
= bt_ctf_field_type_structure_add_field(root_face
, root_face_lucky
, "lucky");
937 ret
= bt_ctf_field_type_structure_add_field(root
, root_face
, "face");
939 root_cats
= bt_ctf_field_type_integer_create(5);
941 ret
= bt_ctf_field_type_integer_set_signed(root_cats
, 0);
943 ret
= bt_ctf_field_type_integer_set_base(root_cats
, 10);
945 ret
= bt_ctf_field_type_integer_set_encoding(root_cats
, CTF_STRING_NONE
);
947 ret
= bt_ctf_field_type_set_byte_order(root_cats
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
949 ret
= bt_ctf_field_type_set_alignment(root_cats
, 1);
951 ret
= bt_ctf_field_type_structure_add_field(root
, root_cats
, "cats");
953 root_dream_elem_elem_elem
= bt_ctf_field_type_string_create();
954 assert(root_dream_elem_elem_elem
);
955 ret
= bt_ctf_field_type_string_set_encoding(root_dream_elem_elem_elem
, CTF_STRING_UTF8
);
957 root_dream_elem_elem
= bt_ctf_field_type_sequence_create(root_dream_elem_elem_elem
, "stream.event.context.face.magic");
958 assert(root_dream_elem_elem
);
959 root_dream_elem
= bt_ctf_field_type_sequence_create(root_dream_elem_elem
, "trace.packet.header.iron.dust");
960 assert(root_dream_elem
);
961 root_dream
= bt_ctf_field_type_sequence_create(root_dream_elem
, "stream.packet.context.placid");
963 ret
= bt_ctf_field_type_structure_add_field(root
, root_dream
, "dream");
965 root_stream_id
= bt_ctf_field_type_integer_create(9);
966 assert(root_stream_id
);
967 ret
= bt_ctf_field_type_integer_set_signed(root_stream_id
, 0);
969 ret
= bt_ctf_field_type_integer_set_base(root_stream_id
, 10);
971 ret
= bt_ctf_field_type_integer_set_encoding(root_stream_id
, CTF_STRING_NONE
);
973 ret
= bt_ctf_field_type_set_byte_order(root_stream_id
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
975 ret
= bt_ctf_field_type_set_alignment(root_stream_id
, 1);
977 ret
= bt_ctf_field_type_structure_add_field(root
, root_stream_id
, "stream_id");
981 BT_PUT(root_face_branch
);
982 BT_PUT(root_face_branch_elem
);
983 BT_PUT(root_face_income
);
984 BT_PUT(root_face_income_elem
);
985 BT_PUT(root_face_magic
);
986 BT_PUT(root_face_lucky
);
987 BT_PUT(root_face_lucky_elem
);
990 BT_PUT(root_dream_elem
);
991 BT_PUT(root_dream_elem_elem
);
992 BT_PUT(root_dream_elem_elem_elem
);
993 BT_PUT(root_stream_id
);
999 struct bt_ctf_field_type
*get_good_event_context_type(void)
1002 Generated by bt-ctfirtg using the following input:
1024 length: action.special
1037 length: iron.fire.word
1048 length: trace.packet.header.iron.fire.word
1053 length: stream.packet.context.clover.oval
1058 length: stream.event.header.action.special
1063 length: stream.event.context.face.magic
1073 length: event.context.film
1079 struct bt_ctf_field_type
*root
= NULL
;
1080 struct bt_ctf_field_type
*root_film
= NULL
;
1081 struct bt_ctf_field_type
*root_berry
= NULL
;
1082 struct bt_ctf_field_type
*root_berry_pine
= NULL
;
1083 struct bt_ctf_field_type
*root_berry_pine_elem
= NULL
;
1084 struct bt_ctf_field_type
*root_berry_porter
= NULL
;
1085 struct bt_ctf_field_type
*root_berry_porter_elem
= NULL
;
1086 struct bt_ctf_field_type
*root_berry_mice
= NULL
;
1087 struct bt_ctf_field_type
*root_berry_mice_elem
= NULL
;
1088 struct bt_ctf_field_type
*root_berry_third
= NULL
;
1089 struct bt_ctf_field_type
*root_berry_guard
= NULL
;
1090 struct bt_ctf_field_type
*root_berry_guard_elem
= NULL
;
1091 struct bt_ctf_field_type
*root_berry_one
= NULL
;
1092 struct bt_ctf_field_type
*root_berry_one_elem
= NULL
;
1093 struct bt_ctf_field_type
*root_cats
= NULL
;
1094 struct bt_ctf_field_type
*root_loud
= NULL
;
1095 struct bt_ctf_field_type
*root_loud_toys
= NULL
;
1096 struct bt_ctf_field_type
*root_loud_toys_elem
= NULL
;
1097 struct bt_ctf_field_type
*root_loud_spoon
= NULL
;
1098 struct bt_ctf_field_type
*root_loud_spoon_elem
= NULL
;
1099 struct bt_ctf_field_type
*root_loud_turkey
= NULL
;
1100 struct bt_ctf_field_type
*root_loud_turkey_elem
= NULL
;
1101 struct bt_ctf_field_type
*root_loud_inform
= NULL
;
1102 struct bt_ctf_field_type
*root_loud_inform_elem
= NULL
;
1103 struct bt_ctf_field_type
*root_loud_odd
= NULL
;
1104 struct bt_ctf_field_type
*root_loud_odd_elem
= NULL
;
1105 struct bt_ctf_field_type
*root_loud_amuck
= NULL
;
1106 struct bt_ctf_field_type
*root_loud_amuck_elem
= NULL
;
1109 root
= bt_ctf_field_type_structure_create();
1111 ret
= bt_ctf_field_type_set_alignment(root
, 8);
1113 root_film
= bt_ctf_field_type_integer_create(19);
1115 ret
= bt_ctf_field_type_integer_set_signed(root_film
, 0);
1117 ret
= bt_ctf_field_type_integer_set_base(root_film
, 10);
1119 ret
= bt_ctf_field_type_integer_set_encoding(root_film
, CTF_STRING_NONE
);
1121 ret
= bt_ctf_field_type_set_byte_order(root_film
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
1123 ret
= bt_ctf_field_type_set_alignment(root_film
, 1);
1125 ret
= bt_ctf_field_type_structure_add_field(root
, root_film
, "film");
1127 root_berry
= bt_ctf_field_type_structure_create();
1129 ret
= bt_ctf_field_type_set_alignment(root_berry
, 8);
1131 root_berry_pine_elem
= bt_ctf_field_type_string_create();
1132 assert(root_berry_pine_elem
);
1133 ret
= bt_ctf_field_type_string_set_encoding(root_berry_pine_elem
, CTF_STRING_UTF8
);
1135 root_berry_pine
= bt_ctf_field_type_sequence_create(root_berry_pine_elem
, "stream_id");
1136 assert(root_berry_pine
);
1137 ret
= bt_ctf_field_type_structure_add_field(root_berry
, root_berry_pine
, "pine");
1139 root_berry_porter_elem
= bt_ctf_field_type_string_create();
1140 assert(root_berry_porter_elem
);
1141 ret
= bt_ctf_field_type_string_set_encoding(root_berry_porter_elem
, CTF_STRING_UTF8
);
1143 root_berry_porter
= bt_ctf_field_type_sequence_create(root_berry_porter_elem
, "face.magic");
1144 assert(root_berry_porter
);
1145 ret
= bt_ctf_field_type_structure_add_field(root_berry
, root_berry_porter
, "porter");
1147 root_berry_mice_elem
= bt_ctf_field_type_string_create();
1148 assert(root_berry_mice_elem
);
1149 ret
= bt_ctf_field_type_string_set_encoding(root_berry_mice_elem
, CTF_STRING_UTF8
);
1151 root_berry_mice
= bt_ctf_field_type_sequence_create(root_berry_mice_elem
, "action.special");
1152 assert(root_berry_mice
);
1153 ret
= bt_ctf_field_type_structure_add_field(root_berry
, root_berry_mice
, "mice");
1155 root_berry_third
= bt_ctf_field_type_integer_create(18);
1156 assert(root_berry_third
);
1157 ret
= bt_ctf_field_type_integer_set_signed(root_berry_third
, 0);
1159 ret
= bt_ctf_field_type_integer_set_base(root_berry_third
, 10);
1161 ret
= bt_ctf_field_type_integer_set_encoding(root_berry_third
, CTF_STRING_NONE
);
1163 ret
= bt_ctf_field_type_set_byte_order(root_berry_third
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
1165 ret
= bt_ctf_field_type_set_alignment(root_berry_third
, 1);
1167 ret
= bt_ctf_field_type_structure_add_field(root_berry
, root_berry_third
, "third");
1169 root_berry_guard_elem
= bt_ctf_field_type_string_create();
1170 assert(root_berry_guard_elem
);
1171 ret
= bt_ctf_field_type_string_set_encoding(root_berry_guard_elem
, CTF_STRING_UTF8
);
1173 root_berry_guard
= bt_ctf_field_type_sequence_create(root_berry_guard_elem
, "clover.oval");
1174 assert(root_berry_guard
);
1175 ret
= bt_ctf_field_type_structure_add_field(root_berry
, root_berry_guard
, "guard");
1177 root_berry_one_elem
= bt_ctf_field_type_string_create();
1178 assert(root_berry_one_elem
);
1179 ret
= bt_ctf_field_type_string_set_encoding(root_berry_one_elem
, CTF_STRING_UTF8
);
1181 root_berry_one
= bt_ctf_field_type_sequence_create(root_berry_one_elem
, "iron.fire.word");
1182 assert(root_berry_one
);
1183 ret
= bt_ctf_field_type_structure_add_field(root_berry
, root_berry_one
, "one");
1185 ret
= bt_ctf_field_type_structure_add_field(root
, root_berry
, "berry");
1187 root_cats
= bt_ctf_field_type_integer_create(55);
1189 ret
= bt_ctf_field_type_integer_set_signed(root_cats
, 0);
1191 ret
= bt_ctf_field_type_integer_set_base(root_cats
, 10);
1193 ret
= bt_ctf_field_type_integer_set_encoding(root_cats
, CTF_STRING_NONE
);
1195 ret
= bt_ctf_field_type_set_byte_order(root_cats
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
1197 ret
= bt_ctf_field_type_set_alignment(root_cats
, 1);
1199 ret
= bt_ctf_field_type_structure_add_field(root
, root_cats
, "cats");
1201 root_loud
= bt_ctf_field_type_structure_create();
1203 ret
= bt_ctf_field_type_set_alignment(root_loud
, 8);
1205 root_loud_toys_elem
= bt_ctf_field_type_string_create();
1206 assert(root_loud_toys_elem
);
1207 ret
= bt_ctf_field_type_string_set_encoding(root_loud_toys_elem
, CTF_STRING_UTF8
);
1209 root_loud_toys
= bt_ctf_field_type_sequence_create(root_loud_toys_elem
, "trace.packet.header.iron.fire.word");
1210 assert(root_loud_toys
);
1211 ret
= bt_ctf_field_type_structure_add_field(root_loud
, root_loud_toys
, "toys");
1213 root_loud_spoon_elem
= bt_ctf_field_type_string_create();
1214 assert(root_loud_spoon_elem
);
1215 ret
= bt_ctf_field_type_string_set_encoding(root_loud_spoon_elem
, CTF_STRING_UTF8
);
1217 root_loud_spoon
= bt_ctf_field_type_sequence_create(root_loud_spoon_elem
, "stream.packet.context.clover.oval");
1218 assert(root_loud_spoon
);
1219 ret
= bt_ctf_field_type_structure_add_field(root_loud
, root_loud_spoon
, "spoon");
1221 root_loud_turkey_elem
= bt_ctf_field_type_string_create();
1222 assert(root_loud_turkey_elem
);
1223 ret
= bt_ctf_field_type_string_set_encoding(root_loud_turkey_elem
, CTF_STRING_UTF8
);
1225 root_loud_turkey
= bt_ctf_field_type_sequence_create(root_loud_turkey_elem
, "stream.event.header.action.special");
1226 assert(root_loud_turkey
);
1227 ret
= bt_ctf_field_type_structure_add_field(root_loud
, root_loud_turkey
, "turkey");
1229 root_loud_inform_elem
= bt_ctf_field_type_string_create();
1230 assert(root_loud_inform_elem
);
1231 ret
= bt_ctf_field_type_string_set_encoding(root_loud_inform_elem
, CTF_STRING_UTF8
);
1233 root_loud_inform
= bt_ctf_field_type_sequence_create(root_loud_inform_elem
, "stream.event.context.face.magic");
1234 assert(root_loud_inform
);
1235 ret
= bt_ctf_field_type_structure_add_field(root_loud
, root_loud_inform
, "inform");
1237 root_loud_odd_elem
= bt_ctf_field_type_string_create();
1238 assert(root_loud_odd_elem
);
1239 ret
= bt_ctf_field_type_string_set_encoding(root_loud_odd_elem
, CTF_STRING_UTF8
);
1241 root_loud_odd
= bt_ctf_field_type_sequence_create(root_loud_odd_elem
, "berry.third");
1242 assert(root_loud_odd
);
1243 ret
= bt_ctf_field_type_structure_add_field(root_loud
, root_loud_odd
, "odd");
1245 root_loud_amuck_elem
= bt_ctf_field_type_string_create();
1246 assert(root_loud_amuck_elem
);
1247 ret
= bt_ctf_field_type_string_set_encoding(root_loud_amuck_elem
, CTF_STRING_UTF8
);
1249 root_loud_amuck
= bt_ctf_field_type_sequence_create(root_loud_amuck_elem
, "event.context.film");
1250 assert(root_loud_amuck
);
1251 ret
= bt_ctf_field_type_structure_add_field(root_loud
, root_loud_amuck
, "amuck");
1253 ret
= bt_ctf_field_type_structure_add_field(root
, root_loud
, "loud");
1258 BT_PUT(root_berry_pine
);
1259 BT_PUT(root_berry_pine_elem
);
1260 BT_PUT(root_berry_porter
);
1261 BT_PUT(root_berry_porter_elem
);
1262 BT_PUT(root_berry_mice
);
1263 BT_PUT(root_berry_mice_elem
);
1264 BT_PUT(root_berry_third
);
1265 BT_PUT(root_berry_guard
);
1266 BT_PUT(root_berry_guard_elem
);
1267 BT_PUT(root_berry_one
);
1268 BT_PUT(root_berry_one_elem
);
1271 BT_PUT(root_loud_toys
);
1272 BT_PUT(root_loud_toys_elem
);
1273 BT_PUT(root_loud_spoon
);
1274 BT_PUT(root_loud_spoon_elem
);
1275 BT_PUT(root_loud_turkey
);
1276 BT_PUT(root_loud_turkey_elem
);
1277 BT_PUT(root_loud_inform
);
1278 BT_PUT(root_loud_inform_elem
);
1279 BT_PUT(root_loud_odd
);
1280 BT_PUT(root_loud_odd_elem
);
1281 BT_PUT(root_loud_amuck
);
1282 BT_PUT(root_loud_amuck_elem
);
1288 struct bt_ctf_field_type
*get_good_event_payload_type(void)
1291 Generated by bt-ctfirtg using the following input:
1341 length: event.fields.splendid
1346 length: event.context.cats
1351 length: event.context.berry.third
1356 length: stream.event.context.face.magic
1361 length: stream.event.header.id
1366 length: stream.packet.context.serious
1371 length: trace.packet.header.iron.dust
1377 struct bt_ctf_field_type
*root
= NULL
;
1378 struct bt_ctf_field_type
*root_splendid
= NULL
;
1379 struct bt_ctf_field_type
*root_relative
= NULL
;
1380 struct bt_ctf_field_type
*root_relative_equal
= NULL
;
1381 struct bt_ctf_field_type
*root_relative_equal_elem
= NULL
;
1382 struct bt_ctf_field_type
*root_relative_amuck
= NULL
;
1383 struct bt_ctf_field_type
*root_relative_amuck_elem
= NULL
;
1384 struct bt_ctf_field_type
*root_relative_push
= NULL
;
1385 struct bt_ctf_field_type
*root_relative_push_elem
= NULL
;
1386 struct bt_ctf_field_type
*root_relative_brick
= NULL
;
1387 struct bt_ctf_field_type
*root_relative_brick_elem
= NULL
;
1388 struct bt_ctf_field_type
*root_relative_crush
= NULL
;
1389 struct bt_ctf_field_type
*root_relative_crush_elem
= NULL
;
1390 struct bt_ctf_field_type
*root_relative_canvas
= NULL
;
1391 struct bt_ctf_field_type
*root_relative_canvas_elem
= NULL
;
1392 struct bt_ctf_field_type
*root_absolute
= NULL
;
1393 struct bt_ctf_field_type
*root_absolute_equal
= NULL
;
1394 struct bt_ctf_field_type
*root_absolute_equal_elem
= NULL
;
1395 struct bt_ctf_field_type
*root_absolute_amuck
= NULL
;
1396 struct bt_ctf_field_type
*root_absolute_amuck_elem
= NULL
;
1397 struct bt_ctf_field_type
*root_absolute_push
= NULL
;
1398 struct bt_ctf_field_type
*root_absolute_push_elem
= NULL
;
1399 struct bt_ctf_field_type
*root_absolute_brick
= NULL
;
1400 struct bt_ctf_field_type
*root_absolute_brick_elem
= NULL
;
1401 struct bt_ctf_field_type
*root_absolute_crush
= NULL
;
1402 struct bt_ctf_field_type
*root_absolute_crush_elem
= NULL
;
1403 struct bt_ctf_field_type
*root_absolute_canvas
= NULL
;
1404 struct bt_ctf_field_type
*root_absolute_canvas_elem
= NULL
;
1407 root
= bt_ctf_field_type_structure_create();
1409 ret
= bt_ctf_field_type_set_alignment(root
, 8);
1411 root_splendid
= bt_ctf_field_type_integer_create(12);
1412 assert(root_splendid
);
1413 ret
= bt_ctf_field_type_integer_set_signed(root_splendid
, 0);
1415 ret
= bt_ctf_field_type_integer_set_base(root_splendid
, 10);
1417 ret
= bt_ctf_field_type_integer_set_encoding(root_splendid
, CTF_STRING_NONE
);
1419 ret
= bt_ctf_field_type_set_byte_order(root_splendid
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
1421 ret
= bt_ctf_field_type_set_alignment(root_splendid
, 1);
1423 ret
= bt_ctf_field_type_structure_add_field(root
, root_splendid
, "splendid");
1425 root_relative
= bt_ctf_field_type_structure_create();
1426 assert(root_relative
);
1427 ret
= bt_ctf_field_type_set_alignment(root_relative
, 8);
1429 root_relative_equal_elem
= bt_ctf_field_type_string_create();
1430 assert(root_relative_equal_elem
);
1431 ret
= bt_ctf_field_type_string_set_encoding(root_relative_equal_elem
, CTF_STRING_UTF8
);
1433 root_relative_equal
= bt_ctf_field_type_sequence_create(root_relative_equal_elem
, "splendid");
1434 assert(root_relative_equal
);
1435 ret
= bt_ctf_field_type_structure_add_field(root_relative
, root_relative_equal
, "equal");
1437 root_relative_amuck_elem
= bt_ctf_field_type_string_create();
1438 assert(root_relative_amuck_elem
);
1439 ret
= bt_ctf_field_type_string_set_encoding(root_relative_amuck_elem
, CTF_STRING_UTF8
);
1441 root_relative_amuck
= bt_ctf_field_type_sequence_create(root_relative_amuck_elem
, "id");
1442 assert(root_relative_amuck
);
1443 ret
= bt_ctf_field_type_structure_add_field(root_relative
, root_relative_amuck
, "amuck");
1445 root_relative_push_elem
= bt_ctf_field_type_string_create();
1446 assert(root_relative_push_elem
);
1447 ret
= bt_ctf_field_type_string_set_encoding(root_relative_push_elem
, CTF_STRING_UTF8
);
1449 root_relative_push
= bt_ctf_field_type_sequence_create(root_relative_push_elem
, "berry.third");
1450 assert(root_relative_push
);
1451 ret
= bt_ctf_field_type_structure_add_field(root_relative
, root_relative_push
, "push");
1453 root_relative_brick_elem
= bt_ctf_field_type_string_create();
1454 assert(root_relative_brick_elem
);
1455 ret
= bt_ctf_field_type_string_set_encoding(root_relative_brick_elem
, CTF_STRING_UTF8
);
1457 root_relative_brick
= bt_ctf_field_type_sequence_create(root_relative_brick_elem
, "face.magic");
1458 assert(root_relative_brick
);
1459 ret
= bt_ctf_field_type_structure_add_field(root_relative
, root_relative_brick
, "brick");
1461 root_relative_crush_elem
= bt_ctf_field_type_string_create();
1462 assert(root_relative_crush_elem
);
1463 ret
= bt_ctf_field_type_string_set_encoding(root_relative_crush_elem
, CTF_STRING_UTF8
);
1465 root_relative_crush
= bt_ctf_field_type_sequence_create(root_relative_crush_elem
, "serious");
1466 assert(root_relative_crush
);
1467 ret
= bt_ctf_field_type_structure_add_field(root_relative
, root_relative_crush
, "crush");
1469 root_relative_canvas_elem
= bt_ctf_field_type_string_create();
1470 assert(root_relative_canvas_elem
);
1471 ret
= bt_ctf_field_type_string_set_encoding(root_relative_canvas_elem
, CTF_STRING_UTF8
);
1473 root_relative_canvas
= bt_ctf_field_type_sequence_create(root_relative_canvas_elem
, "iron.dust");
1474 assert(root_relative_canvas
);
1475 ret
= bt_ctf_field_type_structure_add_field(root_relative
, root_relative_canvas
, "canvas");
1477 ret
= bt_ctf_field_type_structure_add_field(root
, root_relative
, "relative");
1479 root_absolute
= bt_ctf_field_type_structure_create();
1480 assert(root_absolute
);
1481 ret
= bt_ctf_field_type_set_alignment(root_absolute
, 8);
1483 root_absolute_equal_elem
= bt_ctf_field_type_string_create();
1484 assert(root_absolute_equal_elem
);
1485 ret
= bt_ctf_field_type_string_set_encoding(root_absolute_equal_elem
, CTF_STRING_UTF8
);
1487 root_absolute_equal
= bt_ctf_field_type_sequence_create(root_absolute_equal_elem
, "event.fields.splendid");
1488 assert(root_absolute_equal
);
1489 ret
= bt_ctf_field_type_structure_add_field(root_absolute
, root_absolute_equal
, "equal");
1491 root_absolute_amuck_elem
= bt_ctf_field_type_string_create();
1492 assert(root_absolute_amuck_elem
);
1493 ret
= bt_ctf_field_type_string_set_encoding(root_absolute_amuck_elem
, CTF_STRING_UTF8
);
1495 root_absolute_amuck
= bt_ctf_field_type_sequence_create(root_absolute_amuck_elem
, "stream.event.header.id");
1496 assert(root_absolute_amuck
);
1497 ret
= bt_ctf_field_type_structure_add_field(root_absolute
, root_absolute_amuck
, "amuck");
1499 root_absolute_push_elem
= bt_ctf_field_type_string_create();
1500 assert(root_absolute_push_elem
);
1501 ret
= bt_ctf_field_type_string_set_encoding(root_absolute_push_elem
, CTF_STRING_UTF8
);
1503 root_absolute_push
= bt_ctf_field_type_sequence_create(root_absolute_push_elem
, "event.context.berry.third");
1504 assert(root_absolute_push
);
1505 ret
= bt_ctf_field_type_structure_add_field(root_absolute
, root_absolute_push
, "push");
1507 root_absolute_brick_elem
= bt_ctf_field_type_string_create();
1508 assert(root_absolute_brick_elem
);
1509 ret
= bt_ctf_field_type_string_set_encoding(root_absolute_brick_elem
, CTF_STRING_UTF8
);
1511 root_absolute_brick
= bt_ctf_field_type_sequence_create(root_absolute_brick_elem
, "stream.event.context.face.magic");
1512 assert(root_absolute_brick
);
1513 ret
= bt_ctf_field_type_structure_add_field(root_absolute
, root_absolute_brick
, "brick");
1515 root_absolute_crush_elem
= bt_ctf_field_type_string_create();
1516 assert(root_absolute_crush_elem
);
1517 ret
= bt_ctf_field_type_string_set_encoding(root_absolute_crush_elem
, CTF_STRING_UTF8
);
1519 root_absolute_crush
= bt_ctf_field_type_sequence_create(root_absolute_crush_elem
, "stream.packet.context.serious");
1520 assert(root_absolute_crush
);
1521 ret
= bt_ctf_field_type_structure_add_field(root_absolute
, root_absolute_crush
, "crush");
1523 root_absolute_canvas_elem
= bt_ctf_field_type_string_create();
1524 assert(root_absolute_canvas_elem
);
1525 ret
= bt_ctf_field_type_string_set_encoding(root_absolute_canvas_elem
, CTF_STRING_UTF8
);
1527 root_absolute_canvas
= bt_ctf_field_type_sequence_create(root_absolute_canvas_elem
, "trace.packet.header.iron.dust");
1528 assert(root_absolute_canvas
);
1529 ret
= bt_ctf_field_type_structure_add_field(root_absolute
, root_absolute_canvas
, "canvas");
1531 ret
= bt_ctf_field_type_structure_add_field(root
, root_absolute
, "absolute");
1534 BT_PUT(root_splendid
);
1535 BT_PUT(root_relative
);
1536 BT_PUT(root_relative_equal
);
1537 BT_PUT(root_relative_equal_elem
);
1538 BT_PUT(root_relative_amuck
);
1539 BT_PUT(root_relative_amuck_elem
);
1540 BT_PUT(root_relative_push
);
1541 BT_PUT(root_relative_push_elem
);
1542 BT_PUT(root_relative_brick
);
1543 BT_PUT(root_relative_brick_elem
);
1544 BT_PUT(root_relative_crush
);
1545 BT_PUT(root_relative_crush_elem
);
1546 BT_PUT(root_relative_canvas
);
1547 BT_PUT(root_relative_canvas_elem
);
1548 BT_PUT(root_absolute
);
1549 BT_PUT(root_absolute_equal
);
1550 BT_PUT(root_absolute_equal_elem
);
1551 BT_PUT(root_absolute_amuck
);
1552 BT_PUT(root_absolute_amuck_elem
);
1553 BT_PUT(root_absolute_push
);
1554 BT_PUT(root_absolute_push_elem
);
1555 BT_PUT(root_absolute_brick
);
1556 BT_PUT(root_absolute_brick_elem
);
1557 BT_PUT(root_absolute_crush
);
1558 BT_PUT(root_absolute_crush_elem
);
1559 BT_PUT(root_absolute_canvas
);
1560 BT_PUT(root_absolute_canvas_elem
);
1566 struct bt_ctf_field_type
*get_child_ft(struct bt_ctf_field_type
*parent_ft
,
1569 struct bt_ctf_field_type
*ft
= NULL
;
1571 switch (bt_ctf_field_type_get_type_id(parent_ft
)) {
1572 case CTF_TYPE_STRUCT
:
1573 ft
= bt_ctf_field_type_structure_get_field_type_by_name(
1577 case CTF_TYPE_VARIANT
:
1578 ft
= bt_ctf_field_type_variant_get_field_type_by_name(
1582 case CTF_TYPE_ARRAY
:
1583 ft
= bt_ctf_field_type_array_get_element_type(parent_ft
);
1586 case CTF_TYPE_SEQUENCE
:
1587 ft
= bt_ctf_field_type_sequence_get_element_type(parent_ft
);
1591 ft
= bt_ctf_field_type_enumeration_get_container_type(
1605 struct bt_ctf_field_type
*get_ft(struct bt_ctf_field_type
*root_ft
, ...)
1607 struct bt_ctf_field_type
*child_ft
= NULL
;
1608 struct bt_ctf_field_type
*ft
= root_ft
;
1611 va_start(ap
, root_ft
);
1615 const char *field_name
= va_arg(ap
, const char *);
1617 if (field_name
== NULL
) {
1621 child_ft
= get_child_ft(ft
, field_name
);
1628 BT_MOVE(ft
, child_ft
);
1637 #define FIELD_PATH_END -2
1640 int validate_field_path(struct bt_ctf_field_type
*field_type
,
1641 enum bt_ctf_scope root
, ...)
1648 struct bt_ctf_field_path
*field_path
= NULL
;
1652 if (bt_ctf_field_type_is_sequence(field_type
)) {
1653 field_path
= bt_ctf_field_type_sequence_get_length_field_path(
1655 } else if (bt_ctf_field_type_is_variant(field_type
)) {
1656 field_path
= bt_ctf_field_type_variant_get_tag_field_path(
1665 if (bt_ctf_field_path_get_root_scope(field_path
) != root
) {
1670 len
= bt_ctf_field_path_get_index_count(field_path
);
1673 expected_index
= va_arg(ap
, int);
1675 if (expected_index
== FIELD_PATH_END
) {
1683 actual_index
= bt_ctf_field_path_get_index(field_path
, i
);
1685 if (actual_index
== INT_MIN
) {
1693 if (i
!= len
|| expected_index
!= FIELD_PATH_END
) {
1705 void validate_test_pass(struct bt_ctf_trace
*trace
)
1707 struct bt_ctf_stream_class
*sc
;
1708 struct bt_ctf_event_class
*ec
;
1709 struct bt_ctf_field_type
*ph
;
1710 struct bt_ctf_field_type
*pc
;
1711 struct bt_ctf_field_type
*eh
;
1712 struct bt_ctf_field_type
*sec
;
1713 struct bt_ctf_field_type
*ectx
;
1714 struct bt_ctf_field_type
*ep
;
1715 struct bt_ctf_field_type
*ft_src
= NULL
;
1716 struct bt_ctf_field_type
*ft_target
= NULL
;
1717 struct bt_ctf_field_type
*ft_tag
= NULL
;
1719 sc
= bt_ctf_trace_get_stream_class(trace
, 0);
1721 ec
= bt_ctf_stream_class_get_event_class(sc
, 0);
1724 ph
= bt_ctf_trace_get_packet_header_type(trace
);
1725 ok(ph
, "Trace packet header still exists after successful validation");
1726 pc
= bt_ctf_stream_class_get_packet_context_type(sc
);
1727 ok(pc
, "Stream packet context still exists after successful validation");
1728 eh
= bt_ctf_stream_class_get_event_header_type(sc
);
1729 ok(eh
, "Stream event header still exists after successful validation");
1730 sec
= bt_ctf_stream_class_get_event_context_type(sc
);
1731 ok(sec
, "Stream event context still exists after successful validation");
1732 ectx
= bt_ctf_event_class_get_context_type(ec
);
1733 ok(ectx
, "Event context still exists after successful validation");
1734 ep
= bt_ctf_event_class_get_payload_type(ec
);
1735 ok(ep
, "Event payload still exists after successful validation");
1737 /* trace.packet.header.iron.fire.keen */
1738 ft_src
= get_ft(ph
, "iron", "fire", "keen", NULL
);
1739 ok(!validate_field_path(ft_src
, BT_CTF_SCOPE_TRACE_PACKET_HEADER
,
1740 3, 3, 0, FIELD_PATH_END
),
1741 "trace.packet.header.iron.fire.keen has the correct field path");
1744 /* trace.packet.header.iron.fire.keen.[element] */
1745 ft_src
= get_ft(ph
, "iron", "fire", "keen", "", NULL
);
1746 ok(!validate_field_path(ft_src
,
1747 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 2, FIELD_PATH_END
),
1748 "trace.packet.header.iron.fire.keen.[element] has the correct field path");
1749 ft_target
= get_ft(ph
, "iron", "parallel", NULL
);
1750 ft_tag
= bt_ctf_field_type_variant_get_tag_type(ft_src
);
1751 ok(ft_tag
== ft_target
,
1752 "trace.packet.header.iron.fire.keen.[element] has the correct tag type");
1757 /* trace.packet.header.iron.fire.keen.[element].BLUE */
1758 ft_src
= get_ft(ph
, "iron", "fire", "keen", "", "BLUE", NULL
);
1759 ok(!validate_field_path(ft_src
,
1760 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 0, FIELD_PATH_END
),
1761 "trace.packet.header.iron.fire.keen.[element].BLUE has the correct field path");
1764 /* trace.packet.header.iron.report */
1765 ft_src
= get_ft(ph
, "iron", "report", NULL
);
1766 ok(!validate_field_path(ft_src
,
1767 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 1, FIELD_PATH_END
),
1768 "trace.packet.header.iron.report has the correct field path");
1771 /* trace.packet.header.iron.group */
1772 ft_src
= get_ft(ph
, "iron", "group", NULL
);
1773 ok(!validate_field_path(ft_src
,
1774 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 2, FIELD_PATH_END
),
1775 "trace.packet.header.iron.group has the correct field path");
1778 /* stream.packet.context.naive.[element] */
1779 ft_src
= get_ft(pc
, "naive", "", NULL
);
1780 ok(!validate_field_path(ft_src
,
1781 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 0, FIELD_PATH_END
),
1782 "stream.packet.context.naive.[element] has the correct field path");
1785 /* stream.packet.context.clover.whole */
1786 ft_src
= get_ft(pc
, "clover", "whole", NULL
);
1787 ok(!validate_field_path(ft_src
,
1788 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 2, FIELD_PATH_END
),
1789 "stream.packet.context.clover.whole has the correct field path");
1790 ft_target
= get_ft(ph
, "iron", "parallel", NULL
);
1791 ft_tag
= bt_ctf_field_type_variant_get_tag_type(ft_src
);
1792 ok(ft_tag
== ft_target
,
1793 "stream.packet.context.clover.whole has the correct tag type");
1798 /* stream.packet.context.clover.whole.BLUE */
1799 ft_src
= get_ft(pc
, "clover", "whole", "BLUE", NULL
);
1800 ok(!validate_field_path(ft_src
,
1801 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 3, 0, FIELD_PATH_END
),
1802 "stream.packet.context.clover.whole.BLUE has the correct field path");
1805 /* stream.packet.context.clover.egg */
1806 ft_src
= get_ft(pc
, "clover", "egg", NULL
);
1807 ok(!validate_field_path(ft_src
,
1808 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 4, 0, FIELD_PATH_END
),
1809 "stream.packet.context.clover.egg has the correct field path");
1812 /* stream.packet.context.clover.useful */
1813 ft_src
= get_ft(pc
, "clover", "useful", NULL
);
1814 ok(!validate_field_path(ft_src
,
1815 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 2, FIELD_PATH_END
),
1816 "stream.packet.context.clover.useful has the correct field path");
1819 /* stream.event.header.action.lucky */
1820 ft_src
= get_ft(eh
, "action", "lucky", NULL
);
1821 ok(!validate_field_path(ft_src
,
1822 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 0, FIELD_PATH_END
),
1823 "stream.event.header.action.lucky has the correct field path");
1826 /* stream.event.header.stiff */
1827 ft_src
= get_ft(eh
, "stiff", NULL
);
1828 ok(!validate_field_path(ft_src
,
1829 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 4, 1, 1, FIELD_PATH_END
),
1830 "stream.event.header.stiff has the correct field path");
1833 /* stream.event.header.fruit.apple */
1834 ft_src
= get_ft(eh
, "fruit", "apple", NULL
);
1835 ok(!validate_field_path(ft_src
,
1836 BT_CTF_SCOPE_STREAM_EVENT_HEADER
, 2, 0, FIELD_PATH_END
),
1837 "stream.event.header.fruit.apple has the correct field path");
1840 /* stream.event.context.face.branch */
1841 ft_src
= get_ft(sec
, "face", "branch", NULL
);
1842 ok(!validate_field_path(ft_src
,
1843 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 2, FIELD_PATH_END
),
1844 "stream.event.context.face.branch has the correct field path");
1847 /* stream.event.context.face.income */
1848 ft_src
= get_ft(sec
, "face", "income", NULL
);
1849 ok(!validate_field_path(ft_src
,
1850 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 0, FIELD_PATH_END
),
1851 "stream.event.context.face.income has the correct field path");
1854 /* stream.event.context.face.lucky */
1855 ft_src
= get_ft(sec
, "face", "lucky", NULL
);
1856 ok(!validate_field_path(ft_src
,
1857 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
1858 "stream.event.context.face.lucky has the correct field path");
1861 /* stream.event.context.dream */
1862 ft_src
= get_ft(sec
, "dream", NULL
);
1863 ok(!validate_field_path(ft_src
,
1864 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 0, FIELD_PATH_END
),
1865 "stream.event.context.dream has the correct field path");
1868 /* stream.event.context.dream.[element] */
1869 ft_src
= get_ft(sec
, "dream", "", NULL
);
1870 ok(!validate_field_path(ft_src
,
1871 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 1, FIELD_PATH_END
),
1872 "stream.event.context.dream.[element] has the correct field path");
1875 /* stream.event.context.dream.[element].[element] */
1876 ft_src
= get_ft(sec
, "dream", "", "", NULL
);
1877 ok(!validate_field_path(ft_src
,
1878 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
1879 "stream.event.context.dream.[element].[element] has the correct field path");
1882 /* event.context.berry.porter */
1883 ft_src
= get_ft(ectx
, "berry", "porter", NULL
);
1884 ok(!validate_field_path(ft_src
,
1885 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
1886 "event.context.berry.porter has the correct field path");
1889 /* event.context.berry.porter */
1890 ft_src
= get_ft(ectx
, "berry", "porter", NULL
);
1891 ok(!validate_field_path(ft_src
,
1892 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
1893 "event.context.berry.porter has the correct field path");
1896 /* event.context.berry.mice */
1897 ft_src
= get_ft(ectx
, "berry", "mice", NULL
);
1898 ok(!validate_field_path(ft_src
,
1899 BT_CTF_SCOPE_STREAM_EVENT_HEADER
, 2, 0, FIELD_PATH_END
),
1900 "event.context.berry.mice has the correct field path");
1903 /* event.context.berry.guard */
1904 ft_src
= get_ft(ectx
, "berry", "guard", NULL
);
1905 ok(!validate_field_path(ft_src
,
1906 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 4, 0, FIELD_PATH_END
),
1907 "event.context.berry.guard has the correct field path");
1910 /* event.context.berry.one */
1911 ft_src
= get_ft(ectx
, "berry", "one", NULL
);
1912 ok(!validate_field_path(ft_src
,
1913 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 3, 0, FIELD_PATH_END
),
1914 "event.context.berry.one has the correct field path");
1917 /* event.context.loud.toys */
1918 ft_src
= get_ft(ectx
, "loud", "toys", NULL
);
1919 ok(!validate_field_path(ft_src
,
1920 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 3, 0, FIELD_PATH_END
),
1921 "event.context.loud.toys has the correct field path");
1924 /* event.context.loud.spoon */
1925 ft_src
= get_ft(ectx
, "loud", "spoon", NULL
);
1926 ok(!validate_field_path(ft_src
,
1927 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 4, 0, FIELD_PATH_END
),
1928 "event.context.loud.spoon has the correct field path");
1931 /* event.context.loud.turkey */
1932 ft_src
= get_ft(ectx
, "loud", "turkey", NULL
);
1933 ok(!validate_field_path(ft_src
,
1934 BT_CTF_SCOPE_STREAM_EVENT_HEADER
, 2, 0, FIELD_PATH_END
),
1935 "event.context.loud.turkey has the correct field path");
1938 /* event.context.loud.inform */
1939 ft_src
= get_ft(ectx
, "loud", "inform", NULL
);
1940 ok(!validate_field_path(ft_src
,
1941 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
1942 "event.context.loud.inform has the correct field path");
1945 /* event.context.loud.odd */
1946 ft_src
= get_ft(ectx
, "loud", "odd", NULL
);
1947 ok(!validate_field_path(ft_src
,
1948 BT_CTF_SCOPE_EVENT_CONTEXT
, 1, 3, FIELD_PATH_END
),
1949 "event.context.loud.odd has the correct field path");
1952 /* event.context.loud.amuck */
1953 ft_src
= get_ft(ectx
, "loud", "amuck", NULL
);
1954 ok(!validate_field_path(ft_src
,
1955 BT_CTF_SCOPE_EVENT_CONTEXT
, 0, FIELD_PATH_END
),
1956 "event.context.loud.amuck has the correct field path");
1959 /* event.fields.relative.equal */
1960 ft_src
= get_ft(ep
, "relative", "equal", NULL
);
1961 ok(!validate_field_path(ft_src
,
1962 BT_CTF_SCOPE_EVENT_FIELDS
, 0, FIELD_PATH_END
),
1963 "event.fields.relative.equal has the correct field path");
1966 /* event.fields.relative.amuck */
1967 ft_src
= get_ft(ep
, "relative", "amuck", NULL
);
1968 ok(!validate_field_path(ft_src
,
1969 BT_CTF_SCOPE_STREAM_EVENT_HEADER
, 0, FIELD_PATH_END
),
1970 "event.fields.relative.amuck has the correct field path");
1973 /* event.fields.relative.push */
1974 ft_src
= get_ft(ep
, "relative", "push", NULL
);
1975 ok(!validate_field_path(ft_src
,
1976 BT_CTF_SCOPE_EVENT_CONTEXT
, 1, 3, FIELD_PATH_END
),
1977 "event.fields.relative.push has the correct field path");
1980 /* event.fields.relative.brick */
1981 ft_src
= get_ft(ep
, "relative", "brick", NULL
);
1982 ok(!validate_field_path(ft_src
,
1983 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
1984 "event.fields.relative.brick has the correct field path");
1987 /* event.fields.relative.crush */
1988 ft_src
= get_ft(ep
, "relative", "crush", NULL
);
1989 ok(!validate_field_path(ft_src
,
1990 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 2, FIELD_PATH_END
),
1991 "event.fields.relative.crush has the correct field path");
1994 /* event.fields.relative.canvas */
1995 ft_src
= get_ft(ep
, "relative", "canvas", NULL
);
1996 ok(!validate_field_path(ft_src
,
1997 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 1, FIELD_PATH_END
),
1998 "event.fields.relative.canvas has the correct field path");
2001 /* event.fields.absolute.equal */
2002 ft_src
= get_ft(ep
, "absolute", "equal", NULL
);
2003 ok(!validate_field_path(ft_src
,
2004 BT_CTF_SCOPE_EVENT_FIELDS
, 0, FIELD_PATH_END
),
2005 "event.fields.absolute.equal has the correct field path");
2008 /* event.fields.absolute.amuck */
2009 ft_src
= get_ft(ep
, "absolute", "amuck", NULL
);
2010 ok(!validate_field_path(ft_src
,
2011 BT_CTF_SCOPE_STREAM_EVENT_HEADER
, 0, FIELD_PATH_END
),
2012 "event.fields.absolute.amuck has the correct field path");
2015 /* event.fields.absolute.push */
2016 ft_src
= get_ft(ep
, "absolute", "push", NULL
);
2017 ok(!validate_field_path(ft_src
,
2018 BT_CTF_SCOPE_EVENT_CONTEXT
, 1, 3, FIELD_PATH_END
),
2019 "event.fields.absolute.push has the correct field path");
2022 /* event.fields.absolute.brick */
2023 ft_src
= get_ft(ep
, "absolute", "brick", NULL
);
2024 ok(!validate_field_path(ft_src
,
2025 BT_CTF_SCOPE_STREAM_EVENT_CONTEXT
, 0, 2, FIELD_PATH_END
),
2026 "event.fields.absolute.brick has the correct field path");
2029 /* event.fields.absolute.crush */
2030 ft_src
= get_ft(ep
, "absolute", "crush", NULL
);
2031 ok(!validate_field_path(ft_src
,
2032 BT_CTF_SCOPE_STREAM_PACKET_CONTEXT
, 2, FIELD_PATH_END
),
2033 "event.fields.absolute.crush has the correct field path");
2036 /* event.fields.absolute.canvas */
2037 ft_src
= get_ft(ep
, "absolute", "canvas", NULL
);
2038 ok(!validate_field_path(ft_src
,
2039 BT_CTF_SCOPE_TRACE_PACKET_HEADER
, 3, 1, FIELD_PATH_END
),
2040 "event.fields.absolute.canvas has the correct field path");
2056 void test_pass(void)
2059 struct bt_ctf_trace
*trace
;
2060 struct bt_ctf_stream_class
*sc
;
2061 struct bt_ctf_event_class
*ec
;
2062 struct bt_ctf_field_type
*ph
;
2063 struct bt_ctf_field_type
*pc
;
2064 struct bt_ctf_field_type
*eh
;
2065 struct bt_ctf_field_type
*sec
;
2066 struct bt_ctf_field_type
*ectx
;
2067 struct bt_ctf_field_type
*ep
;
2069 trace
= bt_ctf_trace_create();
2071 sc
= bt_ctf_stream_class_create("nice_piece_of_stream_class");
2073 ec
= bt_ctf_event_class_create("oh_what_an_event_class");
2076 ph
= get_good_packet_header_type();
2078 pc
= get_good_packet_context_type();
2080 eh
= get_good_event_header_type();
2082 sec
= get_good_stream_event_context_type();
2084 ectx
= get_good_event_context_type();
2086 ep
= get_good_event_payload_type();
2089 ret
= bt_ctf_trace_set_packet_header_type(trace
, ph
);
2091 ret
= bt_ctf_stream_class_set_packet_context_type(sc
, pc
);
2093 ret
= bt_ctf_stream_class_set_event_header_type(sc
, eh
);
2095 ret
= bt_ctf_stream_class_set_event_context_type(sc
, sec
);
2097 ret
= bt_ctf_event_class_set_context_type(ec
, ectx
);
2099 ret
= bt_ctf_event_class_set_payload_type(ec
, ep
);
2102 ret
= bt_ctf_stream_class_add_event_class(sc
, ec
);
2105 /* Validation happens here */
2106 ret
= bt_ctf_trace_add_stream_class(trace
, sc
);
2107 ok(ret
== 0, "Valid type system is considered valid");
2109 validate_test_pass(trace
);
2123 struct bt_ctf_event
*create_event_with_context_and_payload(
2124 struct bt_ctf_field_type
*ectx
, struct bt_ctf_field_type
*ep
)
2127 struct bt_ctf_stream_class
*sc
;
2128 struct bt_ctf_event_class
*ec
;
2129 struct bt_ctf_event
*event
;
2131 sc
= bt_ctf_stream_class_create("sc");
2133 ec
= bt_ctf_event_class_create("ec");
2137 ret
= bt_ctf_event_class_set_context_type(ec
, ectx
);
2142 ret
= bt_ctf_event_class_set_payload_type(ec
, ep
);
2146 ret
= bt_ctf_stream_class_add_event_class(sc
, ec
);
2149 /* Validation happens here */
2150 event
= bt_ctf_event_create(ec
);
2160 struct bt_ctf_field_type
*test_fail_unavailable_root_get_event_payload(void)
2163 Generated by bt-ctfirtg using the following input:
2172 length: stream.event.context.lol
2180 struct bt_ctf_field_type
*root
= NULL
;
2181 struct bt_ctf_field_type
*root_a
= NULL
;
2182 struct bt_ctf_field_type
*root_b
= NULL
;
2183 struct bt_ctf_field_type
*root_b_elem
= NULL
;
2184 struct bt_ctf_field_type
*root_c
= NULL
;
2187 root
= bt_ctf_field_type_structure_create();
2189 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2191 root_a
= bt_ctf_field_type_integer_create(32);
2193 ret
= bt_ctf_field_type_integer_set_signed(root_a
, 0);
2195 ret
= bt_ctf_field_type_integer_set_base(root_a
, 10);
2197 ret
= bt_ctf_field_type_integer_set_encoding(root_a
, CTF_STRING_NONE
);
2199 ret
= bt_ctf_field_type_set_byte_order(root_a
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2201 ret
= bt_ctf_field_type_set_alignment(root_a
, 8);
2203 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2205 root_b_elem
= bt_ctf_field_type_string_create();
2206 assert(root_b_elem
);
2207 ret
= bt_ctf_field_type_string_set_encoding(root_b_elem
, CTF_STRING_UTF8
);
2209 root_b
= bt_ctf_field_type_sequence_create(root_b_elem
, "stream.event.context.lol");
2211 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2213 root_c
= bt_ctf_field_type_string_create();
2215 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2217 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2222 BT_PUT(root_b_elem
);
2229 void test_fail_unavailable_root(void)
2231 struct bt_ctf_field_type
*ep
;
2232 struct bt_ctf_event
*event
;
2234 ep
= test_fail_unavailable_root_get_event_payload();
2236 event
= create_event_with_context_and_payload(NULL
, ep
);
2237 ok(!event
, "Sequence FT with length in unavailable root is invalid");
2244 struct bt_ctf_field_type
*test_fail_target_is_root_get_event_payload(void)
2247 Generated by bt-ctfirtg using the following input:
2256 length: event.fields
2264 struct bt_ctf_field_type
*root
= NULL
;
2265 struct bt_ctf_field_type
*root_a
= NULL
;
2266 struct bt_ctf_field_type
*root_b
= NULL
;
2267 struct bt_ctf_field_type
*root_b_elem
= NULL
;
2268 struct bt_ctf_field_type
*root_c
= NULL
;
2271 root
= bt_ctf_field_type_structure_create();
2273 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2275 root_a
= bt_ctf_field_type_integer_create(32);
2277 ret
= bt_ctf_field_type_integer_set_signed(root_a
, 0);
2279 ret
= bt_ctf_field_type_integer_set_base(root_a
, 10);
2281 ret
= bt_ctf_field_type_integer_set_encoding(root_a
, CTF_STRING_NONE
);
2283 ret
= bt_ctf_field_type_set_byte_order(root_a
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2285 ret
= bt_ctf_field_type_set_alignment(root_a
, 8);
2287 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2289 root_b_elem
= bt_ctf_field_type_string_create();
2290 assert(root_b_elem
);
2291 ret
= bt_ctf_field_type_string_set_encoding(root_b_elem
, CTF_STRING_UTF8
);
2293 root_b
= bt_ctf_field_type_sequence_create(root_b_elem
, "event.fields");
2295 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2297 root_c
= bt_ctf_field_type_string_create();
2299 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2301 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2306 BT_PUT(root_b_elem
);
2313 void test_fail_target_is_root(void)
2315 struct bt_ctf_field_type
*ep
;
2316 struct bt_ctf_event
*event
;
2318 ep
= test_fail_target_is_root_get_event_payload();
2320 event
= create_event_with_context_and_payload(NULL
, ep
);
2321 ok(!event
, "Sequence FT with root as its length is invalid");
2328 struct bt_ctf_field_type
*test_fail_target_is_after_source_get_ep(void)
2331 Generated by bt-ctfirtg using the following input:
2351 struct bt_ctf_field_type
*root
= NULL
;
2352 struct bt_ctf_field_type
*root_a
= NULL
;
2353 struct bt_ctf_field_type
*root_b
= NULL
;
2354 struct bt_ctf_field_type
*root_b_elem
= NULL
;
2355 struct bt_ctf_field_type
*root_c
= NULL
;
2356 struct bt_ctf_field_type
*root_d
= NULL
;
2359 root
= bt_ctf_field_type_structure_create();
2361 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2363 root_a
= bt_ctf_field_type_integer_create(32);
2365 ret
= bt_ctf_field_type_integer_set_signed(root_a
, 0);
2367 ret
= bt_ctf_field_type_integer_set_base(root_a
, 10);
2369 ret
= bt_ctf_field_type_integer_set_encoding(root_a
, CTF_STRING_NONE
);
2371 ret
= bt_ctf_field_type_set_byte_order(root_a
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2373 ret
= bt_ctf_field_type_set_alignment(root_a
, 8);
2375 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2377 root_b_elem
= bt_ctf_field_type_string_create();
2378 assert(root_b_elem
);
2379 ret
= bt_ctf_field_type_string_set_encoding(root_b_elem
, CTF_STRING_UTF8
);
2381 root_b
= bt_ctf_field_type_sequence_create(root_b_elem
, "d");
2383 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2385 root_c
= bt_ctf_field_type_string_create();
2387 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2389 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2391 root_d
= bt_ctf_field_type_integer_create(17);
2393 ret
= bt_ctf_field_type_integer_set_signed(root_d
, 0);
2395 ret
= bt_ctf_field_type_integer_set_base(root_d
, 10);
2397 ret
= bt_ctf_field_type_integer_set_encoding(root_d
, CTF_STRING_NONE
);
2399 ret
= bt_ctf_field_type_set_byte_order(root_d
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2401 ret
= bt_ctf_field_type_set_alignment(root_d
, 1);
2403 ret
= bt_ctf_field_type_structure_add_field(root
, root_d
, "d");
2408 BT_PUT(root_b_elem
);
2416 void test_fail_target_is_after_source(void)
2418 struct bt_ctf_field_type
*ep
;
2419 struct bt_ctf_event
*event
;
2421 ep
= test_fail_target_is_after_source_get_ep();
2423 event
= create_event_with_context_and_payload(NULL
, ep
);
2424 ok(!event
, "Sequence FT with length after it is invalid");
2431 struct bt_ctf_field_type
*test_fail_target_is_ancestor_of_source_get_ep(void)
2434 Generated by bt-ctfirtg using the following input:
2457 struct bt_ctf_field_type
*root
= NULL
;
2458 struct bt_ctf_field_type
*root_a
= NULL
;
2459 struct bt_ctf_field_type
*root_z
= NULL
;
2460 struct bt_ctf_field_type
*root_z_b
= NULL
;
2461 struct bt_ctf_field_type
*root_z_b_elem
= NULL
;
2462 struct bt_ctf_field_type
*root_c
= NULL
;
2463 struct bt_ctf_field_type
*root_d
= NULL
;
2466 root
= bt_ctf_field_type_structure_create();
2468 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2470 root_a
= bt_ctf_field_type_integer_create(32);
2472 ret
= bt_ctf_field_type_integer_set_signed(root_a
, 0);
2474 ret
= bt_ctf_field_type_integer_set_base(root_a
, 10);
2476 ret
= bt_ctf_field_type_integer_set_encoding(root_a
, CTF_STRING_NONE
);
2478 ret
= bt_ctf_field_type_set_byte_order(root_a
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2480 ret
= bt_ctf_field_type_set_alignment(root_a
, 8);
2482 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2484 root_z
= bt_ctf_field_type_structure_create();
2486 ret
= bt_ctf_field_type_set_alignment(root_z
, 8);
2488 root_z_b_elem
= bt_ctf_field_type_string_create();
2489 assert(root_z_b_elem
);
2490 ret
= bt_ctf_field_type_string_set_encoding(root_z_b_elem
, CTF_STRING_UTF8
);
2492 root_z_b
= bt_ctf_field_type_sequence_create(root_z_b_elem
, "z");
2494 ret
= bt_ctf_field_type_structure_add_field(root_z
, root_z_b
, "b");
2496 ret
= bt_ctf_field_type_structure_add_field(root
, root_z
, "z");
2498 root_c
= bt_ctf_field_type_string_create();
2500 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2502 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2504 root_d
= bt_ctf_field_type_integer_create(17);
2506 ret
= bt_ctf_field_type_integer_set_signed(root_d
, 0);
2508 ret
= bt_ctf_field_type_integer_set_base(root_d
, 10);
2510 ret
= bt_ctf_field_type_integer_set_encoding(root_d
, CTF_STRING_NONE
);
2512 ret
= bt_ctf_field_type_set_byte_order(root_d
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2514 ret
= bt_ctf_field_type_set_alignment(root_d
, 1);
2516 ret
= bt_ctf_field_type_structure_add_field(root
, root_d
, "d");
2522 BT_PUT(root_z_b_elem
);
2530 void test_fail_target_is_ancestor_of_source(void)
2532 struct bt_ctf_field_type
*ep
;
2533 struct bt_ctf_event
*event
;
2535 ep
= test_fail_target_is_ancestor_of_source_get_ep();
2537 event
= create_event_with_context_and_payload(NULL
, ep
);
2538 ok(!event
, "Sequence FT with ancestor as its length is invalid");
2545 struct bt_ctf_field_type
*test_fail_target_is_source_get_event_payload(void)
2548 Generated by bt-ctfirtg using the following input:
2557 length: event.fields.b
2568 struct bt_ctf_field_type
*root
= NULL
;
2569 struct bt_ctf_field_type
*root_a
= NULL
;
2570 struct bt_ctf_field_type
*root_b
= NULL
;
2571 struct bt_ctf_field_type
*root_b_elem
= NULL
;
2572 struct bt_ctf_field_type
*root_c
= NULL
;
2573 struct bt_ctf_field_type
*root_d
= NULL
;
2576 root
= bt_ctf_field_type_structure_create();
2578 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2580 root_a
= bt_ctf_field_type_integer_create(32);
2582 ret
= bt_ctf_field_type_integer_set_signed(root_a
, 0);
2584 ret
= bt_ctf_field_type_integer_set_base(root_a
, 10);
2586 ret
= bt_ctf_field_type_integer_set_encoding(root_a
, CTF_STRING_NONE
);
2588 ret
= bt_ctf_field_type_set_byte_order(root_a
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2590 ret
= bt_ctf_field_type_set_alignment(root_a
, 8);
2592 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2594 root_b_elem
= bt_ctf_field_type_string_create();
2595 assert(root_b_elem
);
2596 ret
= bt_ctf_field_type_string_set_encoding(root_b_elem
, CTF_STRING_UTF8
);
2598 root_b
= bt_ctf_field_type_sequence_create(root_b_elem
, "event.fields.b");
2600 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2602 root_c
= bt_ctf_field_type_string_create();
2604 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2606 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2608 root_d
= bt_ctf_field_type_integer_create(17);
2610 ret
= bt_ctf_field_type_integer_set_signed(root_d
, 0);
2612 ret
= bt_ctf_field_type_integer_set_base(root_d
, 10);
2614 ret
= bt_ctf_field_type_integer_set_encoding(root_d
, CTF_STRING_NONE
);
2616 ret
= bt_ctf_field_type_set_byte_order(root_d
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2618 ret
= bt_ctf_field_type_set_alignment(root_d
, 1);
2620 ret
= bt_ctf_field_type_structure_add_field(root
, root_d
, "d");
2625 BT_PUT(root_b_elem
);
2633 void test_fail_target_is_source(void)
2635 struct bt_ctf_field_type
*ep
;
2636 struct bt_ctf_event
*event
;
2638 ep
= test_fail_target_is_source_get_event_payload();
2640 event
= create_event_with_context_and_payload(NULL
, ep
);
2641 ok(!event
, "Sequence FT with itself as its length is invalid");
2648 struct bt_ctf_field_type
*test_fail_variant_tag_is_not_enum_get_ep(void)
2651 Generated by bt-ctfirtg using the following input:
2672 struct bt_ctf_field_type
*root
= NULL
;
2673 struct bt_ctf_field_type
*root_a
= NULL
;
2674 struct bt_ctf_field_type
*root_b
= NULL
;
2675 struct bt_ctf_field_type
*root_b_HELLO
= NULL
;
2676 struct bt_ctf_field_type
*root_c
= NULL
;
2677 struct bt_ctf_field_type
*root_d
= NULL
;
2680 root
= bt_ctf_field_type_structure_create();
2682 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2684 root_a
= bt_ctf_field_type_integer_create(32);
2686 ret
= bt_ctf_field_type_integer_set_signed(root_a
, 0);
2688 ret
= bt_ctf_field_type_integer_set_base(root_a
, 10);
2690 ret
= bt_ctf_field_type_integer_set_encoding(root_a
, CTF_STRING_NONE
);
2692 ret
= bt_ctf_field_type_set_byte_order(root_a
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2694 ret
= bt_ctf_field_type_set_alignment(root_a
, 8);
2696 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2698 root_b
= bt_ctf_field_type_variant_create(NULL
, "a");
2700 root_b_HELLO
= bt_ctf_field_type_string_create();
2701 assert(root_b_HELLO
);
2702 ret
= bt_ctf_field_type_string_set_encoding(root_b_HELLO
, CTF_STRING_UTF8
);
2704 ret
= bt_ctf_field_type_variant_add_field(root_b
, root_b_HELLO
, "HELLO");
2706 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2708 root_c
= bt_ctf_field_type_string_create();
2710 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2712 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2714 root_d
= bt_ctf_field_type_integer_create(17);
2716 ret
= bt_ctf_field_type_integer_set_signed(root_d
, 0);
2718 ret
= bt_ctf_field_type_integer_set_base(root_d
, 10);
2720 ret
= bt_ctf_field_type_integer_set_encoding(root_d
, CTF_STRING_NONE
);
2722 ret
= bt_ctf_field_type_set_byte_order(root_d
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2724 ret
= bt_ctf_field_type_set_alignment(root_d
, 1);
2726 ret
= bt_ctf_field_type_structure_add_field(root
, root_d
, "d");
2731 BT_PUT(root_b_HELLO
);
2739 void test_fail_variant_tag_is_not_enum(void)
2741 struct bt_ctf_field_type
*ep
;
2742 struct bt_ctf_event
*event
;
2744 ep
= test_fail_variant_tag_is_not_enum_get_ep();
2746 event
= create_event_with_context_and_payload(NULL
, ep
);
2747 ok(!event
, "Variant FT with non-enum FT as its tag FT is invalid");
2754 struct bt_ctf_field_type
*test_fail_variant_tag_mismatch_mappings_get_ep(void)
2757 Generated by bt-ctfirtg using the following input:
2784 struct bt_ctf_field_type
*root
= NULL
;
2785 struct bt_ctf_field_type
*root_a
= NULL
;
2786 struct bt_ctf_field_type
*root_a_int
= NULL
;
2787 struct bt_ctf_field_type
*root_b
= NULL
;
2788 struct bt_ctf_field_type
*root_b_GLASS
= NULL
;
2789 struct bt_ctf_field_type
*root_b_OF
= NULL
;
2790 struct bt_ctf_field_type
*root_c
= NULL
;
2793 root
= bt_ctf_field_type_structure_create();
2795 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2797 root_a_int
= bt_ctf_field_type_integer_create(16);
2799 ret
= bt_ctf_field_type_integer_set_signed(root_a_int
, 0);
2801 ret
= bt_ctf_field_type_integer_set_base(root_a_int
, 10);
2803 ret
= bt_ctf_field_type_integer_set_encoding(root_a_int
, CTF_STRING_NONE
);
2805 ret
= bt_ctf_field_type_set_byte_order(root_a_int
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2807 ret
= bt_ctf_field_type_set_alignment(root_a_int
, 8);
2809 root_a
= bt_ctf_field_type_enumeration_create(root_a_int
);
2811 ret
= bt_ctf_field_type_enumeration_add_mapping(root_a
, "GLASS", 0, 0);
2813 ret
= bt_ctf_field_type_enumeration_add_mapping(root_a
, "OF", 1, 1);
2815 ret
= bt_ctf_field_type_enumeration_add_mapping(root_a
, "WATER", 2, 2);
2817 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2819 root_b
= bt_ctf_field_type_variant_create(NULL
, "a");
2821 root_b_GLASS
= bt_ctf_field_type_string_create();
2822 assert(root_b_GLASS
);
2823 ret
= bt_ctf_field_type_string_set_encoding(root_b_GLASS
, CTF_STRING_UTF8
);
2825 ret
= bt_ctf_field_type_variant_add_field(root_b
, root_b_GLASS
, "GLASS");
2827 root_b_OF
= bt_ctf_field_type_integer_create(2);
2829 ret
= bt_ctf_field_type_integer_set_signed(root_b_OF
, 0);
2831 ret
= bt_ctf_field_type_integer_set_base(root_b_OF
, 10);
2833 ret
= bt_ctf_field_type_integer_set_encoding(root_b_OF
, CTF_STRING_NONE
);
2835 ret
= bt_ctf_field_type_set_byte_order(root_b_OF
, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN
);
2837 ret
= bt_ctf_field_type_set_alignment(root_b_OF
, 1);
2839 ret
= bt_ctf_field_type_variant_add_field(root_b
, root_b_OF
, "OF");
2841 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2843 root_c
= bt_ctf_field_type_string_create();
2845 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2847 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2853 BT_PUT(root_b_GLASS
);
2861 void test_fail_variant_tag_mismatch_mappings(void)
2863 struct bt_ctf_field_type
*ep
;
2864 struct bt_ctf_event
*event
;
2866 ep
= test_fail_variant_tag_mismatch_mappings_get_ep();
2868 event
= create_event_with_context_and_payload(NULL
, ep
);
2869 ok(!event
, "Variant FT with mismatching tag FT is invalid");
2876 struct bt_ctf_field_type
*test_fail_sequence_tag_is_not_int_get_ep(void)
2879 Generated by bt-ctfirtg using the following input:
2895 struct bt_ctf_field_type
*root
= NULL
;
2896 struct bt_ctf_field_type
*root_a
= NULL
;
2897 struct bt_ctf_field_type
*root_b
= NULL
;
2898 struct bt_ctf_field_type
*root_b_elem
= NULL
;
2899 struct bt_ctf_field_type
*root_c
= NULL
;
2902 root
= bt_ctf_field_type_structure_create();
2904 ret
= bt_ctf_field_type_set_alignment(root
, 8);
2906 root_a
= bt_ctf_field_type_string_create();
2908 ret
= bt_ctf_field_type_string_set_encoding(root_a
, CTF_STRING_UTF8
);
2910 ret
= bt_ctf_field_type_structure_add_field(root
, root_a
, "a");
2912 root_b_elem
= bt_ctf_field_type_string_create();
2913 assert(root_b_elem
);
2914 ret
= bt_ctf_field_type_string_set_encoding(root_b_elem
, CTF_STRING_UTF8
);
2916 root_b
= bt_ctf_field_type_sequence_create(root_b_elem
, "a");
2918 ret
= bt_ctf_field_type_structure_add_field(root
, root_b
, "b");
2920 root_c
= bt_ctf_field_type_string_create();
2922 ret
= bt_ctf_field_type_string_set_encoding(root_c
, CTF_STRING_UTF8
);
2924 ret
= bt_ctf_field_type_structure_add_field(root
, root_c
, "c");
2929 BT_PUT(root_b_elem
);
2936 void test_fail_sequence_tag_is_not_int(void)
2938 struct bt_ctf_field_type
*ep
;
2939 struct bt_ctf_event
*event
;
2941 ep
= test_fail_sequence_tag_is_not_int_get_ep();
2943 event
= create_event_with_context_and_payload(NULL
, ep
);
2944 ok(!event
, "Sequence FT with non-enum length FT is invalid");
2951 void test_fail(void)
2953 test_fail_unavailable_root();
2954 test_fail_target_is_root();
2955 test_fail_target_is_after_source();
2956 test_fail_target_is_ancestor_of_source();
2957 test_fail_target_is_source();
2958 test_fail_variant_tag_is_not_enum();
2959 test_fail_variant_tag_mismatch_mappings();
2960 test_fail_sequence_tag_is_not_int();