]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-journal-importer.c
Merge pull request #11827 from keszybz/pkgconfig-variables
[thirdparty/systemd.git] / src / test / test-journal-importer.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
48ccb60d
ZJS
2
3#include <sys/types.h>
4#include <sys/stat.h>
5#include <fcntl.h>
6
55890a40 7#include "alloc-util.h"
48ccb60d
ZJS
8#include "log.h"
9#include "journal-importer.h"
55890a40 10#include "path-util.h"
48ccb60d 11#include "string-util.h"
cc100a5a 12#include "tests.h"
48ccb60d
ZJS
13
14static void assert_iovec_entry(const struct iovec *iovec, const char* content) {
15 assert_se(strlen(content) == iovec->iov_len);
16 assert_se(memcmp(content, iovec->iov_base, iovec->iov_len) == 0);
17}
18
19#define COREDUMP_PROC_GROUP \
20 "COREDUMP_PROC_CGROUP=1:name=systemd:/\n" \
21 "0::/user.slice/user-1002.slice/user@1002.service/gnome-terminal-server.service\n"
22
23static void test_basic_parsing(void) {
24 _cleanup_(journal_importer_cleanup) JournalImporter imp = {};
55890a40 25 _cleanup_free_ char *journal_data_path = NULL;
48ccb60d
ZJS
26 int r;
27
62a85ee0 28 journal_data_path = path_join(get_testdata_dir(), "journal-data/journal-1.txt");
55890a40 29 imp.fd = open(journal_data_path, O_RDONLY|O_CLOEXEC);
48ccb60d
ZJS
30 assert_se(imp.fd >= 0);
31
32 do
33 r = journal_importer_process_data(&imp);
f06a6bcd 34 while (r == 0 && !journal_importer_eof(&imp));
48ccb60d
ZJS
35 assert_se(r == 1);
36
37 /* We read one entry, so we should get EOF on next read, but not yet */
38 assert_se(!journal_importer_eof(&imp));
39
40 assert_se(imp.iovw.count == 6);
41 assert_iovec_entry(&imp.iovw.iovec[0], "_BOOT_ID=1531fd22ec84429e85ae888b12fadb91");
42 assert_iovec_entry(&imp.iovw.iovec[1], "_TRANSPORT=journal");
43 assert_iovec_entry(&imp.iovw.iovec[2], COREDUMP_PROC_GROUP);
44 assert_iovec_entry(&imp.iovw.iovec[3], "COREDUMP_RLIMIT=-1");
45 assert_iovec_entry(&imp.iovw.iovec[4], COREDUMP_PROC_GROUP);
46 assert_iovec_entry(&imp.iovw.iovec[5], "_SOURCE_REALTIME_TIMESTAMP=1478389147837945");
47
48 /* Let's check if we get EOF now */
49 r = journal_importer_process_data(&imp);
50 assert_se(r == 0);
51 assert_se(journal_importer_eof(&imp));
52}
53
f06a6bcd
ZJS
54static void test_bad_input(void) {
55 _cleanup_(journal_importer_cleanup) JournalImporter imp = {};
55890a40 56 _cleanup_free_ char *journal_data_path = NULL;
f06a6bcd
ZJS
57 int r;
58
62a85ee0 59 journal_data_path = path_join(get_testdata_dir(), "journal-data/journal-2.txt");
55890a40 60 imp.fd = open(journal_data_path, O_RDONLY|O_CLOEXEC);
f06a6bcd
ZJS
61 assert_se(imp.fd >= 0);
62
63 do
64 r = journal_importer_process_data(&imp);
65 while (!journal_importer_eof(&imp));
66 assert_se(r == 0); /* If we don't have enough input, 0 is returned */
67
68 assert_se(journal_importer_eof(&imp));
69}
70
48ccb60d 71int main(int argc, char **argv) {
6d7c4033 72 test_setup_logging(LOG_DEBUG);
48ccb60d
ZJS
73
74 test_basic_parsing();
f06a6bcd 75 test_bad_input();
48ccb60d
ZJS
76
77 return 0;
78}