chiark / gitweb /
tests: add a program for repetitive opening and closing of the journal
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 2 Aug 2013 15:01:10 +0000 (11:01 -0400)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 2 Aug 2013 15:25:45 +0000 (11:25 -0400)
Basically wraps an example provided by George McCollister.
Should help with leaks in the future.

Makefile.am
src/journal/test-journal-init.c [new file with mode: 0644]
src/journal/test-journal-stream.c

index a4b4cb46a046216ff8a041c444391b4f7904dca0..8e64aaa6ed647fc5fa1e61070d9aec51cb3c13c3 100644 (file)
@@ -2793,6 +2793,14 @@ test_journal_stream_LDADD = \
        libsystemd-journal-internal.la \
        libsystemd-id128-internal.la
 
+test_journal_init_SOURCES = \
+       src/journal/test-journal-init.c
+
+test_journal_init_LDADD = \
+       libsystemd-shared.la \
+       libsystemd-daemon-internal.la \
+       libsystemd-journal.la
+
 test_journal_verify_SOURCES = \
        src/journal/test-journal-verify.c
 
@@ -2983,6 +2991,7 @@ tests += \
        test-journal-syslog \
        test-journal-match \
        test-journal-stream \
+       test-journal-init \
        test-journal-verify \
        test-journal-interleaving \
        test-mmap-cache \
diff --git a/src/journal/test-journal-init.c b/src/journal/test-journal-init.c
new file mode 100644 (file)
index 0000000..58f260d
--- /dev/null
@@ -0,0 +1,60 @@
+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
+
+/***
+  This file is part of systemd.
+
+  Copyright 2013 Zbigniew Jędrzejewski-Szmek
+
+  systemd is free software; you can redistribute it and/or modify it
+  under the terms of the GNU Lesser General Public License as published by
+  the Free Software Foundation; either version 2.1 of the License, or
+  (at your option) any later version.
+
+  systemd is distributed in the hope that it will be useful, but
+  WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+  Lesser General Public License for more details.
+
+  You should have received a copy of the GNU Lesser General Public License
+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
+***/
+
+#include <systemd/sd-journal.h>
+
+#include "log.h"
+#include "util.h"
+
+int main(int argc, char *argv[]) {
+        sd_journal *j;
+        int r, i, I = 100;
+        char t[] = "/tmp/journal-stream-XXXXXX";
+
+        log_set_max_level(LOG_DEBUG);
+
+        if (argc >= 2)
+                safe_atoi(argv[1], &I);
+        log_info("Running %d loops", I);
+
+        assert_se(mkdtemp(t));
+
+        for (i = 0; i < I; i++) {
+                r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY);
+                assert_se(r == 0);
+
+                sd_journal_close(j);
+
+                r = sd_journal_open_directory(&j, t, 0);
+                assert_se(r == 0);
+
+                sd_journal_close(j);
+
+                j = NULL;
+                r = sd_journal_open_directory(&j, t, SD_JOURNAL_LOCAL_ONLY);
+                assert_se(r == -EINVAL);
+                assert_se(j == NULL);
+        }
+
+        assert_se(rm_rf_dangerous(t, false, true, false) >= 0);
+
+        return 0;
+}
index 4aba7febc7f197eca1b051a32aaedd1831e1d524..6b32b252e8d6efe848c8af85bb2c85b9ab4a62f8 100644 (file)
@@ -75,7 +75,7 @@ int main(int argc, char *argv[]) {
         JournalFile *one, *two, *three;
         char t[] = "/tmp/journal-stream-XXXXXX";
         unsigned i;
-        _cleanup_journal_close_ sd_journal*j = NULL;
+        _cleanup_journal_close_ sd_journal *j = NULL;
         char *z;
         const void *data;
         size_t l;