mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-18 16:50:42 +01:00
A change in the inode was not detected under all circumstances, most importantly not in some logrotate cases. Includes new tests made by Andre Lorbach. They now use the logrotate tool natively to reproduce the issue.
79 lines
1.8 KiB
Bash
Executable File
79 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# This is part of the rsyslog testbench, licensed under ASL 2.0
|
|
. $srcdir/diag.sh check-inotify-only
|
|
. $srcdir/diag.sh init
|
|
check_command_available logrotate
|
|
|
|
export TESTMESSAGES=10000
|
|
export RETRIES=50
|
|
export TESTMESSAGESFULL=19999
|
|
|
|
generate_conf
|
|
add_conf '
|
|
$WorkDirectory '$RSYSLOG_DYNNAME'.spool
|
|
|
|
/* Filter out busy debug output */
|
|
global(
|
|
debug.whitelist="off"
|
|
debug.files=["rainerscript.c", "ratelimit.c", "ruleset.c", "main Q", "msg.c", "../action.c"]
|
|
)
|
|
|
|
module( load="../plugins/imfile/.libs/imfile"
|
|
mode="inotify"
|
|
PollingInterval="1")
|
|
|
|
input(type="imfile"
|
|
File="./'$RSYSLOG_DYNNAME'.input.*.log"
|
|
Tag="file:"
|
|
Severity="error"
|
|
Facility="local7"
|
|
addMetadata="on"
|
|
)
|
|
|
|
$template outfmt,"%msg:F,58:2%\n"
|
|
if $msg contains "msgnum:" then
|
|
action(
|
|
type="omfile"
|
|
file=`echo $RSYSLOG_OUT_LOG`
|
|
template="outfmt"
|
|
)
|
|
'
|
|
|
|
# Write logrotate config file
|
|
echo '"./'$RSYSLOG_DYNNAME'.input.*.log"
|
|
{
|
|
rotate 7
|
|
create
|
|
daily
|
|
missingok
|
|
notifempty
|
|
compress
|
|
}' > $RSYSLOG_DYNNAME.logrotate
|
|
|
|
# generate input file first.
|
|
./inputfilegen -m $TESTMESSAGES > $RSYSLOG_DYNNAME.input.1.log
|
|
ls -l $RSYSLOG_DYNNAME.input*
|
|
|
|
startup
|
|
|
|
# Wait until testmessages are processed by imfile!
|
|
. $srcdir/diag.sh wait-file-lines $RSYSLOG_OUT_LOG $TESTMESSAGES $RETRIES
|
|
|
|
# Logrotate on logfile
|
|
logrotate -f $RSYSLOG_DYNNAME.logrotate
|
|
./msleep 1000
|
|
|
|
# generate more input after logrotate into new logfile
|
|
./inputfilegen -m $TESTMESSAGES -i $TESTMESSAGES >> $RSYSLOG_DYNNAME.input.1.log
|
|
ls -l $RSYSLOG_DYNNAME.input*
|
|
echo ls ${RSYSLOG_DYNNAME}.spool:
|
|
ls -l ${RSYSLOG_DYNNAME}.spool
|
|
|
|
let msgcount="2* $TESTMESSAGES"
|
|
. $srcdir/diag.sh wait-file-lines $RSYSLOG_OUT_LOG $msgcount $RETRIES
|
|
|
|
shutdown_when_empty # shut down rsyslogd when done processing messages
|
|
wait_shutdown # we need to wait until rsyslogd is finished!
|
|
seq_check 0 $TESTMESSAGESFULL
|
|
exit_test
|