diff options
Diffstat (limited to 'tests/imdtls-sessionbreak.sh')
-rwxr-xr-x | tests/imdtls-sessionbreak.sh | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/imdtls-sessionbreak.sh b/tests/imdtls-sessionbreak.sh new file mode 100755 index 0000000..89104ca --- /dev/null +++ b/tests/imdtls-sessionbreak.sh @@ -0,0 +1,75 @@ +#!/bin/bash +# added 2020-04-10 by alorbach, released under ASL 2.0 +. ${srcdir:=.}/diag.sh init +export NUMMESSAGES=1000 +export USE_VALGRIND="yes" +# TODO remote leak check skip and fix memory leaks caused by session break +export RS_TESTBENCH_LEAK_CHECK=no +export PORT_RCVR="$(get_free_port)" + +mkdir $RSYSLOG_DYNNAME.workdir +generate_conf +add_conf ' +global( defaultNetstreamDriverCAFile="'$srcdir'/tls-certs/ca.pem" + defaultNetstreamDriverCertFile="'$srcdir'/tls-certs/cert.pem" + defaultNetstreamDriverKeyFile="'$srcdir'/tls-certs/key.pem" + workDirectory="'$RSYSLOG_DYNNAME.workdir'" + maxMessageSize="256k") +main_queue(queue.type="Direct") + +$LocalHostName test +$AbortOnUncleanConfig on +$PreserveFQDN on + +module( load="../plugins/imdtls/.libs/imdtls" + tls.AuthMode="x509/certvalid") + +input( type="imdtls" + port="'$PORT_RCVR'" + ruleset="spool" +) + +template(name="outfmt" type="string" string="%msg:F,58:2%\n") + +ruleset(name="spool" queue.type="direct") { + if $msg contains "msgnum:" then { + action(type="omfile" file=`echo $RSYSLOG_OUT_LOG` template="outfmt") + } +} +' +startup +# How many tcpfloods we run at the same tiem +for ((i=1;i<=10;i++)); do + # How many times tcpflood runs in each threads + ./tcpflood -Tdtls -p$PORT_RCVR -m$NUMMESSAGES -W1000 -d102400 -x$srcdir/tls-certs/ca.pem -Z$srcdir/tls-certs/cert.pem -z$srcdir/tls-certs/key.pem -s & + tcpflood_pid=$! + + echo "started tcpflood instance $i (PID $tcpflood_pid)" + + # Give it time to actually connect + ./msleep 1000; + + kill -9 $tcpflood_pid # >/dev/null 2>&1; + echo "killed tcpflood instance $i (PID $tcpflood_pid)" +done; + +wait_queueempty + +netstatresult=$(netstat --all --program 2>&1 | grep "ESTABLISHED" | grep $(cat $RSYSLOG_PIDBASE.pid) | grep $TCPFLOOD_PORT) +openfd=$(ls -l "/proc/$(cat $RSYSLOG_PIDBASE$1.pid)/fd" | wc -l) + +shutdown_when_empty +wait_shutdown + +if [[ "$netstatresult" == "" ]] +then + echo "OK!" +else + echo "STILL OPENED Connections: " + echo $netstatresult + echo "Open files at the end: " + echo $openfd + error_exit 1 +fi + +exit_test |