summaryrefslogtreecommitdiffstats
path: root/tests/tcp_forwarding_ns_tpl.sh
diff options
context:
space:
mode:
Diffstat (limited to 'tests/tcp_forwarding_ns_tpl.sh')
-rwxr-xr-xtests/tcp_forwarding_ns_tpl.sh52
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