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