X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=tests%2Flib%2Ftest_ctf_writer.c;h=756d168055246b276221d9b25b52f0b20d764678;hb=3975bd7e68ab519547cfb2e63fef3c12eeabdf5c;hp=e6120d2242e8adf7d47798d3db9c1ea3c480d6db;hpb=3b3b162e3dee8ebc5f5d4a99089ce83befff2ab2;p=babeltrace.git diff --git a/tests/lib/test_ctf_writer.c b/tests/lib/test_ctf_writer.c index e6120d22..756d1680 100644 --- a/tests/lib/test_ctf_writer.c +++ b/tests/lib/test_ctf_writer.c @@ -566,7 +566,7 @@ void append_simple_event(struct bt_ctf_stream_class *stream_class, bt_ctf_event_set_payload(simple_event, "enum_field_unsigned", enum_field_unsigned); ret_char = bt_ctf_field_enumeration_get_mapping_name(enum_field_unsigned); - ok(!strcmp(ret_char, mapping_name_test), + ok(ret_char && !strcmp(ret_char, mapping_name_test), "bt_ctf_field_enumeration_get_mapping_name returns the correct mapping name with an unsigned container"); ok(bt_ctf_clock_set_time(clock, current_time) == 0, "Set clock time"); @@ -875,7 +875,8 @@ void append_complex_event(struct bt_ctf_stream_class *stream_class, "bt_ctf_event_class_set_attribute cannot set \"name\" or \"model.emf.uri\" to an integer value"); BT_OBJECT_PUT(obj); - assert(obj = bt_object_integer_create_init(5)); + obj = bt_object_integer_create_init(5); + assert(obj); ok(!bt_ctf_event_class_set_attribute(event_class, "loglevel", obj), "bt_ctf_event_class_set_attribute succeeds in setting the \"loglevel\" attribute"); BT_OBJECT_PUT(obj); @@ -903,7 +904,8 @@ void append_complex_event(struct bt_ctf_stream_class *stream_class, ok(ret, "bt_ctf_event_class_set_attribute cannot set \"id\" or \"loglevel\" to a string value"); BT_OBJECT_PUT(obj); - assert(obj = bt_object_string_create_init("http://kernel.org/")); + obj = bt_object_string_create_init("http://kernel.org/"); + assert(obj); assert(!bt_ctf_event_class_set_attribute(event_class, "model.emf.uri", obj)); BT_OBJECT_PUT(obj); @@ -1615,7 +1617,7 @@ end: void test_empty_stream(struct bt_ctf_writer *writer) { int ret = 0; - struct bt_ctf_trace *trace = NULL; + struct bt_ctf_trace *trace = NULL, *ret_trace = NULL; struct bt_ctf_stream_class *stream_class = NULL; struct bt_ctf_stream *stream = NULL; @@ -1633,16 +1635,26 @@ void test_empty_stream(struct bt_ctf_writer *writer) goto end; } + 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, + "bt_ctf_stream_class_get_trace returns NULL when stream class is orphaned"); + stream = bt_ctf_writer_create_stream(writer, stream_class); if (!stream) { diag("Failed to create writer stream"); ret = -1; goto end; } + + ret_trace = bt_ctf_stream_class_get_trace(stream_class); + ok(ret_trace == trace, + "bt_ctf_stream_class_get_trace returns the correct trace after a stream has been created"); end: ok(ret == 0, "Created a stream class with default attributes and an empty stream"); bt_ctf_trace_put(trace); + bt_ctf_trace_put(ret_trace); bt_ctf_stream_put(stream); bt_ctf_stream_class_put(stream_class); } @@ -1653,7 +1665,8 @@ void test_instanciate_event_before_stream(struct bt_ctf_writer *writer) struct bt_ctf_trace *trace = NULL; struct bt_ctf_clock *clock = NULL; struct bt_ctf_stream_class *stream_class = NULL; - struct bt_ctf_stream *stream = NULL; + struct bt_ctf_stream *stream = NULL, + *ret_stream = NULL; struct bt_ctf_event_class *event_class = NULL; struct bt_ctf_event *event = NULL; struct bt_ctf_field_type *integer_type = NULL; @@ -1734,16 +1747,26 @@ void test_instanciate_event_before_stream(struct bt_ctf_writer *writer) goto end; } + ok(bt_ctf_event_get_stream(NULL) == NULL, + "bt_ctf_event_get_stream handles NULL correctly"); + ok(bt_ctf_event_get_stream(event) == NULL, + "bt_ctf_event_get_stream returns NULL on event which has not yet been appended to a stream"); + ret = bt_ctf_stream_append_event(stream, event); if (ret) { diag("Failed to append event to stream"); goto end; } + + ret_stream = bt_ctf_event_get_stream(event); + ok(ret_stream == stream, + "bt_ctf_event_get_stream returns an event's stream after it has been appended"); end: ok(ret == 0, "Create an event before instanciating its associated stream"); bt_ctf_trace_put(trace); bt_ctf_stream_put(stream); + bt_ctf_stream_put(ret_stream); bt_ctf_stream_class_put(stream_class); bt_ctf_event_class_put(event_class); bt_ctf_event_put(event); @@ -1752,6 +1775,23 @@ end: bt_ctf_clock_put(clock); } +void append_existing_event_class(struct bt_ctf_stream_class *stream_class) +{ + struct bt_ctf_event_class *event_class; + + assert(event_class = bt_ctf_event_class_create("Simple Event")); + ok(bt_ctf_stream_class_add_event_class(stream_class, event_class), + "two event classes with the same name cannot cohabit within the same stream class"); + bt_ctf_event_class_put(event_class); + + event_class = bt_ctf_event_class_create("different name, ok"); + assert(event_class); + assert(!bt_ctf_event_class_set_id(event_class, 11)); + ok(bt_ctf_stream_class_add_event_class(stream_class, event_class), + "two event classes with the same ID cannot cohabit within the same stream class"); + bt_ctf_event_class_put(event_class); +} + int main(int argc, char **argv) { char trace_path[] = "/tmp/ctfwriter_XXXXXX"; @@ -2347,6 +2387,9 @@ int main(int argc, char **argv) ok(!bt_ctf_stream_set_packet_header(stream1, packet_header), "Successfully set a stream's packet header"); + ok(bt_ctf_writer_add_environment_field(writer, "new_field", "test") == 0, + "Add environment field to writer after stream creation"); + test_instanciate_event_before_stream(writer); append_simple_event(stream_class, stream1, clock); @@ -2355,6 +2398,8 @@ int main(int argc, char **argv) append_complex_event(stream_class, stream1, clock); + append_existing_event_class(stream_class); + test_empty_stream(writer); metadata_string = bt_ctf_writer_get_metadata_string(writer); @@ -2365,7 +2410,6 @@ int main(int argc, char **argv) validate_trace(argv[2], trace_path); bt_ctf_clock_put(clock); - bt_ctf_stream_class_put(stream_class); bt_ctf_stream_class_put(ret_stream_class); bt_ctf_writer_put(writer); bt_ctf_stream_put(stream1); @@ -2381,6 +2425,10 @@ int main(int argc, char **argv) bt_ctf_trace_put(trace); free(metadata_string); + ok(bt_ctf_stream_class_get_trace(stream_class) == NULL, + "bt_ctf_stream_class_get_trace returns NULL after its trace has been reclaimed"); + bt_ctf_stream_class_put(stream_class); + /* Remove all trace files and delete temporary trace directory */ DIR *trace_dir = opendir(trace_path); if (!trace_dir) {