summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2009-05-25 15:39:18 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2009-05-25 15:39:18 +0200
commitddf74cc165c828139632170224356175c9c24e96 (patch)
tree9ed6cf51bd6dfbf4aef2025914cdb6aad0f09694
parentb9549380270fa68e27e8ee3f049c7d34156a85ff (diff)
downloadrsyslog-ddf74cc165c828139632170224356175c9c24e96.tar.gz
rsyslog-ddf74cc165c828139632170224356175c9c24e96.tar.xz
rsyslog-ddf74cc165c828139632170224356175c9c24e96.zip
added test suite for persistent queue shutdown
-rw-r--r--tests/Makefile.am5
-rwxr-xr-xtests/memq-persist.sh43
-rw-r--r--tests/testsuites/memq-persist1.conf25
-rw-r--r--tests/testsuites/memq-persist2.conf20
4 files changed, 92 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index caa95c51..92401511 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,6 +1,6 @@
TESTRUNS = rt_init rscript
check_PROGRAMS = $(TESTRUNS) ourtail nettester tcpflood chkseq
-TESTS = $(TESTRUNS) cfg.sh manytcp.sh diskqueue.sh imtcp-multiport.sh
+TESTS = $(TESTRUNS) cfg.sh manytcp.sh diskqueue.sh imtcp-multiport.sh memq-persist.sh
if ENABLE_OMSTDOUT
TESTS += omod-if-array.sh parsertest.sh inputname.sh fieldtest.sh
endif
@@ -50,6 +50,9 @@ EXTRA_DIST= 1.rstest 2.rstest 3.rstest err1.rstest \
testsuites/1.inputname_imtcp_12516 \
omod-if-array.sh \
waitqueueempty.sh \
+ memq-persist.sh \
+ testsuites/memq-persist1.sh \
+ testsuites/memq-persist2.sh \
DiagTalker.java \
cfg.sh
diff --git a/tests/memq-persist.sh b/tests/memq-persist.sh
new file mode 100755
index 00000000..108cba57
--- /dev/null
+++ b/tests/memq-persist.sh
@@ -0,0 +1,43 @@
+# Test for memory queue which is persisted at shutdown. The
+# plan is to start an instance, emit some data, do a relatively
+# fast shutdown and then re-start the engine to process the
+# remaining data.
+# added 2009-05-25 by Rgerhards
+# This file is part of the rsyslog project, released under GPLv3
+# uncomment for debugging support:
+#set -o xtrace
+#export RSYSLOG_DEBUG="debug nostdout"
+#export RSYSLOG_DEBUGLOG="log"
+echo testing memory queue persisting to disk
+$srcdir/killrsyslog.sh # kill rsyslogd if it runs for some reason
+rm -rf test-spool
+mkdir test-spool
+rm -f work rsyslog.out.log rsyslog.out.log.save # work files
+../tools/rsyslogd -c4 -u2 -n -irsyslog.pid -M../runtime/.libs:../.libs -f$srcdir/testsuites/memq-persist1.conf &
+sleep 1
+echo "rsyslogd started with pid " `cat rsyslog.pid`
+# 20000 messages should be enough
+./tcpflood 127.0.0.1 13514 1 10000
+if [ "$?" -ne "0" ]; then
+ echo "error during tcpflood! see rsyslog.out.log.save for what was written"
+ cp rsyslog.out.log rsyslog.out.log.save
+fi
+sleep 3 # we need to wait to ensure everything is received (less 1 second would be better)
+kill `cat rsyslog.pid`
+sleep 5 # wait for engine to terminate
+echo There must exist some files now:
+ls -l test-spool
+# restart engine and have rest processed
+../tools/rsyslogd -c4 -u2 -n -irsyslog.pid -M../runtime/.libs:../.libs -f$srcdir/testsuites/memq-persist2.conf &
+$srcdir/waitqueueempty.sh # wait until rsyslogd is done processing messages
+kill `cat rsyslog.pid`
+rm -f work
+sort < rsyslog.out.log > work
+./chkseq work 0 9999
+if [ "$?" -ne "0" ]; then
+ # rm -f work rsyslog.out.log
+ echo "sequence error detected"
+ exit 1
+fi
+rm -f work rsyslog.out.log
+rm -rf test-spool
diff --git a/tests/testsuites/memq-persist1.conf b/tests/testsuites/memq-persist1.conf
new file mode 100644
index 00000000..5240090f
--- /dev/null
+++ b/tests/testsuites/memq-persist1.conf
@@ -0,0 +1,25 @@
+# Test for persisting messages to disk on shutdown
+# rgerhards, 2009-04-17
+$ModLoad ../plugins/imtcp/.libs/imtcp
+$MainMsgQueueTimeoutShutdown 1
+$MainMsgQueueSaveOnShutdown on
+$InputTCPServerRun 13514
+
+$ModLoad ../plugins/imdiag/.libs/imdiag
+$IMDiagServerRun 13500
+
+$ModLoad ../plugins/omtesting/.libs/omtesting
+
+$ErrorMessagesToStderr off
+
+# set spool locations and switch queue to disk-only mode
+$WorkDirectory test-spool
+$MainMsgQueueFilename mainq
+$MainMsgQueueType LinkedList
+
+$template outfmt,"%msg:F,58:2%\n"
+$template dynfile,"rsyslog.out.log" # trick to use relative path names!
+:msg, contains, "msgnum:" ?dynfile;outfmt
+
+# delay execution so that a queue can build up:
+*.* :omtesting:sleep 0 1000
diff --git a/tests/testsuites/memq-persist2.conf b/tests/testsuites/memq-persist2.conf
new file mode 100644
index 00000000..23e29e2f
--- /dev/null
+++ b/tests/testsuites/memq-persist2.conf
@@ -0,0 +1,20 @@
+# Test for persisting messages to disk on shutdown
+# rgerhards, 2009-04-17
+$ModLoad ../plugins/imtcp/.libs/imtcp
+$MainMsgQueueTimeoutShutdown 10000
+$MainMsgQueueSaveOnShutdown on
+$InputTCPServerRun 13514
+
+$ModLoad ../plugins/imdiag/.libs/imdiag
+$IMDiagServerRun 13500
+
+$ErrorMessagesToStderr off
+
+# set spool locations and switch queue to disk-only mode
+$WorkDirectory test-spool
+$MainMsgQueueFilename mainq
+$MainMsgQueueType LinkedList
+
+$template outfmt,"%msg:F,58:2%\n"
+$template dynfile,"rsyslog.out.log" # trick to use relative path names!
+:msg, contains, "msgnum:" ?dynfile;outfmt