rsyslog/tests/imtcp-impstats.sh
Rainer Gerhards fd4be6b3b7
tcpsrv bugfix: input name was not properly propagated
As a result, it did not show up in pstats. Alos, we now use the input name
in worker thread to easily identify where they belong to. As thread names
have very limited length, the thread naming now is
"w<worker-number>/<input-name>".
2025-04-16 09:55:20 +02:00

51 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
# added 2025-02-27 by RGerhards, released under ASL 2.0
# This checks primarily that impstats and imtcp work together. There is little
# we can tell about the actual stats.
. ${srcdir:=.}/diag.sh init
export NUM_WORKERS=${NUM_WORKERS:-4}
export NUMMESSAGES=40000
export QUEUE_EMPTY_CHECK_FUNC=wait_file_lines
export STATSFILE="$RSYSLOG_DYNNAME.stats"
generate_conf
add_conf '
module(load="../plugins/imtcp/.libs/imtcp")
module(load="../plugins/impstats/.libs/impstats" log.file="'$STATSFILE'" interval="1")
input(type="imtcp" name="pstats-test" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port"
workerthreads="'$NUM_WORKERS'")
template(name="outfmt" type="string" string="%msg:F,58:2%\n")
:msg, contains, "msgnum:" action(type="omfile" template="outfmt"
file="'$RSYSLOG_OUT_LOG'")
'
startup
tcpflood -m $NUMMESSAGES
echo sleeping 2secs to ensure we have at least one stats interval
sleep 2
shutdown_when_empty
wait_shutdown
cat -n $STATSFILE | grep 'w./pstats-test'
NUM_STATS=$(grep 'w./pstats-test' "$STATSFILE" | wc -l)
if [ "$NUM_WORKERS" -gt 1 ]; then
EXPECTED_COUNT=$NUM_WORKERS
else
EXPECTED_COUNT=0
fi
# Check if the count matches NUM_WORKERS
if [ "$EXPECTED_COUNT" -gt 0 ]; then
if [ "$NUM_STATS" -le "$EXPECTED_COUNT" ]; then
echo "ERROR: Expected at most $EXPECTED_COUNT lines, but found $NUM_STATS in pstats"
error_exit 1
fi
else
if [ "$NUM_STATS" -ne "$EXPECTED_COUNT" ]; then
echo "ERROR: Expected $EXPECTED_COUNT lines, but found $NUM_STATS in pstats"
error_exit 1
fi
fi
seq_check
exit_test