diff options
Diffstat (limited to 'tests/tcp_forwarding_ns_tpl.sh')
-rwxr-xr-x | tests/tcp_forwarding_ns_tpl.sh | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tests/tcp_forwarding_ns_tpl.sh b/tests/tcp_forwarding_ns_tpl.sh new file mode 100755 index 0000000..89a45e3 --- /dev/null +++ b/tests/tcp_forwarding_ns_tpl.sh @@ -0,0 +1,52 @@ +#!/bin/bash +# This test tests tcp forwarding in a network namespace with assigned template. +# To do so, a simple tcp listener service is started in a network namespace. +# Released under GNU GPLv3+ +echo =============================================================================== +echo \[tcp_forwarding_ns_tpl.sh\]: test for tcp forwarding in a network namespace with assigned template +echo This test must be run as root [network namespace creation/change required] +if [ "$EUID" -ne 0 ]; then + exit 77 # Not root, skip this test +fi + +# create the pipe and start a background process that copies data from +# it to the "regular" work file +. ${srcdir:=.}/diag.sh init +generate_conf +add_conf ' +$MainMsgQueueTimeoutShutdown 10000 +template(name="outfmt" type="string" string="%msg:F,58:2%\n") + +if $msg contains "msgnum:" then + action(type="omfwd" template="outfmt" + target="127.0.0.1" port="'$TCPFLOOD_PORT'" protocol="tcp" networknamespace="rsyslog_test_ns") +' +# create network namespace and bring it up +ip netns add rsyslog_test_ns +ip netns exec rsyslog_test_ns ip link set dev lo up + +# run server in namespace +ip netns exec rsyslog_test_ns ./minitcpsrv -t127.0.0.1 -p'$TCPFLOOD_PORT' -f $RSYSLOG_OUT_LOG & +BGPROCESS=$! +echo background minitcpsrvr process id is $BGPROCESS + +# now do the usual run +startup +# 10000 messages should be enough +injectmsg 0 10000 +shutdown_when_empty # shut down rsyslogd when done processing messages +wait_shutdown + +# note: minitcpsrvr shuts down automatically if the connection is closed! +# (we still leave the code here in in case we need it later) +#echo shutting down minitcpsrv... +#kill $BGPROCESS +#wait $BGPROCESS +#echo background process has terminated, continue test... + +# remove network namespace +ip netns delete rsyslog_test_ns + +# and continue the usual checks +seq_check 0 9999 +exit_test |