#define METADATA_LINE_SIZE 512
#define SEQUENCE_TEST_LENGTH 10
#define ARRAY_TEST_LENGTH 5
-#define PACKET_RESIZE_TEST_LENGTH 100000
+#define PACKET_RESIZE_TEST_LENGTH 5
#define DEFAULT_CLOCK_FREQ 1000000000
#define DEFAULT_CLOCK_PRECISION 1
#define DEFAULT_CLOCK_TIME 0
#define DEFAULT_CLOCK_VALUE 0
-#define NR_TESTS 612
+#define NR_TESTS 634
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);
goto end;
}
+ ret = bt_ctf_stream_class_set_packet_context_type(stream_class, NULL);
+ assert(ret == 0);
+ ret = bt_ctf_stream_class_set_event_header_type(stream_class, NULL);
+ assert(ret == 0);
+
ok(bt_ctf_stream_class_get_trace(NULL) == NULL,
"bt_ctf_stream_class_get_trace handles NULL correctly");
ok(bt_ctf_stream_class_get_trace(stream_class) == NULL,
/* Create writer, writer stream class, stream, and clock */
writer = bt_ctf_writer_create(trace_path);
assert(writer);
+ writer_clock = bt_ctf_clock_create("writer_clock");
+ assert(writer_clock);
+ ret = bt_ctf_writer_add_clock(writer, writer_clock);
+ assert(!ret);
ret = bt_ctf_writer_set_byte_order(writer, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN);
assert(!ret);
writer_trace = bt_ctf_writer_get_trace(writer);
ret = bt_ctf_stream_class_set_event_header_type(writer_sc,
empty_struct_ft);
assert(!ret);
+ ret = bt_ctf_stream_class_set_clock(writer_sc, writer_clock);
+ assert(!ret);
ret = bt_ctf_trace_add_stream_class(writer_trace, writer_sc);
assert(!ret);
writer_stream = bt_ctf_stream_create(writer_sc, writer_stream_name);
assert(writer_stream);
ok(!strcmp(bt_ctf_stream_get_name(writer_stream), writer_stream_name),
"bt_ctf_stream_get_name() returns the stream's name");
- writer_clock = bt_ctf_clock_create("writer_clock");
- assert(writer_clock);
- ret = bt_ctf_writer_add_clock(writer, writer_clock);
- assert(!ret);
/* 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,
empty_struct_ft);
assert(!ret);
+ ret = bt_ctf_stream_class_set_packet_context_type(non_writer_sc, NULL);
+ assert(!ret);
ret = bt_ctf_trace_add_stream_class(non_writer_trace, non_writer_sc);
assert(!ret);
non_writer_stream = bt_ctf_stream_create(non_writer_sc, NULL);
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);
+ assert(ret == 0);
ret = bt_ctf_trace_add_stream_class(trace, stream_class);
assert(ret == 0);
stream = bt_ctf_stream_create(stream_class, "hello");
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_NONE),
+ "Cannot set a trace's byte order to BT_CTF_BYTE_ORDER_NONE");
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 bt_ctf_trace_get_environment_field_name */
ok(bt_ctf_trace_get_environment_field_name_by_index(NULL, 0) == NULL,
"bt_ctf_trace_get_environment_field_name handles a NULL trace correctly");
- ok(bt_ctf_trace_get_environment_field_name_by_index(trace, -1) == NULL,
- "bt_ctf_trace_get_environment_field_name handles an invalid index correctly (negative)");
ok(bt_ctf_trace_get_environment_field_name_by_index(trace, 5) == NULL,
"bt_ctf_trace_get_environment_field_name handles an invalid index correctly (too large)");
ret_string = bt_ctf_trace_get_environment_field_name_by_index(trace, 0);
/* Test bt_ctf_trace_get_environment_field_value */
ok(bt_ctf_trace_get_environment_field_value_by_index(NULL, 0) == NULL,
"bt_ctf_trace_get_environment_field_value handles a NULL trace correctly");
- ok(bt_ctf_trace_get_environment_field_value_by_index(trace, -1) == NULL,
- "bt_ctf_trace_get_environment_field_value handles an invalid index correctly (negative)");
ok(bt_ctf_trace_get_environment_field_value_by_index(trace, 5) == NULL,
"bt_ctf_trace_get_environment_field_value handles an invalid index correctly (too large)");
obj = bt_ctf_trace_get_environment_field_value_by_index(trace, 1);
"bt_ctf_trace_get_clock_class_count returns the correct number of clocks");
ok(!bt_ctf_trace_get_clock_class_by_index(NULL, 0),
"bt_ctf_trace_get_clock_class correctly handles NULL");
- ok(!bt_ctf_trace_get_clock_class_by_index(trace, -1),
- "bt_ctf_trace_get_clock_class correctly handles negative indexes");
ok(!bt_ctf_trace_get_clock_class_by_index(trace, 1),
"bt_ctf_trace_get_clock_class correctly handles out of bound accesses");
ret_clock_class = bt_ctf_trace_get_clock_class_by_index(trace, 0);
test_static_trace();
+ test_trace_is_static_listener();
+
test_trace_uuid();
metadata_string = bt_ctf_writer_get_metadata_string(writer);