mirror of
https://github.com/rsyslog/rsyslog.git
synced 2025-12-15 10:30:40 +01:00
123 lines
4.4 KiB
Bash
Executable File
123 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Added 2017-10-28 by Stephen Workman, released under ASL 2.0
|
|
|
|
# Because this script tests functionality that depends on the current date,
|
|
# we cannot use static values for the expected results. They have to be
|
|
# calculated. Also, because we cannot depend on the GNU version of the
|
|
# 'date' command on all of our test systems (think FreeBSD, and Solaris),
|
|
# we need a method of converting given date/time strings to UNIX timestamps.
|
|
# For that we use an external Python 2.x script to do the job.
|
|
. ${srcdir:=.}/diag.sh init
|
|
|
|
getts="$PYTHON $srcdir/rscript_parse_time_get-ts.py"
|
|
|
|
# Run the Python script's self-tests
|
|
$getts selftest
|
|
|
|
if [[ $? -ne 0 ]]; then
|
|
printf "Failed own self-test(s)!\n"
|
|
error_exit 1
|
|
fi
|
|
|
|
# Since the RFC 3164 date/time format does not include a year, we need to
|
|
# try to "guess" an appropriate one based on the incoming date and the
|
|
# current date. So, we'll use a reasonable spread of RFC 3164 date/time
|
|
# strings to ensure that we test as much of our year "guessing" as
|
|
# possible. Since this uses the CURRENT DATE (as in, the date this)
|
|
# script was invoked, we need to calculate our expected results to
|
|
# compare them with the values returned by the parse_time() RainerScript
|
|
# function.
|
|
rfc3164_1="Oct 5 01:10:11"
|
|
rfc3164_1_r=$($getts "$rfc3164_1")
|
|
|
|
rfc3164_2="Jan 31 13:00:00"
|
|
rfc3164_2_r=$($getts "$rfc3164_2")
|
|
|
|
rfc3164_3="Feb 28 14:35:00"
|
|
rfc3164_3_r=$($getts "$rfc3164_3")
|
|
|
|
rfc3164_4="Mar 1 14:00:00"
|
|
rfc3164_4_r=$($getts "$rfc3164_4")
|
|
|
|
rfc3164_5="Apr 3 15:00:00"
|
|
rfc3164_5_r=$($getts "$rfc3164_5")
|
|
|
|
rfc3164_6="May 5 16:00:00"
|
|
rfc3164_6_r=$($getts "$rfc3164_6")
|
|
|
|
rfc3164_7="Jun 11 03:00:00"
|
|
rfc3164_7_r=$($getts "$rfc3164_7")
|
|
|
|
rfc3164_8="Jul 15 05:00:00"
|
|
rfc3164_8_r=$($getts "$rfc3164_8")
|
|
|
|
rfc3164_9="Aug 17 08:00:00"
|
|
rfc3164_9_r=$($getts "$rfc3164_9")
|
|
|
|
rfc3164_10="Sep 20 18:00:00"
|
|
rfc3164_10_r=$($getts "$rfc3164_10")
|
|
|
|
rfc3164_11="Nov 23 19:00:00"
|
|
rfc3164_11_r=$($getts "$rfc3164_11")
|
|
|
|
rfc3164_12="Dec 25 20:00:00"
|
|
rfc3164_12_r=$($getts "$rfc3164_12")
|
|
|
|
generate_conf
|
|
add_conf '
|
|
module(load="../plugins/imtcp/.libs/imtcp")
|
|
module(load="../plugins/omstdout/.libs/omstdout")
|
|
input(type="imtcp" port="0" listenPortFileName="'$RSYSLOG_DYNNAME'.tcpflood_port")
|
|
|
|
# $DebugLevel 2
|
|
|
|
# RFC 3164 Parse Tests (using fixed input values - see above)
|
|
set $!datetime!rfc3164_1 = parse_time("'"$rfc3164_1"'");
|
|
set $!datetime!rfc3164_2 = parse_time("'"$rfc3164_2"'");
|
|
set $!datetime!rfc3164_3 = parse_time("'"$rfc3164_3"'");
|
|
set $!datetime!rfc3164_4 = parse_time("'"$rfc3164_4"'");
|
|
set $!datetime!rfc3164_5 = parse_time("'"$rfc3164_5"'");
|
|
set $!datetime!rfc3164_6 = parse_time("'"$rfc3164_6"'");
|
|
set $!datetime!rfc3164_7 = parse_time("'"$rfc3164_7"'");
|
|
set $!datetime!rfc3164_8 = parse_time("'"$rfc3164_8"'");
|
|
set $!datetime!rfc3164_9 = parse_time("'"$rfc3164_9"'");
|
|
set $!datetime!rfc3164_10 = parse_time("'"$rfc3164_10"'");
|
|
set $!datetime!rfc3164_11 = parse_time("'"$rfc3164_11"'");
|
|
set $!datetime!rfc3164_12 = parse_time("'"$rfc3164_12"'");
|
|
|
|
# RFC 3339 Parse Tests (these provide their own year)
|
|
set $!datetime!rfc3339 = parse_time("2017-10-05T01:10:11Z");
|
|
set $!datetime!rfc3339tz1 = parse_time("2017-10-05T01:10:11+04:00");
|
|
set $!datetime!rfc3339tz2 = parse_time("2017-10-05T01:10:11+00:00");
|
|
|
|
# Test invalid date strings, these should return 0
|
|
set $!datetime!inval1 = parse_time("not a date/time");
|
|
set $!datetime!inval2 = parse_time("2017-10-05T01:10:11");
|
|
set $!datetime!inval3 = parse_time("2017-SOMETHING: 42");
|
|
|
|
template(name="outfmt" type="string" string="%!datetime%\n")
|
|
local4.* action(type="omfile" file=`echo $RSYSLOG_OUT_LOG` template="outfmt")
|
|
local4.* :omstdout:;outfmt
|
|
'
|
|
|
|
startup
|
|
tcpflood -m1 -y
|
|
shutdown_when_empty
|
|
wait_shutdown
|
|
|
|
# Our fixed and calculated expected results
|
|
export EXPECTED='{ "rfc3164_1": '"$rfc3164_1_r"', "rfc3164_2": '"$rfc3164_2_r"', "rfc3164_3": '"$rfc3164_3_r"', "rfc3164_4": '"$rfc3164_4_r"', "rfc3164_5": '"$rfc3164_5_r"', "rfc3164_6": '"$rfc3164_6_r"', "rfc3164_7": '"$rfc3164_7_r"', "rfc3164_8": '"$rfc3164_8_r"', "rfc3164_9": '"$rfc3164_9_r"', "rfc3164_10": '"$rfc3164_10_r"', "rfc3164_11": '"$rfc3164_11_r"', "rfc3164_12": '"$rfc3164_12_r"', "rfc3339": 1507165811, "rfc3339tz1": 1507151411, "rfc3339tz2": 1507165811, "inval1": 0, "inval2": 0, "inval3": 0 }'
|
|
|
|
# FreeBSD's cmp does not support reading from STDIN
|
|
cmp <(echo "$EXPECTED") $RSYSLOG_OUT_LOG
|
|
|
|
if [[ $? -ne 0 ]]; then
|
|
printf "Invalid function output detected!\n"
|
|
printf "Expected: $EXPECTED\n"
|
|
printf "Got: "
|
|
cat $RSYSLOG_OUT_LOG
|
|
error_exit 1
|
|
fi;
|
|
|
|
exit_test
|