14
15
gboolean success = TRUE;
15
16
gboolean verbose = FALSE;
17
MsgFormatOptions parse_options;
18
20
testcase(LogMessage *msg, gchar *template, gchar *expected)
20
22
LogTemplate *templ;
21
23
GString *res = g_string_sized_new(128);
22
static TimeZoneInfo *tzinfo = NULL;
25
tzinfo = time_zone_info_new(NULL);
27
templ = log_template_new("dummy", template);
28
log_template_format(templ, msg, LT_ESCAPE, TS_FMT_BSD, tzinfo, 3, 0, res);
25
LogMessage *context[2] = { msg, msg };
27
templ = log_template_new(configuration, "dummy", template);
28
if (!log_template_compile(templ, &error))
30
fprintf(stderr, "FAIL: error compiling template, template=%s, error=%s\n", template, error->message);
31
g_clear_error(&error);
35
log_template_format_with_context(templ, context, 2, NULL, LTZ_LOCAL, 0, res);
30
37
if (strcmp(res->str, expected) != 0)
37
44
fprintf(stderr, "PASS: template test success, template=%s => %s\n", template, expected);
39
47
log_template_unref(templ);
40
48
g_string_free(res, TRUE);
52
testcase_failure(gchar *template, const gchar *expected_error)
57
templ = log_template_new(configuration, NULL, template);
58
if (log_template_compile(templ, &error))
60
fprintf(stderr, "FAIL: compilation failure expected to template, but success was returned, template=%s, expected_error=%s\n", template, expected_error);
64
if (strstr(error->message, expected_error) == NULL)
66
fprintf(stderr, "FAIL: compilation error doesn't match, error=%s, expected_error=%s\n", error->message, expected_error);
71
log_template_unref(templ);
44
75
main(int argc G_GNUC_UNUSED, char *argv[] G_GNUC_UNUSED)
47
78
char *msg_str = "<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]:árvíztűrőtükörfúrógép";
53
configuration = &dummy;
54
dummy.version = 0x0201;
83
configuration = cfg_new(0x0302);
84
plugin_load_module("syslogformat", configuration, NULL);
85
plugin_load_module("basicfuncs", configuration, NULL);
86
plugin_load_module("convertfuncs", configuration, NULL);
87
msg_format_options_defaults(&parse_options);
88
msg_format_options_init(&parse_options, configuration);
89
configuration->template_options.frac_digits = 3;
90
configuration->template_options.time_zone_info[LTZ_LOCAL] = time_zone_info_new(NULL);
58
94
putenv("TZ=MET-1METDST");
61
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.10.10.10", 1010), 0, NULL, -1, 0xFFFF);
97
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.11.12.13", 1010), &parse_options);
62
98
log_msg_set_value(msg, log_msg_get_value_handle("APP.VALUE"), "value", -1);
63
99
log_msg_set_match(msg, 0, "whole-match", -1);
64
100
log_msg_set_match(msg, 1, "first-match", -1);
155
191
testcase(msg, "$PROGRAM", "syslog-ng");
156
192
testcase(msg, "$PID", "23323");
157
193
testcase(msg, "$MSGHDR", "syslog-ng[23323]:");
158
testcase(msg, "$MSG", "syslog-ng[23323]:árvíztűrőtükörfúrógép");
159
testcase(msg, "$MSGONLY", "árvíztűrőtükörfúrógép");
160
testcase(msg, "$MESSAGE", "syslog-ng[23323]:árvíztűrőtükörfúrógép");
161
testcase(msg, "$SOURCEIP", "10.10.10.10");
194
testcase(msg, "$MSG", "árvíztűrőtükörfúrógép");
195
testcase(msg, "$MESSAGE", "árvíztűrőtükörfúrógép");
196
testcase(msg, "$SOURCEIP", "10.11.12.13");
162
197
testcase(msg, "$PROGRAM/var/log/messages/$HOST/$HOST_FROM/$MONTH$DAY${QQQQQ}valami", "syslog-ng/var/log/messages/bzorp/kismacska/0211valami");
163
198
testcase(msg, "${APP.VALUE}", "value");
164
199
testcase(msg, "${APP.VALUE:-ures}", "value");
167
202
testcase(msg, "$1", "first-match");
168
203
testcase(msg, "$$$1$$", "$first-match$");
170
dummy.version = 0x0300;
205
/* template functions */
206
testcase(msg, "$(echo $HOST $PID)", "bzorp 23323");
207
testcase(msg, "$(echo \"$(echo $HOST)\" $PID)", "bzorp 23323");
208
testcase(msg, "$(echo \"$(echo '$(echo $HOST)')\" $PID)", "bzorp 23323");
209
testcase(msg, "$(echo \"$(echo '$(echo $HOST)')\" $PID)", "bzorp 23323");
210
testcase(msg, "$(echo '\"$(echo $(echo $HOST))\"' $PID)", "\"bzorp\" 23323");
211
testcase(msg, "$(ipv4-to-int $SOURCEIP)", "168496141");
213
testcase(msg, "$(grep 'facility(local3)' $PID)", "23323,23323");
214
testcase(msg, "$(grep 'facility(local3)' $PID $PROGRAM)", "23323,syslog-ng,23323,syslog-ng");
215
testcase(msg, "$(grep 'facility(local4)' $PID)", "");
216
testcase(msg, "$(grep ('$FACILITY' == 'local4') $PID)", "");
217
testcase(msg, "$(grep ('$FACILITY(' == 'local3(') $PID)", "23323,23323");
218
testcase(msg, "$(grep ('$FACILITY(' == 'local4)') $PID)", "");
219
testcase(msg, "$(grep \\'$FACILITY\\'\\ ==\\ \\'local4\\' $PID)", "");
220
testcase(msg, "$(if 'facility(local4)' alma korte)", "korte");
221
testcase(msg, "$(if 'facility(local3)' alma korte)", "alma");
223
testcase(msg, "$(if '\"$FACILITY\" lt \"local3\"' alma korte)", "korte");
224
testcase(msg, "$(if '\"$FACILITY\" le \"local3\"' alma korte)", "alma");
225
testcase(msg, "$(if '\"$FACILITY\" eq \"local3\"' alma korte)", "alma");
226
testcase(msg, "$(if '\"$FACILITY\" ne \"local3\"' alma korte)", "korte");
227
testcase(msg, "$(if '\"$FACILITY\" gt \"local3\"' alma korte)", "korte");
228
testcase(msg, "$(if '\"$FACILITY\" ge \"local3\"' alma korte)", "alma");
230
testcase(msg, "$(if '\"$FACILITY_NUM\" < \"19\"' alma korte)", "korte");
231
testcase(msg, "$(if '\"$FACILITY_NUM\" <= \"19\"' alma korte)", "alma");
232
testcase(msg, "$(if '\"$FACILITY_NUM\" == \"19\"' alma korte)", "alma");
233
testcase(msg, "$(if '\"$FACILITY_NUM\" != \"19\"' alma korte)", "korte");
234
testcase(msg, "$(if '\"$FACILITY_NUM\" > \"19\"' alma korte)", "korte");
235
testcase(msg, "$(if '\"$FACILITY_NUM\" >= \"19\"' alma korte)", "alma");
236
testcase(msg, "$(if '\"$FACILITY_NUM\" >= \"19\" and \"kicsi\" == \"nagy\"' alma korte)", "korte");
237
testcase(msg, "$(if '\"$FACILITY_NUM\" >= \"19\" or \"kicsi\" == \"nagy\"' alma korte)", "alma");
240
testcase(msg, "$(echo ${HOST}@0 ${PID}@1)", "bzorp 23323");
241
testcase(msg, "$(echo $HOST $PID)@0", "bzorp 23323");
243
testcase(msg, "$(grep 'facility(local3)' $PID)@0", "23323");
244
testcase(msg, "$(grep 'facility(local3)' $PID)@1", "23323");
245
testcase(msg, "$(grep 'facility(local3)' $PID)@2", "");
247
/* template syntax errors */
248
testcase_failure("${unbalanced_brace", "'}' is missing");
249
testcase(msg, "$unbalanced_brace}", "}");
250
testcase(msg, "$}", "$}");
251
testcase_failure("$(unbalanced_paren", "missing function name or inbalanced '('");
252
testcase(msg, "$unbalanced_paren)", ")");
255
configuration->version = 0x0201;
171
256
testcase(msg, "$MSGHDR", "syslog-ng[23323]:");
172
testcase(msg, "$MSG", "árvíztűrőtükörfúrógép");
173
testcase(msg, "$MESSAGE", "árvíztűrőtükörfúrógép");
257
testcase(msg, "$MSG", "syslog-ng[23323]:árvíztűrőtükörfúrógép");
258
testcase(msg, "$MSGONLY", "árvíztűrőtükörfúrógép");
259
testcase(msg, "$MESSAGE", "syslog-ng[23323]:árvíztűrőtükörfúrógép");
175
261
log_msg_unref(msg);
263
configuration->version = 0x0302;
177
265
msg_str = "syslog-ng: árvíztűrőtükörfúrógép [pid test]";
178
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.10.10.10", 1010), 0, NULL, -1, 0xFFFF);
266
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.11.12.13", 1010), &parse_options);
180
268
testcase(msg, "$PID", "");
181
269
log_msg_unref(msg);
183
271
msg_str = "<155>2006-02-11T10:34:56+01:00 bzorp syslog-ng[23323]:árvíztűrőtükörfúrógép";
185
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.10.10.10", 1010), LP_DONT_STORE_LEGACY_MSGHDR, NULL, -1, 0xFFFF);
273
parse_options.flags = LP_EXPECT_HOSTNAME;
274
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.11.12.13", 1010), &parse_options);
187
276
testcase(msg, "$LEGACY_MSGHDR", "");
188
277
testcase(msg, "$MSGHDR", "syslog-ng[23323]: ");
189
278
log_msg_unref(msg);
191
280
msg_str = "<132>1 2006-10-29T01:59:59.156+01:00 mymachine evntslog 3535 ID47 [exampleSDID@0 iut=\"3\" eventSource=\"Application\" eventID=\"1011\"][examplePriority@0 class=\"high\"] BOMAn application event log entry...";
192
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.10.10.10", 1010), LP_SYSLOG_PROTOCOL, NULL, -1, 0xFFFF);
281
parse_options.flags = LP_SYSLOG_PROTOCOL;
282
msg = log_msg_new(msg_str, strlen(msg_str), g_sockaddr_inet_new("10.11.12.13", 1010), &parse_options);
194
284
testcase(msg, "$PRI", "132");
195
285
testcase(msg, "$HOST", "mymachine");