From dcc721a95bef6f0d8e6d8775b8efe33e5aecd562 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 18:28:20 +0200 Subject: Adding upstream version 8.2402.0. Signed-off-by: Daniel Baumann --- tests/sndrcv_failover.sh | 67 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 tests/sndrcv_failover.sh (limited to 'tests/sndrcv_failover.sh') diff --git a/tests/sndrcv_failover.sh b/tests/sndrcv_failover.sh new file mode 100755 index 0000000..fd6d656 --- /dev/null +++ b/tests/sndrcv_failover.sh @@ -0,0 +1,67 @@ +#!/bin/bash +# This tests failover capabilities. Data is sent to a local port, where +# no process shall listen. Then it fails over to a second instance, then to +# a file. The second instance is started. So all data should be received +# there and none be logged to the file. +# This builds on the basic sndrcv.sh test, but adds a first, failing, +# location to the conf file. +# added 2011-06-20 by Rgerhards +# This file is part of the rsyslog project, released under ASL 2.0 +. ${srcdir:=.}/diag.sh init + +export NUMMESSAGES=50000 +export QUEUE_EMPTY_CHECK_FUNC=wait_file_lines +export DEAD_PORT=4 # a port unassigned by IANA and very unlikely to be used +export RSYSLOG_DEBUGLOG="log" + +# uncomment for debugging support: +# start up the instances +#export RSYSLOG_DEBUG="debug nostdout noprintmutexaction" +generate_conf +export PORT_RCVR="$(get_free_port)" +add_conf ' +# then SENDER sends to this port (not tcpflood!) +module(load="../plugins/imtcp/.libs/imtcp") +input(type="imtcp" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port") + +$template outfmt,"%msg:F,58:2%\n" +$template dynfile,"'$RSYSLOG_OUT_LOG'" # trick to use relative path names! +:msg, contains, "msgnum:" ?dynfile;outfmt +' +startup +export RSYSLOG_DEBUGLOG="log2" +#valgrind="valgrind" +export PORT_RCVR=$TCPFLOOD_PORT +generate_conf 2 +add_conf ' +*.* @@127.0.0.1:'$DEAD_PORT' # this must be DEAD +$ActionExecOnlyWhenPreviousIsSuspended on +& @@127.0.0.1:'$PORT_RCVR' +& ./'${RSYSLOG_DYNNAME}'.empty +$ActionExecOnlyWhenPreviousIsSuspended off +' 2 +startup 2 + +# now inject the messages into instance 2. It will connect to instance 1, +# and that instance will record the data. +injectmsg2 +# shut down sender when everything is sent, receiver continues to run concurrently +shutdown_when_empty 2 +wait_shutdown 2 +# now it is time to stop the receiver as well +shutdown_when_empty +wait_shutdown + +# do the final check +seq_check + +ls -l ${RSYSLOG_DYNNAME}.empty +if [[ -s ${RSYSLOG_DYNNAME}.empty ]] ; then + echo "FAIL: ${RSYSLOG_DYNNAME}.empty has data. Failover handling failed. Data is written" + echo " even though the previous action (in a failover chain!) properly" + echo " worked." + error_exit 1 +else + echo "${RSYSLOG_DYNNAME}.empty is empty - OK" +fi ; +exit_test -- cgit v1.2.3