diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2009-11-12 13:23:03 +0100 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2009-11-12 13:23:03 +0100 |
commit | 329b20451f0ed767dbf08903cab9a380ff1f4302 (patch) | |
tree | 9a99e78a33388902f16da421e48b47ba709a1cf1 | |
parent | ef1b6c725bb7b8e3cee6e4264a630975a496c5bd (diff) | |
parent | 0fd8143d8719d08d9feb0a304bb352dd7c4bbab6 (diff) | |
download | rsyslog-329b20451f0ed767dbf08903cab9a380ff1f4302.tar.gz rsyslog-329b20451f0ed767dbf08903cab9a380ff1f4302.tar.xz rsyslog-329b20451f0ed767dbf08903cab9a380ff1f4302.zip |
Merge branch 'v4-beta' into v4-devel
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | action.c | 3 | ||||
-rw-r--r-- | tests/Makefile.am | 5 | ||||
-rwxr-xr-x | tests/execonlyonce.sh | 28 | ||||
-rw-r--r-- | tests/testsuites/execonlyonce.conf | 12 | ||||
-rw-r--r-- | tests/testsuites/execonlyonce.data | 2 |
6 files changed, 55 insertions, 1 deletions
@@ -19,6 +19,8 @@ Version 4.5.7 [v4-beta] (rgerhards), 2009-11-?? be generated only after the process has started, but not right from the beginning. This is assumed to be useful for hard-to-find bugs. Also improved the doc on the debug system. +- bugfix [imported from 4.4.3]: $ActionExecOnlyOnceEveryInterval did + not work. --------------------------------------------------------------------------- Version 4.5.6 [v4-beta] (rgerhards), 2009-11-05 - bugfix: named pipes did no longer work (they always got an open error) @@ -181,6 +183,10 @@ Version 4.5.0 [DEVEL] (rgerhards), 2009-07-02 an abort --------------------------------------------------------------------------- Version 4.4.3 [v4-stable] (rgerhards), 2009-10-?? +- bugfix: $ActionExecOnlyOnceEveryInterval did not work. + This was a regression from the time() optimizations done in v4. + Bug tracker: http://bugzilla.adiscon.com/show_bug.cgi?id=143 + Thanks to Klaus Tachtler for reporting this bug. - bugfix: potential hang condition on queue shutdown [imported from v3-stable] --------------------------------------------------------------------------- @@ -710,7 +710,7 @@ actionWriteToAction(action_t *pAction) * a purely logical point of view. However, if safes us to check the system time in * (those common) cases where ExecOnceInterval is not used. -- rgerhards, 2008-09-16 */ - if(pAction->f_time != 0 && pAction->iSecsExecOnceInterval > 0 && + if(pAction->iSecsExecOnceInterval > 0 && pAction->iSecsExecOnceInterval + pAction->tLastExec > getActNow(pAction)) { /* in this case we need to discard the message - its not yet time to exec the action */ DBGPRINTF("action not yet ready again to be executed, onceInterval %d, tCurr %d, tNext %d\n", @@ -721,6 +721,7 @@ actionWriteToAction(action_t *pAction) } /* we use reception time, not dequeue time - this is considered more appropriate and also faster ;) -- rgerhards, 2008-09-17 */ + pAction->tLastExec = getActNow(pAction); /* re-init time flags */ pAction->f_time = pAction->f_pMsg->ttGenTime; /* When we reach this point, we have a valid, non-disabled action. diff --git a/tests/Makefile.am b/tests/Makefile.am index 4f23ded7..cc39c4e3 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -12,6 +12,8 @@ TESTS = $(TESTRUNS) cfg.sh \ sndrcv_gzip.sh \ queue-persist.sh \ pipeaction.sh + execonlyonce.sh \ + queue-persist.sh if ENABLE_OMSTDOUT TESTS += omod-if-array.sh \ @@ -133,6 +135,9 @@ EXTRA_DIST= 1.rstest 2.rstest 3.rstest err1.rstest \ testsuites/master.rfctag \ testsuites/nolimittag.conf \ testsuites/master.nolimittag \ + execonlyonce.sh \ + testsuites/execonlyonce.conf \ + testsuites/execonlyonce.data \ DiagTalker.java \ cfg.sh diff --git a/tests/execonlyonce.sh b/tests/execonlyonce.sh new file mode 100755 index 00000000..a9b9d932 --- /dev/null +++ b/tests/execonlyonce.sh @@ -0,0 +1,28 @@ +# Test for the $ActionExecOnlyOnceEveryInterval directive. +# We inject a couple of messages quickly during the interval, +# then wait until the interval expires, then quickly inject +# another set. After that, it is checked if exactly two messages +# have arrived. +# The once interval must be set to 3 seconds in the config file. +# added 2009-11-12 by Rgerhards +# This file is part of the rsyslog project, released under GPLv3 +echo =============================================================================== +echo \[execonlyonce.sh\]: test for the $ActionExecOnlyOnceEveryInterval directive +source $srcdir/diag.sh init +source $srcdir/diag.sh startup execonlyonce.conf +source $srcdir/diag.sh tcpflood 127.0.0.1 13514 1 10 1 +# now wait until the interval definitely expires +sleep 4 # one more than the once inerval! +# and inject another couple of messages +source $srcdir/diag.sh tcpflood 127.0.0.1 13514 1 10 100 +source $srcdir/diag.sh shutdown-when-empty # shut down rsyslogd when done processing messages + +# now we need your custom logic to see if the result is equal to the +# expected result +cmp rsyslog.out.log testsuites/execonlyonce.data +if [ $? -eq 1 ] +then + echo "ERROR, output not as expected" + exit 1 +fi +source $srcdir/diag.sh exit diff --git a/tests/testsuites/execonlyonce.conf b/tests/testsuites/execonlyonce.conf new file mode 100644 index 00000000..085b970e --- /dev/null +++ b/tests/testsuites/execonlyonce.conf @@ -0,0 +1,12 @@ +# see the equally-named .sh file for details +# rgerhards, 2009-11-12 +$IncludeConfig diag-common.conf + +$ModLoad ../plugins/imtcp/.libs/imtcp +$MainMsgQueueTimeoutShutdown 10000 +$InputTCPServerRun 13514 + +$template outfmt,"%msg:F,58:2%\n" +$template dynfile,"rsyslog.out.log" # trick to use relative path names! +$ActionExecOnlyOnceEveryInterval 3 +:msg, contains, "msgnum:" ?dynfile;outfmt diff --git a/tests/testsuites/execonlyonce.data b/tests/testsuites/execonlyonce.data new file mode 100644 index 00000000..3c54f3d4 --- /dev/null +++ b/tests/testsuites/execonlyonce.data @@ -0,0 +1,2 @@ +00000001 +00000100 |