tests/lib: do not call bt_ctf_trace_set_native_byte_order() if not needed
[babeltrace.git] / tests / lib / test_ctf_writer.c
index 80e49ca47a2f665ab685c1af64a91aa6cf4a39e7..9a5f2e65b4964d1a62e64bb0519e19df1244c1d0 100644 (file)
@@ -51,7 +51,7 @@
 #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
@@ -61,7 +61,7 @@
 #define DEFAULT_CLOCK_TIME 0
 #define DEFAULT_CLOCK_VALUE 0
 
-#define NR_TESTS 612
+#define NR_TESTS 634
 
 static int64_t current_time = 42;
 
@@ -470,6 +470,7 @@ void append_simple_event(struct bt_ctf_stream_class *stream_class,
        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);
@@ -2165,6 +2166,11 @@ void test_empty_stream(struct bt_ctf_writer *writer)
                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,
@@ -2555,6 +2561,10 @@ void test_create_writer_vs_non_writer_mode(void)
        /* 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);
@@ -2564,28 +2574,25 @@ void test_create_writer_vs_non_writer_mode(void)
        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);
@@ -2773,11 +2780,10 @@ void test_static_trace(void)
 
        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");
@@ -2806,6 +2812,78 @@ void test_static_trace(void)
        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)
 {
@@ -2830,6 +2908,7 @@ 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");
 
@@ -2897,6 +2976,10 @@ int main(int argc, char **argv)
        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,
@@ -2974,8 +3057,6 @@ int main(int argc, char **argv)
        /* 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);
@@ -2997,8 +3078,6 @@ int main(int argc, char **argv)
        /* 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);
@@ -3356,8 +3435,6 @@ int main(int argc, char **argv)
                "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);
@@ -3488,6 +3565,8 @@ int main(int argc, char **argv)
 
        test_static_trace();
 
+       test_trace_is_static_listener();
+
        test_trace_uuid();
 
        metadata_string = bt_ctf_writer_get_metadata_string(writer);
This page took 0.025452 seconds and 4 git commands to generate.