summaryrefslogtreecommitdiffstats
path: root/tests/imjournal-statefile.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/imjournal-statefile.sh')
-rwxr-xr-xtests/imjournal-statefile.sh69
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