test_ctf_writer.c: add "trace is static" listener tests
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Sat, 27 May 2017 00:51:33 +0000 (20:51 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 9 Jun 2017 20:58:11 +0000 (16:58 -0400)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
tests/lib/test_ctf_writer.c

index ead55812207fbe85efb1f1db876b52fcf53cb2a2..62a5f06b3d7cd54148ecf4025cf79d1a64ea2dca 100644 (file)
@@ -61,7 +61,7 @@
 #define DEFAULT_CLOCK_TIME 0
 #define DEFAULT_CLOCK_VALUE 0
 
-#define NR_TESTS 609
+#define NR_TESTS 632
 
 static int64_t current_time = 42;
 
@@ -2818,6 +2818,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)
 {
@@ -3495,6 +3567,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.026648 seconds and 4 git commands to generate.