diff options
Diffstat (limited to '')
-rwxr-xr-x | tests/imjournal-statefile.sh | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/imjournal-statefile.sh b/tests/imjournal-statefile.sh new file mode 100755 index 0000000..3ad05d3 --- /dev/null +++ b/tests/imjournal-statefile.sh @@ -0,0 +1,69 @@ +#!/bin/bash +# This test injects a message and checks if it is received by +# imjournal. We use a special test string which we do not expect +# to be present in the regular log stream. So we do not expect that +# any other journal content matches our test message. We skip the +# test in case message does not make it even to journal which may +# sometimes happen in some environments. +# addd 2017-10-25 by RGerhards, released under ASL 2.0 +. ${srcdir:=.}/diag.sh init +. $srcdir/diag.sh require-journalctl +generate_conf +add_conf ' +global(workDirectory="'$RSYSLOG_DYNNAME.spool'") +module(load="../plugins/imjournal/.libs/imjournal" StateFile="imjournal.state" + # we turn off rate-limiting, else we may miss our test message: + RateLimit.interval="0" + ) + +template(name="outfmt" type="string" string="%msg%\n") +action(type="omfile" template="outfmt" file=`echo $RSYSLOG_OUT_LOG`) +' +TESTMSG="TestBenCH-RSYSLog imjournal This is a test message - $(date +%s) - $RSYSLOG_DYNNAME" +./journal_print "$TESTMSG" +if [ $? -ne 0 ]; then + echo "SKIP: failed to put test into journal." + error_exit 77 +fi + +# sleep 1 to get this test to reliably detect the message +sleep 1 + +journalctl -an 200 > /dev/null 2>&1 +if [ $? -ne 0 ]; then + echo "SKIP: cannot read journal." + error_exit 77 +fi + +journalctl -an 200 | grep -qF "$TESTMSG" +if [ $? -ne 0 ]; then + echo "SKIP: cannot find '$TESTMSG' in journal." + error_exit 77 +fi + +# do first run to process all the stuff already in journal db +startup + +# give the journal ~5 minutes to forward the message, see +# https://github.com/rsyslog/rsyslog/issues/2564#issuecomment-435849660 +content_check_with_count "$TESTMSG" 1 300 + +shutdown_when_empty +wait_shutdown + +printf '%s first rsyslogd run done, now restarting\n' "$(tb_timestamp)" + +#now do a second which should NOT capture testmsg again +# craft new testmessage as shutdown condition: +TESTMSG2="TestBenCH-RSYSLog imjournal This is a test message 2 - $(date +%s) - $RSYSLOG_DYNNAME" +startup +./journal_print "$TESTMSG2" +content_check_with_count "$TESTMSG2" 1 300 +shutdown_when_empty +wait_shutdown + +printf '%s both rsyslogd runs finished, doing final result check\n' "$(tb_timestamp)" + +# now check the original one is there +content_count_check "$TESTMSG" 1 +exit_test |