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