diff options
Diffstat (limited to 'tests/omamqp1-basic.sh')
-rwxr-xr-x | tests/omamqp1-basic.sh | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/omamqp1-basic.sh b/tests/omamqp1-basic.sh new file mode 100755 index 0000000..ceda533 --- /dev/null +++ b/tests/omamqp1-basic.sh @@ -0,0 +1,70 @@ +#!/bin/bash +# This file is part of the rsyslog project, released under ASL 2.0 +. ${srcdir:=.}/diag.sh init +. $srcdir/omamqp1-common.sh + +AMQP_URL=${AMQP_URL:-"localhost:5672"} +NUMMESSAGES=10240 + +generate_conf +if [ "${USE_VALGRIND:-}" = YES ] ; then + add_conf ' +global(debug.unloadModules="off") +' +fi +add_conf ' +template(name="tpl" type="string" + string="{\"msgnum\":\"%msg:F,58:2%\"}") + +module(load="../plugins/impstats/.libs/impstats" interval="1" + log.file="'"$RSYSLOG_DYNNAME.spool"'/stats.log" log.syslog="off" format="cee") +module(load="../contrib/omamqp1/.libs/omamqp1") + +if $msg contains "msgnum:" then + action(type="omamqp1" + host="'"$AMQP_URL"'" + target="amq.rsyslogtest") +' +qdrouterd > $RSYSLOG_DYNNAME.spool/qdrouterd.log 2>&1 & qdrouterdpid=$! +sleep 5 # give qdrouterd a chance to start up and listen +# have to start reader before writer - like a pipe - for the client, NUMMESSAGES could +# be much less than the number of records if batching is used - for the client, it means +# batches, not records - but there can't be more batches than records +amqp_simple_recv $AMQP_URL amq.rsyslogtest $NUMMESSAGES > $RSYSLOG_DYNNAME.spool/amqp_simple_recv.out 2>&1 & +#export RSYSLOG_DEBUG=debug +#export RSYSLOG_DEBUGLOG=/tmp/rsyslog.debug.log +startup +if [ -n "${USE_GDB:-}" ] ; then + echo attach gdb here + sleep 54321 || : +fi +injectmsg 0 $NUMMESSAGES +shutdown_when_empty +wait_shutdown + +timeout=60 +for ii in $( seq 1 $timeout ) ; do + if grep -q "msgnum:00*$(( NUMMESSAGES - 1 ))" $RSYSLOG_DYNNAME.spool/amqp_simple_recv.out ; then + break + fi + sleep 1 +done +kill $qdrouterdpid > /dev/null 2>&1 || kill -9 $qdrouterdpid > /dev/null 2>&1 || : +# you would think there would be a better way to do this . . . +kill $( pgrep -f 'python.*simple_recv.py' ) +if [ $ii = $timeout ] ; then + echo ERROR: amqp_simple_recv did not receive all $NUMMESSAGES messages in $timeout seconds + error_exit 1 +fi + +$PYTHON -c 'import sys +inp = file(sys.argv[1],"r").read() +last = 0 +idx = inp.find("msgnum:",last) +while idx > -1: + msgstr = inp[(idx+7):(idx+15)] + print msgstr + last = idx+16 + idx = inp.find("msgnum:",last) +' $RSYSLOG_DYNNAME.spool/amqp_simple_recv.out > $RSYSLOG_OUT_LOG +seq_check |