port: tests: /proc/self/fd is Linux only, use /dev/fd on other Unices
[lttng-tools.git] / tests / unit / test_fd_tracker.c
index cb192ff80019d95b1932502c501f4882e9fbb533..c4248ed813059f5f768e0f013e0fc51ab1d46172 100644 (file)
@@ -40,6 +40,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 +61,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;
@@ -76,16 +84,17 @@ void get_temporary_directories(char **_test_directory, char **_unlink_directory)
        }
 }
 
+static
 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;
        }
 
@@ -93,12 +102,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;
@@ -107,9 +116,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);
 }
@@ -117,7 +126,7 @@ void check_fd_count(int expected_count)
 static
 int noop_open(void *data, int *fds)
 {
-        *fds = *((int *) data);
+       *fds = *((int *) data);
        return 0;
 }
 
@@ -131,7 +140,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" },
@@ -153,7 +162,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" },
@@ -183,7 +192,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) {
@@ -227,7 +236,7 @@ void test_unsuspendable_cb_return(void)
 
        get_temporary_directories(&test_directory, &unlinked_files_directory);
 
-        tracker = fd_tracker_create(test_directory, TRACKER_FD_LIMIT);
+       tracker = fd_tracker_create(test_directory, TRACKER_FD_LIMIT);
        assert(tracker);
 
        /* The error_open callback should fail and return 'expected_error'. */
@@ -272,7 +281,7 @@ void test_unsuspendable_duplicate(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);
        assert(tracker);
 
        ret = fd_tracker_open_unsuspendable_fd(tracker, &out_fd,
@@ -327,7 +336,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)
@@ -342,12 +351,12 @@ void test_unsuspendable_limit(void)
        /* This test assumes TRACKER_FD_LIMIT is a multiple of 2. */
        assert((TRACKER_FD_LIMIT % 2 == 0) && TRACKER_FD_LIMIT);
 
-        tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
+       tracker = fd_tracker_create(unlinked_files_directory, TRACKER_FD_LIMIT);
        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,
@@ -378,7 +387,7 @@ 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;;
        }
@@ -419,13 +428,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;
+               file_paths[i] = file_path;
 
                handle = fd_tracker_open_fs_handle(tracker, directory, file_path,
                                O_RDWR | O_CREAT, &mode);
@@ -480,7 +489,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;
                }
@@ -506,7 +515,7 @@ 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;
        }
@@ -624,7 +633,7 @@ 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;
        }
@@ -650,8 +659,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;
                        }
 
@@ -661,7 +670,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;
                        }
 
@@ -891,15 +900,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.027886 seconds and 4 git commands to generate.