t_client.sh: Improve detection if the OpenVPN process did start during tests

This will check the OpenVPN log file if the process initialized
successfully.

It will check the log file for 30 seconds before aborting the test run.
This also has the advantage of starting the testing quicker if the
initialization goes faster than 10 seconds (which was the old sleep time).

The umask is also set to a more permissive mode to ensure the test
script is capable of reading the OpenVPN PID file, as that will be
created by root.

Signed-off-by: David Sommerseth <davids@openvpn.net>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1474111085-10678-1-git-send-email-davids@openvpn.net>
URL: http://www.mail-archive.com/search?l=mid&q=1474111085-10678-1-git-send-email-davids@openvpn.net
Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
David Sommerseth 2016-09-17 14:18:05 +03:00 committed by Gert Doering
parent 6b25b99fe4
commit 3712322ee1

View file

@ -297,23 +297,39 @@ do
openvpn_conf="$openvpn_conf --writepid $pidfile"
echo " run openvpn $openvpn_conf"
echo "# src/openvpn/openvpn $openvpn_conf" >$LOGDIR/$SUF:openvpn.log
umask 022
$RUN_SUDO "${top_builddir}/src/openvpn/openvpn" $openvpn_conf >>$LOGDIR/$SUF:openvpn.log &
sleep 3 # Wait for OpenVPN to initialize and have had time to write the pid file
sudopid=$!
# Check if OpenVPN has initialized before continuing. It will check every 3rd second up
# to $ovpn_init_check times.
ovpn_init_check=10
ovpn_init_success=0
while [ $ovpn_init_check -gt 0 ];
do
sleep 3 # Wait for OpenVPN to initialize and have had time to write the pid file
grep -q "Initialization Sequence Completed" $LOGDIR/$SUF:openvpn.log
if [ $? -eq 0 ]; then
ovpn_init_check=0
ovpn_init_success=1
fi
ovpn_init_check=$(( $ovpn_init_check - 1 ))
done
opid=`cat $pidfile`
echo " OpenVPN running with PID $opid"
# make sure openvpn client is terminated in case shell exits
trap "$RUN_SUDO $KILL_EXEC $opid" 0
trap "$RUN_SUDO $KILL_EXEC $opid ; trap - 0 ; exit 1" 1 2 3 15
echo "wait for connection to establish..."
sleep ${SETUP_TIME_WAIT:-10}
# test whether OpenVPN process is still there
if $RUN_SUDO $KILL_EXEC -0 $opid
then :
if [ -n "$opid" ]; then
echo " OpenVPN running with PID $opid"
else
fail "OpenVPN process has failed to start up, check log ($LOGDIR/$SUF:openvpn.log)."
echo " Could not read OpenVPN PID file" >&2
fi
# If OpenVPN did not start
if [ $ovpn_init_success -ne 1 -o -z "$opid" ]; then
echo "$0: OpenVPN did not initialize in a reasonable time" >&2
if [ -n "$opid" ]; then
$RUN_SUDO $KILL_EXEC $opid
fi
$RUN_SUDO $KILL_EXEC $sudopid
echo "tail -5 $SUF:openvpn.log" >&2
tail -5 $LOGDIR/$SUF:openvpn.log >&2
echo -e "\nFAIL. skip rest of sub-tests for test run $SUF.\n" >&2
@ -323,6 +339,10 @@ do
continue
fi
# make sure openvpn client is terminated in case shell exits
trap "$RUN_SUDO $KILL_EXEC $opid" 0
trap "$RUN_SUDO $KILL_EXEC $opid ; trap - 0 ; exit 1" 1 2 3 15
# compare whether anything changed in ifconfig/route setup?
echo "save ifconfig+route"
get_ifconfig_route >$LOGDIR/$SUF:ifconfig_route.txt