Skip to content

Commit

Permalink
testbench: add tests for timegenerated
Browse files Browse the repository at this point in the history
among others, showcases a problem with leap year handling

see also rsyslog#830
  • Loading branch information
rgerhards committed Mar 2, 2016
1 parent edf542c commit e0ee925
Show file tree
Hide file tree
Showing 3 changed files with 231 additions and 0 deletions.
4 changes: 4 additions & 0 deletions tests/Makefile.am
Expand Up @@ -31,6 +31,8 @@ TESTS += \
now-utc.sh \
now-utc-ymd.sh \
now-utc-casecmp.sh \
timegenerated-ymd.sh \
timegenerated-uxtimestamp.sh \
rawmsg-after-pri.sh \
rfc5424parser.sh \
tcp_forwarding_tpl.sh \
Expand Down Expand Up @@ -594,6 +596,8 @@ EXTRA_DIST= \
now-utc-casecmp.sh \
now-utc.sh \
testsuites/now-utc.conf \
timegenerated-ymd.sh \
timegenerated-uxtimestamp.sh \
rawmsg-after-pri.sh \
testsuites/rawmsg-after-pri.conf \
rs_optimizer_pri.sh \
Expand Down
192 changes: 192 additions & 0 deletions tests/timegenerated-uxtimestamp.sh
@@ -0,0 +1,192 @@
#!/bin/bash
# test many concurrent tcp connections
# addd 2016-03-02 by RGerhards, released under ASL 2.0
# Note: we run several subtests here in order to save us
# from creating additional tests
# requires faketime
echo \[timegenerated-uxtimestamp\]:
export TZ=UTC+00:00
faketime '2016-03-01 12:00:00' date
if [ $? -ne 0 ]; then
echo "faketime command missing, skipping test"
exit 77
fi
. $srcdir/diag.sh init
. $srcdir/diag.sh generate-conf
. $srcdir/diag.sh add-conf '
$ModLoad ../plugins/imtcp/.libs/imtcp
$InputTCPServerRun 13514
template(name="outfmt" type="string"
string="%timegenerated:::date-unixtimestamp%\n")
:msg, contains, "msgnum:" action(type="omfile" template="outfmt"
file="rsyslog.out.log")
'


echo "***SUBTEST: check 1970-01-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '1970-01-01 00:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "0" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2000-03-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2000-03-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "951912000" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2016-01-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2016-01-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "1451649600" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2016-02-29"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2016-02-29 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "1456747200" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2016-03-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2016-03-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "1456833600" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2016-03-03"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2016-03-03 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "1457006400" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2016-12-31"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2016-12-31 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "1483185600" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2017-01-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2017-01-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "1483272000" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2038-01-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2038-01-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "2145960000" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2040-01-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2040-01-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "2209032000" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
date -d @`cat rsyslog.out.log`
exit 1
fi;


echo "***SUBTEST: check 2100-01-01"
rm -f rsyslog.out.log # do cleanup of previous subtest
faketime '2100-01-01 12:00:00' $srcdir/diag.sh startup
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "4102488000" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
date -d @`cat rsyslog.out.log`
cat rsyslog.out.log
exit 1
fi;


. $srcdir/diag.sh exit
35 changes: 35 additions & 0 deletions tests/timegenerated-ymd.sh
@@ -0,0 +1,35 @@
#!/bin/bash
# test many concurrent tcp connections
# addd 2016-02-23 by RGerhards, released under ASL 2.0
# requires faketime
echo \[timegenerated-ymd\]:
export TZ=TEST-02:00
faketime '2016-01-01 01:00:00' date
if [ $? -ne 0 ]; then
echo "faketime command missing, skipping test"
exit 77
fi
. $srcdir/diag.sh init
. $srcdir/diag.sh generate-conf
. $srcdir/diag.sh add-conf '
$ModLoad ../plugins/imtcp/.libs/imtcp
$InputTCPServerRun 13514
template(name="outfmt" type="string"
string="%timegenerated:::date-year%-%timegenerated:::date-month%-%timegenerated:::date-day%\n")
:msg, contains, "msgnum:" action(type="omfile" template="outfmt"
file="rsyslog.out.log")
'
faketime '2016-01-01 01:00:00' $srcdir/diag.sh startup
# what we send actually is irrelevant, as we just use system properties.
# but we need to send one message in order to gain output!
. $srcdir/diag.sh tcpflood -m1
. $srcdir/diag.sh shutdown-when-empty
. $srcdir/diag.sh wait-shutdown
echo "2016-01-01" | cmp rsyslog.out.log
if [ ! $? -eq 0 ]; then
echo "invalid timestamps generated, rsyslog.out.log is:"
cat rsyslog.out.log
exit 1
fi;
. $srcdir/diag.sh exit

0 comments on commit e0ee925

Please sign in to comment.