mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-15 12:50:41 +01:00
78 lines
2.7 KiB
Bash
Executable File
78 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Test for disk-only queue mode
|
|
# This tests defines three rulesets, each one with its own queue. Then, it
|
|
# sends data to them and checks the outcome. Note that we do need to
|
|
# use some custom code as the test driver framework does not (yet?)
|
|
# support multi-output-file operations.
|
|
# added 2009-10-30 by Rgerhards
|
|
# This file is part of the rsyslog project, released under ASL 2.0
|
|
. ${srcdir:=.}/diag.sh init
|
|
skip_platform "SunOS" "This test does not work on Solaris. The overall queue
|
|
size check in imdiag requires atomics or mutexes on this platform, which we
|
|
do not use for performance reasons."
|
|
export NUMMESSAGES=60000
|
|
export QUEUE_EMPTY_CHECK_FUNC=wait_file_lines
|
|
generate_conf
|
|
add_conf '
|
|
$ModLoad ../plugins/imtcp/.libs/imtcp
|
|
|
|
# general definition
|
|
$template outfmt,"%msg:F,58:2%\n"
|
|
|
|
# create the individual rulesets
|
|
$ruleset file1
|
|
$RulesetCreateMainQueue on
|
|
$template dynfile1,"'$RSYSLOG_OUT_LOG'1.log" # trick to use relative path names!
|
|
:msg, contains, "msgnum:" { ?dynfile1;outfmt
|
|
./'$RSYSLOG_OUT_LOG'
|
|
}
|
|
|
|
$ruleset file2
|
|
$RulesetCreateMainQueue on
|
|
$template dynfile2,"'$RSYSLOG_OUT_LOG'2.log" # trick to use relative path names!
|
|
:msg, contains, "msgnum:" { ?dynfile2;outfmt
|
|
./'$RSYSLOG_OUT_LOG'
|
|
}
|
|
|
|
$ruleset file3
|
|
$RulesetCreateMainQueue on
|
|
$template dynfile3,"'$RSYSLOG_OUT_LOG'3.log" # trick to use relative path names!
|
|
:msg, contains, "msgnum:" { ?dynfile3;outfmt
|
|
./'$RSYSLOG_OUT_LOG'
|
|
}
|
|
|
|
# start listeners and bind them to rulesets
|
|
$InputTCPServerBindRuleset file1
|
|
$InputTCPServerListenPortFile '$RSYSLOG_DYNNAME'.tcpflood_port
|
|
$InputTCPServerRun 0
|
|
|
|
$InputTCPServerBindRuleset file2
|
|
$InputTCPServerListenPortFile '$RSYSLOG_DYNNAME'.tcpflood_port2
|
|
$InputTCPServerRun 0
|
|
|
|
$InputTCPServerBindRuleset file3
|
|
$InputTCPServerListenPortFile '$RSYSLOG_DYNNAME'.tcpflood_port3
|
|
$InputTCPServerRun 0
|
|
'
|
|
startup
|
|
assign_tcpflood_port2 "$RSYSLOG_DYNNAME.tcpflood_port2"
|
|
assign_rs_port "$RSYSLOG_DYNNAME.tcpflood_port3"
|
|
# now fill the three files (a bit sequentially, but they should
|
|
# still get their share of concurrency - to increase the chance
|
|
# we use three connections per set).
|
|
tcpflood -c3 -p$TCPFLOOD_PORT -m20000 -i0
|
|
tcpflood -c3 -p$TCPFLOOD_PORT2 -m20000 -i20000
|
|
tcpflood -c3 -p$RS_PORT -m20000 -i40000
|
|
|
|
# in this version of the imdiag, we do not have the capability to poll
|
|
# all queues for emptiness. So we do a sleep in the hopes that this will
|
|
# sufficiently drain the queues. This is race, but the best we currently
|
|
# can do... - rgerhards, 2009-11-05
|
|
shutdown_when_empty # shut down rsyslogd when done processing messages
|
|
wait_shutdown
|
|
# now consolidate all logs into a single one so that we can use the
|
|
# regular check logic
|
|
cat ${RSYSLOG_OUT_LOG}1.log ${RSYSLOG_OUT_LOG}2.log ${RSYSLOG_OUT_LOG}3.log > $RSYSLOG_OUT_LOG
|
|
seq_check
|
|
exit_test
|