]>
Commit | Line | Data |
---|---|---|
db9ecf05 | 1 | /* SPDX-License-Identifier: LGPL-2.1-or-later */ |
b070e7f3 | 2 | |
d94819c8 | 3 | #include <errno.h> |
7fb4d896 LP |
4 | #include <stdlib.h> |
5 | #include <unistd.h> | |
b070e7f3 | 6 | |
3ffd4af2 | 7 | #include "sd-journal.h" |
eb9752d2 | 8 | |
969d3294 | 9 | #include "fileio.h" |
eb9752d2 | 10 | #include "journal-send.h" |
d94819c8 | 11 | #include "macro.h" |
3c14dc61 | 12 | #include "memory-util.h" |
68da8adf | 13 | #include "tests.h" |
cbdca852 | 14 | |
68da8adf | 15 | TEST(journal_print) { |
969d3294 ZJS |
16 | assert_se(sd_journal_print(LOG_INFO, "XXX") == 0); |
17 | assert_se(sd_journal_print(LOG_INFO, "%s", "YYY") == 0); | |
18 | assert_se(sd_journal_print(LOG_INFO, "X%4094sY", "ZZZ") == 0); | |
19 | assert_se(sd_journal_print(LOG_INFO, "X%*sY", LONG_LINE_MAX - 8 - 3, "ZZZ") == 0); | |
20 | assert_se(sd_journal_print(LOG_INFO, "X%*sY", LONG_LINE_MAX - 8 - 2, "ZZZ") == -ENOBUFS); | |
21 | } | |
22 | ||
68da8adf | 23 | TEST(journal_send) { |
3c14dc61 TM |
24 | _cleanup_free_ char *huge = NULL; |
25 | ||
26 | #define HUGE_SIZE (4096*1024) | |
27 | assert_se(huge = malloc(HUGE_SIZE)); | |
1dfa7e79 | 28 | |
85049096 ZJS |
29 | /* utf-8 and non-utf-8, message-less and message-ful iovecs */ |
30 | struct iovec graph1[] = { | |
fbd0b64f | 31 | {(char*) "GRAPH=graph", STRLEN("GRAPH=graph")} |
85049096 ZJS |
32 | }; |
33 | struct iovec graph2[] = { | |
fbd0b64f | 34 | {(char*) "GRAPH=graph\n", STRLEN("GRAPH=graph\n")} |
85049096 ZJS |
35 | }; |
36 | struct iovec message1[] = { | |
fbd0b64f | 37 | {(char*) "MESSAGE=graph", STRLEN("MESSAGE=graph")} |
85049096 ZJS |
38 | }; |
39 | struct iovec message2[] = { | |
fbd0b64f | 40 | {(char*) "MESSAGE=graph\n", STRLEN("MESSAGE=graph\n")} |
85049096 ZJS |
41 | }; |
42 | ||
43 | assert_se(sd_journal_print(LOG_INFO, "piepapo") == 0); | |
44 | ||
45 | assert_se(sd_journal_send("MESSAGE=foobar", | |
46 | "VALUE=%i", 7, | |
47 | NULL) == 0); | |
b070e7f3 | 48 | |
18c7ed18 | 49 | errno = ENOENT; |
85049096 | 50 | assert_se(sd_journal_perror("Foobar") == 0); |
18c7ed18 | 51 | |
85049096 | 52 | assert_se(sd_journal_perror("") == 0); |
18c7ed18 | 53 | |
3c14dc61 TM |
54 | memcpy(huge, "HUGE=", STRLEN("HUGE=")); |
55 | memset(&huge[STRLEN("HUGE=")], 'x', HUGE_SIZE - STRLEN("HUGE=") - 1); | |
56 | huge[HUGE_SIZE - 1] = '\0'; | |
1dfa7e79 | 57 | |
85049096 ZJS |
58 | assert_se(sd_journal_send("MESSAGE=Huge field attached", |
59 | huge, | |
60 | NULL) == 0); | |
1dfa7e79 | 61 | |
85049096 ZJS |
62 | assert_se(sd_journal_send("MESSAGE=uiui", |
63 | "VALUE=A", | |
64 | "VALUE=B", | |
65 | "VALUE=C", | |
66 | "SINGLETON=1", | |
67 | "OTHERVALUE=X", | |
68 | "OTHERVALUE=Y", | |
69 | "WITH_BINARY=this is a binary value \a", | |
70 | NULL) == 0); | |
d99ae53a | 71 | |
7fb4d896 LP |
72 | syslog(LOG_NOTICE, "Hello World!"); |
73 | ||
85049096 ZJS |
74 | assert_se(sd_journal_print(LOG_NOTICE, "Hello World") == 0); |
75 | ||
76 | assert_se(sd_journal_send("MESSAGE=Hello World!", | |
77 | "MESSAGE_ID=52fb62f99e2c49d89cfbf9d6de5e3555", | |
78 | "PRIORITY=5", | |
79 | "HOME=%s", getenv("HOME"), | |
80 | "TERM=%s", getenv("TERM"), | |
81 | "PAGE_SIZE=%li", sysconf(_SC_PAGESIZE), | |
82 | "N_CPUS=%li", sysconf(_SC_NPROCESSORS_ONLN), | |
83 | NULL) == 0); | |
84 | ||
85 | assert_se(sd_journal_sendv(graph1, 1) == 0); | |
86 | assert_se(sd_journal_sendv(graph2, 1) == 0); | |
87 | assert_se(sd_journal_sendv(message1, 1) == 0); | |
88 | assert_se(sd_journal_sendv(message2, 1) == 0); | |
89 | ||
90 | /* test without location fields */ | |
91 | #undef sd_journal_sendv | |
92 | assert_se(sd_journal_sendv(graph1, 1) == 0); | |
93 | assert_se(sd_journal_sendv(graph2, 1) == 0); | |
94 | assert_se(sd_journal_sendv(message1, 1) == 0); | |
95 | assert_se(sd_journal_sendv(message2, 1) == 0); | |
9048a6cc YW |
96 | |
97 | /* The above syslog() opens a fd which is stored in libc, and the valgrind reports the fd is | |
98 | * leaked when we do not call closelog(). */ | |
99 | closelog(); | |
969d3294 ZJS |
100 | } |
101 | ||
68da8adf | 102 | static int outro(void) { |
969d3294 | 103 | /* Sleep a bit to make it easy for journald to collect metadata. */ |
037ee337 | 104 | sleep(1); |
7fb4d896 | 105 | |
eb9752d2 | 106 | close_journal_fd(); |
68da8adf JJ |
107 | |
108 | return EXIT_SUCCESS; | |
b070e7f3 | 109 | } |
68da8adf JJ |
110 | |
111 | DEFINE_TEST_MAIN_FULL(LOG_INFO, NULL, outro); |