#include <unistd.h>
#include <babeltrace/compat/stdlib-internal.h>
#include <stdio.h>
-#include <sys/utsname.h>
+#include <babeltrace/compat/utsname-internal.h>
#include <babeltrace/compat/limits-internal.h>
#include <babeltrace/compat/stdio-internal.h>
#include <string.h>
#define DEFAULT_CLOCK_TIME 0
#define DEFAULT_CLOCK_VALUE 0
-#define NR_TESTS 609
+#define NR_TESTS 633
static int64_t current_time = 42;
ok(iter, "bt_ctf_field_enumeration_get_mappings returns an iterator to matching mappings");
ret = bt_ctf_field_type_enumeration_mapping_iterator_get_signed(iter, &ret_char, NULL, NULL);
ok(!ret && ret_char, "bt_ctf_field_type_enumeration_mapping_iterator_get_signed return a mapping name");
+ assert(ret_char);
ok(!strcmp(ret_char, mapping_name_negative_test),
"bt_ctf_field_enumeration_get_single_mapping_name returns the correct mapping name with an signed container");
ret = bt_ctf_event_set_payload(simple_event, "enum_field", enum_field);
inner_structure_type, "inner_structure"),
"Add inner_structure field to complex structure");
- ok(bt_ctf_event_class_create("clock") == NULL,
- "Reject creation of an event class with an illegal name");
event_class = bt_ctf_event_class_create(complex_test_event_string);
ok(event_class, "Create an event class");
ok(bt_ctf_event_class_add_field(event_class, uint_35_type, ""),
/* Create non-writer trace, stream class, stream, and clock */
non_writer_trace = bt_ctf_trace_create();
assert(non_writer_trace);
- ret = bt_ctf_trace_set_native_byte_order(non_writer_trace,
- BT_CTF_BYTE_ORDER_LITTLE_ENDIAN);
- assert(!ret);
non_writer_sc = bt_ctf_stream_class_create("nonwriter_sc");
assert(non_writer_sc);
ret = bt_ctf_stream_class_set_event_header_type(non_writer_sc,
trace = bt_ctf_trace_create();
assert(trace);
- ret = bt_ctf_trace_set_native_byte_order(trace,
- BT_CTF_BYTE_ORDER_LITTLE_ENDIAN);
- assert(ret == 0);
stream_class = bt_ctf_stream_class_create(NULL);
assert(stream_class);
ret = bt_ctf_stream_class_set_packet_context_type(stream_class, NULL);
bt_put(clock_class);
}
+static
+void trace_is_static_listener(struct bt_ctf_trace *trace, void *data)
+{
+ *((int *) data) = 1;
+}
+
+static
+void test_trace_is_static_listener(void)
+{
+ struct bt_ctf_trace *trace;
+ int ret;
+ int called1 = 0;
+ int called2 = 0;
+ int called3 = 0;
+ int called4 = 0;
+ int listener1_id;
+ int listener2_id;
+ int listener3_id;
+ int listener4_id;
+
+ trace = bt_ctf_trace_create();
+ assert(trace);
+ ret = bt_ctf_trace_add_is_static_listener(NULL,
+ trace_is_static_listener, &called1);
+ ok(ret < 0, "bt_ctf_trace_add_is_static_listener() handles NULL (trace)");
+ ret = bt_ctf_trace_add_is_static_listener(trace, NULL, &called1);
+ ok(ret < 0, "bt_ctf_trace_add_is_static_listener() handles NULL (listener)");
+ listener1_id = bt_ctf_trace_add_is_static_listener(trace,
+ trace_is_static_listener, &called1);
+ ok(listener1_id >= 0, "bt_ctf_trace_add_is_static_listener() succeeds (1)");
+ listener2_id = bt_ctf_trace_add_is_static_listener(trace,
+ trace_is_static_listener, &called2);
+ ok(listener2_id >= 0, "bt_ctf_trace_add_is_static_listener() succeeds (2)");
+ listener3_id = bt_ctf_trace_add_is_static_listener(trace,
+ trace_is_static_listener, &called3);
+ ok(listener3_id >= 0, "bt_ctf_trace_add_is_static_listener() succeeds (3)");
+ ret = bt_ctf_trace_remove_is_static_listener(NULL, 0);
+ ok(ret < 0, "bt_ctf_trace_remove_is_static_listener() handles NULL (trace)");
+ ret = bt_ctf_trace_remove_is_static_listener(trace, -2);
+ ok(ret < 0, "bt_ctf_trace_remove_is_static_listener() handles invalid ID (negative)");
+ ret = bt_ctf_trace_remove_is_static_listener(trace, 77);
+ ok(ret < 0, "bt_ctf_trace_remove_is_static_listener() handles invalid ID (non existing)");
+ ret = bt_ctf_trace_remove_is_static_listener(trace, listener2_id);
+ ok(ret == 0, "bt_ctf_trace_remove_is_static_listener() succeeds");
+ listener4_id = bt_ctf_trace_add_is_static_listener(trace,
+ trace_is_static_listener, &called4);
+ ok(listener4_id >= 0, "bt_ctf_trace_add_is_static_listener() succeeds (4)");
+ ok(called1 == 0, "\"trace is static\" listener not called before the trace is made static (1)");
+ ok(called2 == 0, "\"trace is static\" listener not called before the trace is made static (2)");
+ ok(called3 == 0, "\"trace is static\" listener not called before the trace is made static (3)");
+ ok(called4 == 0, "\"trace is static\" listener not called before the trace is made static (4)");
+ ret = bt_ctf_trace_set_is_static(trace);
+ assert(ret == 0);
+ ret = bt_ctf_trace_add_is_static_listener(trace,
+ trace_is_static_listener, &called1);
+ ok(ret < 0,
+ "bt_ctf_trace_add_is_static_listener() fails when the trace is static");
+ ok(called1 == 1, "\"trace is static\" listener called when the trace is made static (1)");
+ ok(called2 == 0, "\"trace is static\" listener not called when the trace is made static (2)");
+ ok(called3 == 1, "\"trace is static\" listener called when the trace is made static (3)");
+ ok(called4 == 1, "\"trace is static\" listener called when the trace is made static (4)");
+ called1 = 0;
+ called2 = 0;
+ called3 = 0;
+ called4 = 0;
+ bt_put(trace);
+ ok(called1 == 0, "\"trace is static\" listener not called after the trace is put (1)");
+ ok(called2 == 0, "\"trace is static\" listener not called after the trace is put (2)");
+ ok(called3 == 0, "\"trace is static\" listener not called after the trace is put (3)");
+ ok(called4 == 0, "\"trace is static\" listener not called after the trace is put (4)");
+}
+
static
void test_trace_uuid(void)
{
"bt_ctf_trace_set_uuid() succeeds with a valid UUID");
ret_uuid = bt_ctf_trace_get_uuid(trace);
ok(ret_uuid, "bt_ctf_trace_get_uuid() returns a UUID");
+ assert(ret_uuid);
ok(memcmp(uuid, ret_uuid, 16) == 0,
"bt_ctf_trace_get_uuid() returns the expected UUID");
ok(!bt_ctf_writer_get_trace(NULL),
"bt_ctf_writer_get_trace correctly handles NULL");
trace = bt_ctf_writer_get_trace(writer);
+ ok(bt_ctf_trace_set_native_byte_order(trace, BT_CTF_BYTE_ORDER_NATIVE),
+ "Cannot set a trace's byte order to BT_CTF_BYTE_ORDER_NATIVE");
+ ok(bt_ctf_trace_set_native_byte_order(trace, BT_CTF_BYTE_ORDER_UNSPECIFIED),
+ "Cannot set a trace's byte order to BT_CTF_BYTE_ORDER_UNSPECIFIED");
ok(trace,
"bt_ctf_writer_get_trace returns a bt_ctf_trace object");
ok(bt_ctf_trace_set_native_byte_order(trace, BT_CTF_BYTE_ORDER_BIG_ENDIAN) == 0,
test_static_trace();
+ test_trace_is_static_listener();
+
test_trace_uuid();
metadata_string = bt_ctf_writer_get_metadata_string(writer);