Fix test: remove hardcoded /tmp path
[babeltrace.git] / tests / lib / test_ctf_writer.c
index fd73d99779a1f4dc28db8d1c1625fce70b247cb5..a2fb43f94b7d2956ae64dd3dbb31d903cf035ef9 100644 (file)
@@ -32,6 +32,7 @@
 #include <babeltrace/ref.h>
 #include <babeltrace/ctf/events.h>
 #include <babeltrace/values.h>
+#include <glib.h>
 #include <unistd.h>
 #include <babeltrace/compat/stdlib-internal.h>
 #include <stdio.h>
@@ -60,7 +61,7 @@
 #define DEFAULT_CLOCK_TIME 0
 #define DEFAULT_CLOCK_VALUE 0
 
-#define NR_TESTS 622
+#define NR_TESTS 623
 
 static int64_t current_time = 42;
 static unsigned int packet_resize_test_length = PACKET_RESIZE_TEST_DEF_LENGTH;
@@ -91,7 +92,7 @@ static
 void validate_trace(char *parser_path, char *trace_path)
 {
        int ret = 0;
-       char babeltrace_output_path[] = "/tmp/babeltrace_output_XXXXXX";
+       gchar *babeltrace_output_path;
        int babeltrace_output_fd = -1;
 
        if (!trace_path) {
@@ -99,8 +100,10 @@ void validate_trace(char *parser_path, char *trace_path)
                goto result;
        }
 
-       babeltrace_output_fd = mkstemp(babeltrace_output_path);
+       babeltrace_output_fd = g_file_open_tmp("babeltrace_output_XXXXXX",
+                       &babeltrace_output_path, NULL);
        unlink(babeltrace_output_path);
+       g_free(babeltrace_output_path);
 
        if (babeltrace_output_fd == -1) {
                diag("Failed to create a temporary file for trace parsing.");
@@ -2431,7 +2434,7 @@ static
 void test_create_writer_vs_non_writer_mode(void)
 {
        int ret;
-       char trace_path[] = "/tmp/ctfwriter_XXXXXX";
+       gchar *trace_path;
        const char *writer_stream_name = "writer stream instance";
        struct bt_ctf_writer *writer = NULL;
        struct bt_ctf_trace *writer_trace = NULL;
@@ -2454,6 +2457,7 @@ void test_create_writer_vs_non_writer_mode(void)
        struct bt_ctf_packet *packet = NULL;
        struct bt_ctf_packet *packet2 = NULL;
 
+       trace_path = g_build_filename(g_get_tmp_dir(), "ctfwriter_XXXXXX", NULL);
        if (!bt_mkdtemp(trace_path)) {
                perror("# perror");
        }
@@ -2623,6 +2627,7 @@ void test_create_writer_vs_non_writer_mode(void)
        bt_put(packet);
        bt_put(packet2);
        recursive_rmdir(trace_path);
+       g_free(trace_path);
 }
 
 static
@@ -2720,7 +2725,13 @@ void test_static_trace(void)
 static
 void trace_is_static_listener(struct bt_ctf_trace *trace, void *data)
 {
-       *((int *) data) = 1;
+       *((int *) data) |= 1;
+}
+
+static
+void trace_listener_removed(struct bt_ctf_trace *trace, void *data)
+{
+       *((int *) data) |= 2;
 }
 
 static
@@ -2740,18 +2751,19 @@ void test_trace_is_static_listener(void)
        trace = bt_ctf_trace_create();
        assert(trace);
        ret = bt_ctf_trace_add_is_static_listener(NULL,
-               trace_is_static_listener, &called1);
+               trace_is_static_listener, trace_listener_removed, &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);
+       ret = bt_ctf_trace_add_is_static_listener(trace, NULL,
+               trace_listener_removed, &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);
+               trace_is_static_listener, trace_listener_removed, &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);
+               trace_is_static_listener, trace_listener_removed, &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);
+               trace_is_static_listener, trace_listener_removed, &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)");
@@ -2761,21 +2773,22 @@ void test_trace_is_static_listener(void)
        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");
+       ok(called2 == 2, "bt_ctf_trace_remove_is_static_listener() calls the remove listener");
        listener4_id = bt_ctf_trace_add_is_static_listener(trace,
-               trace_is_static_listener, &called4);
+               trace_is_static_listener, NULL, &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(called2 == 2, "\"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);
+               trace_is_static_listener, trace_listener_removed, &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(called2 == 2, "\"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;
@@ -2783,9 +2796,9 @@ void test_trace_is_static_listener(void)
        called3 = 0;
        called4 = 0;
        bt_put(trace);
-       ok(called1 == 0, "\"trace is static\" listener not called after the trace is put (1)");
+       ok(called1 == 2, "\"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(called3 == 2, "\"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)");
 }
 
@@ -2823,14 +2836,14 @@ void test_trace_uuid(void)
 int main(int argc, char **argv)
 {
        const char *env_resize_length;
-       char trace_path[] = "/tmp/ctfwriter_XXXXXX";
-       char metadata_path[sizeof(trace_path) + 9];
+       gchar *trace_path;
+       gchar *metadata_path;
        const char *clock_name = "test_clock";
        const char *clock_description = "This is a test clock";
        const char *returned_clock_name;
        const char *returned_clock_description;
        const uint64_t frequency = 1123456789;
-       const int64_t offset_s = 1351530929945824323;
+       const int64_t offset_s = 13515309;
        const int64_t offset = 1234567;
        int64_t get_offset_s,
                get_offset;
@@ -2875,12 +2888,12 @@ int main(int argc, char **argv)
 
        plan_tests(NR_TESTS);
 
+       trace_path = g_build_filename(g_get_tmp_dir(), "ctfwriter_XXXXXX", NULL);
        if (!bt_mkdtemp(trace_path)) {
                perror("# perror");
        }
 
-       strcpy(metadata_path, trace_path);
-       strcat(metadata_path + sizeof(trace_path) - 1, "/metadata");
+       metadata_path = g_build_filename(trace_path, "metadata", NULL);
 
        writer = bt_ctf_writer_create(trace_path);
        ok(writer, "bt_ctf_create succeeds in creating trace with path");
@@ -3505,6 +3518,9 @@ int main(int argc, char **argv)
 
        validate_trace(argv[1], trace_path);
 
-       //recursive_rmdir(trace_path);
+       recursive_rmdir(trace_path);
+       g_free(trace_path);
+       g_free(metadata_path);
+
        return 0;
 }
This page took 0.02733 seconds and 4 git commands to generate.