Force usage of assert() condition when NDEBUG is defined
[lttng-tools.git] / tests / unit / test_fd_tracker.c
index 0de1729e6b6808e690c406db42e6d247f0790324..345eaf25604352b11e442c200ed2a4cea0f24228 100644 (file)
@@ -8,14 +8,12 @@
 #include <stdlib.h>
 #include <inttypes.h>
 #include <stdbool.h>
-#include <assert.h>
 #include <string.h>
 #include <stdarg.h>
 #include <tap/tap.h>
 #include <sys/types.h>
 #include <dirent.h>
 #include <stdio.h>
-#include <errno.h>
 #include <unistd.h>
 #include <fcntl.h>
 #include <sys/stat.h>
@@ -24,6 +22,7 @@
 #include <urcu.h>
 
 #include <common/compat/directory-handle.h>
+#include <common/compat/errno.h>
 #include <common/error.h>
 #include <common/fd-tracker/fd-tracker.h>
 
@@ -40,6 +39,13 @@ int lttng_opt_mi;
 #define TMP_DIR_PATTERN "/tmp/fd-tracker-XXXXXX"
 #define TEST_UNLINK_DIRECTORY_NAME "unlinked_files"
 
+#ifdef __linux__
+#define SELF_FD_DIR "/proc/self/fd"
+#else
+/* Most Unices have /dev/fd */
+#define SELF_FD_DIR "/dev/fd"
+#endif
+
 /*
  * Count of fds, beyond stdin, stderr, stdout that were open
  * at the launch of the test. This allows the test to succeed when
@@ -54,6 +60,7 @@ const char file_contents[] = "Bacon ipsum dolor amet jerky drumstick sirloin "
        "Landjaeger tri-tip salami leberkas ball tip, ham hock chuck sausage "
        "flank jerky cupim. Pig bacon chuck pancetta andouille.";
 
+static
 void get_temporary_directories(char **_test_directory, char **_unlink_directory)
 {
        int ret;
@@ -64,15 +71,15 @@ void get_temporary_directories(char **_test_directory, char **_unlink_directory)
        if (!output_dir) {
                diag("Failed to create temporary path of the form %s",
                                TMP_DIR_PATTERN);
-               assert(0);
+               abort();
        }
 
        *_test_directory = strdup(output_dir);
-       assert(*_test_directory);
+       LTTNG_ASSERT(*_test_directory);
        ret = asprintf(_unlink_directory, "%s/%s", output_dir,
                        TEST_UNLINK_DIRECTORY_NAME);
        if (ret < 0) {
-               assert(0);
+               abort();
        }
 }
 
@@ -81,12 +88,12 @@ int fd_count(void)
 {
        DIR *dir;
        struct dirent *entry;
-        int count = 0;
+       int count = 0;
 
-       dir = opendir("/proc/self/fd");
+       dir = opendir(SELF_FD_DIR);
        if (!dir) {
-               perror("# Failed to enumerate /proc/self/fd/ to count the number of used file descriptors");
-               count = -1;
+               perror("# Failed to enumerate " SELF_FD_DIR " to count the number of used file descriptors");
+               count = -1;
                goto end;
        }
 
@@ -94,12 +101,12 @@ int fd_count(void)
                if (!strcmp(entry->d_name, ".") || !strcmp(entry->d_name, "..")) {
                        continue;
                }
-               count++;
+               count++;
        }
        /* Don't account for the file descriptor opened by opendir(). */
-        count--;
+       count--;
        if (closedir(dir)) {
-               perror("# Failed to close test program's self/fd directory file descriptor");
+               perror("# Failed to close test program's " SELF_FD_DIR " directory file descriptor");
        }
 end:
        return count;
@@ -108,9 +115,9 @@ end:
 static
 void check_fd_count(int expected_count)
 {
-        int count = 0;
+       int count = 0;
 
-        count = fd_count();
+       count = fd_count();
        ok(count == expected_count, "Expected %d open file descriptors (%d are open)",
                        expected_count, count);
 }
@@ -118,7 +125,7 @@ void check_fd_count(int expected_count)
 static
 int noop_open(void *data, int *fds)
 {
-        *fds = *((int *) data);
+       *fds = *((int *) data);
        return 0;
 }
 
@@ -132,7 +139,7 @@ static
 void track_std_fds(struct fd_tracker *tracker)
 {
        int i;
-        struct { int fd; const char *name; } files[] = {
+       struct { int fd; const char *name; } files[] = {
                { .fd = fileno(stdin), .name = "stdin" },
                { .fd = fileno(stdout), .name = "stdout" },
                { .fd = fileno(stderr), .name = "stderr" },
@@ -143,7 +150,7 @@ void track_std_fds(struct fd_tracker *tracker)
 
                ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
                                &files[i].name, 1, noop_open, &files[i].fd);
-               assert(out_fd == files[i].fd);
+               LTTNG_ASSERT(out_fd == files[i].fd);
 
                ok(ret == 0, "Track unsuspendable fd %d (%s)", files[i].fd,
                                files[i].name);
@@ -154,7 +161,7 @@ static
 void untrack_std_fds(struct fd_tracker *tracker)
 {
        int i;
-        struct { int fd; const char *name; } files[] = {
+       struct { int fd; const char *name; } files[] = {
                { .fd = fileno(stdin), .name = "stdin" },
                { .fd = fileno(stdout), .name = "stdout" },
                { .fd = fileno(stderr), .name = "stderr" },
@@ -184,7 +191,7 @@ void test_unsuspendable_basic(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
        ok(tracker, "Created an fd tracker with a limit of %d simulateously opened file descriptors",
                        TRACKER_FD_LIMIT);
        if (!tracker) {
@@ -228,8 +235,8 @@ void test_unsuspendable_cb_return(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(test_directory, TRACKER_FD_LIMIT);
-       assert(tracker);
+       tracker = fd_tracker_create(test_directory, TRACKER_FD_LIMIT);
+       LTTNG_ASSERT(tracker);
 
        /* The error_open callback should fail and return 'expected_error'. */
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
@@ -244,14 +251,14 @@ void test_unsuspendable_cb_return(void)
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
                        NULL, 1, noop_open, &stdout_fd);
        ok(out_fd == stdout_fd, "fd_tracker_open_unsuspendable_fd() sets the output fd parameter to the newly-tracked fd's value");
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
 
        ret = fd_tracker_close_unsuspendable_fd(tracker,
                        &stdout_fd, 1, error_close, &expected_error);
        ok(ret == expected_error, "fd_tracker_close_unsuspendable_fd() forwards the user callback's error code");
        ret = fd_tracker_close_unsuspendable_fd(tracker,
                        &stdout_fd, 1, noop_close, &expected_error);
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
 
        fd_tracker_destroy(tracker);
        ret = rmdir(test_directory);
@@ -273,19 +280,19 @@ void test_unsuspendable_duplicate(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
-       assert(tracker);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       LTTNG_ASSERT(tracker);
 
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
                        NULL, 1, noop_open, &stdout_fd);
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
                        NULL, 1, noop_open, &stdout_fd);
        ok(ret == -EEXIST, "EEXIST reported on open of an already tracked file descriptor");
 
        ret = fd_tracker_close_unsuspendable_fd(tracker,
                        &stdout_fd, 1, noop_close, NULL);
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
 
        fd_tracker_destroy(tracker);
        ret = rmdir(test_directory);
@@ -328,7 +335,7 @@ int close_pipes(void *data, int *fds)
 
 /*
  * Validate that the tracker enforces the open file descriptor limit
- * when unsuspendable file descritptors are being opened.
+ * when unsuspendable file descriptors are being opened.
  */
 static
 void test_unsuspendable_limit(void)
@@ -341,14 +348,14 @@ void test_unsuspendable_limit(void)
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
        /* This test assumes TRACKER_FD_LIMIT is a multiple of 2. */
-       assert((TRACKER_FD_LIMIT % 2 == 0) && TRACKER_FD_LIMIT);
+       LTTNG_ASSERT((TRACKER_FD_LIMIT % 2 == 0) && TRACKER_FD_LIMIT);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
-       assert(tracker);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       LTTNG_ASSERT(tracker);
 
        ret = fd_tracker_open_unsuspendable_fd(tracker, fds,
                        NULL, TRACKER_FD_LIMIT, open_pipes, NULL);
-       ok(ret == 0, "File descriptor tracker allowed the user to meet its limit with unsuspendable file descritptors (%d)",
+       ok(ret == 0, "File descriptor tracker allowed the user to meet its limit with unsuspendable file descriptors (%d)",
                        TRACKER_FD_LIMIT);
 
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
@@ -357,7 +364,7 @@ void test_unsuspendable_limit(void)
 
        ret = fd_tracker_close_unsuspendable_fd(tracker,
                        fds, TRACKER_FD_LIMIT, close_pipes, NULL);
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
 
        fd_tracker_destroy(tracker);
        ret = rmdir(test_directory);
@@ -379,19 +386,21 @@ void test_unsuspendable_close_untracked(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
        if (!tracker) {
                goto end;;
        }
 
        ret = pipe(unknown_fds);
-       assert(!ret);
-       assert(close(unknown_fds[0]) == 0);
-       assert(close(unknown_fds[1]) == 0);
+       LTTNG_ASSERT(!ret);
+       ret = close(unknown_fds[0]);
+       LTTNG_ASSERT(ret == 0);
+       ret = close(unknown_fds[1]);
+       LTTNG_ASSERT(ret == 0);
 
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
                        NULL, 1, noop_open, &stdout_fd);
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
 
        ret = fd_tracker_close_unsuspendable_fd(tracker,
                        unknown_fds, 1, noop_close, NULL);
@@ -399,7 +408,7 @@ void test_unsuspendable_close_untracked(void)
 
        ret = fd_tracker_close_unsuspendable_fd(tracker,
                        &stdout_fd, 1, noop_close, NULL);
-       assert(!ret);
+       LTTNG_ASSERT(!ret);
 
        fd_tracker_destroy(tracker);
        ret = rmdir(test_directory);
@@ -420,13 +429,13 @@ static int open_files(struct fd_tracker *tracker,
 
        for (i = 0; i < count; i++) {
                int p_ret;
-               char *file_path;
+               char *file_path;
                struct fs_handle *handle;
                mode_t mode = S_IWUSR | S_IRUSR;
 
                p_ret = asprintf(&file_path, "file-%u", i);
-               assert(p_ret >= 0);
-               file_paths[i] = file_path;
+               LTTNG_ASSERT(p_ret >= 0);
+               file_paths[i] = file_path;
 
                handle = fd_tracker_open_fs_handle(tracker, directory, file_path,
                                O_RDWR | O_CREAT, &mode);
@@ -481,7 +490,7 @@ int cleanup_files(struct fd_tracker *tracker, const char *dir,
                        diag("Failed to unlink fs_handle to file %s", file_path);
                        ret = -1;
                }
-               if (fs_handle_close(handles[i])) {
+               if (fs_handle_close(handles[i])) {
                        diag("Failed to close fs_handle to file %s", file_path);
                        ret = -1;
                }
@@ -507,13 +516,13 @@ void test_suspendable_limit(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
        if (!tracker) {
                goto end;
        }
 
        dir_handle = lttng_directory_handle_create(test_directory);
-       assert(dir_handle);
+       LTTNG_ASSERT(dir_handle);
        dir_handle_fd_count = !!lttng_directory_handle_uses_fd(dir_handle);
 
        ret = open_files(tracker, dir_handle, files_to_create, handles,
@@ -558,7 +567,7 @@ void test_mixed_limit(void)
        }
 
        dir_handle = lttng_directory_handle_create(test_directory);
-       assert(dir_handle);
+       LTTNG_ASSERT(dir_handle);
        dir_handle_fd_count = !!lttng_directory_handle_uses_fd(dir_handle);
 
        ret = open_files(tracker, dir_handle, files_to_create, handles,
@@ -625,13 +634,13 @@ void test_suspendable_restore(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
        if (!tracker) {
                goto end;
        }
 
        dir_handle = lttng_directory_handle_create(test_directory);
-       assert(dir_handle);
+       LTTNG_ASSERT(dir_handle);
        dir_handle_fd_count = !!lttng_directory_handle_uses_fd(dir_handle);
 
        ret = open_files(tracker, dir_handle, files_to_create, handles,
@@ -651,8 +660,8 @@ void test_suspendable_restore(void)
                        fd = fs_handle_get_fd(handle);
                        if (fd < 0) {
                                write_success = false;
-                               diag("Failed to restore fs_handle to %s",
-                                               path);
+                               diag("Failed to restore fs_handle to %s",
+                                               path);
                                goto skip_write;
                        }
 
@@ -662,7 +671,7 @@ void test_suspendable_restore(void)
 
                        if (ret != 1) {
                                write_success = false;
-                               PERROR("write() to %s failed", path);
+                               PERROR("write() to %s failed", path);
                                goto skip_write;
                        }
 
@@ -691,9 +700,9 @@ skip_write:
 
                fd = lttng_directory_handle_open_file(
                                dir_handle, path, O_RDONLY, 0);
-               assert(fd >= 0);
+               LTTNG_ASSERT(fd >= 0);
                ret = fstat(fd, &fd_stat);
-               assert(!ret);
+               LTTNG_ASSERT(!ret);
                if (fd_stat.st_size != sizeof(file_contents)) {
                        diag("Content size of file %s doesn't match, got %" PRId64 ", expected %zu",
                                        path, (int64_t) fd_stat.st_size,
@@ -757,10 +766,10 @@ void test_unlink(void)
        get_temporary_directories(&test_directory, &unlinked_files_directory);
        ret = asprintf(&unlinked_file_zero, "%s/%u", unlinked_files_directory,
                        0);
-       assert(ret > 0);
+       LTTNG_ASSERT(ret > 0);
        ret = asprintf(&unlinked_file_one, "%s/%u", unlinked_files_directory,
                        1);
-       assert(ret > 0);
+       LTTNG_ASSERT(ret > 0);
 
        tracker = fd_tracker_create(unlinked_files_directory, 1);
        if (!tracker) {
@@ -768,7 +777,7 @@ void test_unlink(void)
        }
 
        dir_handle = lttng_directory_handle_create(test_directory);
-       assert(dir_handle);
+       LTTNG_ASSERT(dir_handle);
 
        /* Open two handles to the same file. */
        ret = open_same_file(tracker, dir_handle, file_name, handles_to_open,
@@ -828,7 +837,7 @@ void test_unlink(void)
        ret = open_same_file(tracker, dir_handle, file_name, 1, &new_handle);
        ok(!ret, "Successfully opened a new handle to previously unlinked file %s/%s",
                        test_directory, file_name);
-       assert(new_handle);
+       LTTNG_ASSERT(new_handle);
 
        /*
         * Unlinking the new handle should cause the file to be renamed
@@ -882,7 +891,7 @@ int main(int argc, char **argv)
        rcu_register_thread();
 
        unknown_fds_count = fd_count() - STDIO_FD_COUNT;
-       assert(unknown_fds_count >= 0);
+       LTTNG_ASSERT(unknown_fds_count >= 0);
 
        diag("Unsuspendable - basic");
        test_unsuspendable_basic();
@@ -892,15 +901,15 @@ int main(int argc, char **argv)
        test_unsuspendable_duplicate();
        diag("Unsuspendable - closing an untracked file descriptor");
        test_unsuspendable_close_untracked();
-       diag("Unsuspendable - check that file descritptor limit is enforced");
+       diag("Unsuspendable - check that file descriptor limit is enforced");
        test_unsuspendable_limit();
 
-       diag("Suspendable - check that file descritptor limit is enforced");
+       diag("Suspendable - check that file descriptor limit is enforced");
        test_suspendable_limit();
        diag("Suspendable - restoration test");
        test_suspendable_restore();
 
-       diag("Mixed - check that file descritptor limit is enforced");
+       diag("Mixed - check that file descriptor limit is enforced");
        test_mixed_limit();
 
        diag("Suspendable - Unlinking test");
This page took 0.031943 seconds and 4 git commands to generate.