#!/bin/bash
# This tests basic omuxsock functionality. A socket receiver is started which sends
# all data to an output file, then a rsyslog instance is started which generates
# messages and sends them to the unix socket. Datagram sockets are being used.
# added 2010-08-06 by Rgerhards
. ${srcdir:=.}/diag.sh init
check_command_available timeout

uname
if [ $(uname) = "FreeBSD" ] ; then
   echo "This test currently does not work on FreeBSD."
   exit 77
fi

# create the pipe and start a background process that copies data from
# it to the "regular" work file
generate_conf
add_conf '
$MainMsgQueueTimeoutShutdown 10000

$ModLoad ../plugins/omuxsock/.libs/omuxsock
$template outfmt,"%msg:F,58:2%\n"
$OMUXSockSocket '$RSYSLOG_DYNNAME'-testbench-dgram-uxsock
:msg, contains, "msgnum:" :omuxsock:;outfmt
'
timeout 30s ./uxsockrcvr -s$RSYSLOG_DYNNAME-testbench-dgram-uxsock -o $RSYSLOG_OUT_LOG -t 60 &
BGPROCESS=$!
echo background uxsockrcvr process id is $BGPROCESS

# now do the usual run
startup
# 10000 messages should be enough
injectmsg 0 10000
shutdown_when_empty # shut down rsyslogd when done processing messages
wait_shutdown

# wait for the cp process to finish, do pipe-specific cleanup
echo shutting down uxsockrcvr...
# TODO: we should do this more reliable in the long run! (message counter? timeout?)
kill $BGPROCESS
wait $BGPROCESS
echo background process has terminated, continue test...

# and continue the usual checks
seq_check 0 9999
exit_test
