diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 16:28:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-15 16:28:20 +0000 |
commit | dcc721a95bef6f0d8e6d8775b8efe33e5aecd562 (patch) | |
tree | 66a2774cd0ee294d019efd71d2544c70f42b2842 /tests/rscript_parse_time.sh | |
parent | Initial commit. (diff) | |
download | rsyslog-dcc721a95bef6f0d8e6d8775b8efe33e5aecd562.tar.xz rsyslog-dcc721a95bef6f0d8e6d8775b8efe33e5aecd562.zip |
Adding upstream version 8.2402.0.upstream/8.2402.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/rscript_parse_time.sh')
-rwxr-xr-x | tests/rscript_parse_time.sh | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/tests/rscript_parse_time.sh b/tests/rscript_parse_time.sh new file mode 100755 index 0000000..633f270 --- /dev/null +++ b/tests/rscript_parse_time.sh @@ -0,0 +1,122 @@ +#!/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 |