#!/bin/sh TMP_DIR=`mktemp -d /tmp/std.26.tmp.XXXXXX` # restore the file if exist restore_file() { filelist="test_procs.tcl tunnel.test session.test" for file in ${filelist} do if [ -f ${TMP_DIR}/${file} ]; then mv ${TMP_DIR}/${file} ${OPENL2TP_DIR} fi done } exit_cus() { restore_file echo $1 exit $2 } if [ -d /usr/lib64/openl2tp/ptest ]; then OPENL2TP_DIR="/usr/lib64/openl2tp" elif [ -d /usr/lib/openl2tp/ptest ]; then OPENL2TP_DIR="/usr/lib/openl2tp" else exit_cus "The openl2tp ptest directory not installed, skip the test" 1 fi #read -p "Please input the network interface you use to test(such as eth0, em1 etc):" ETH_TEST echo "Please input the network interface you use to test(such as eth0, em1 etc):" read ETH_TEST > /dev/null if [ x"$ETH_TEST" = x ]; then exit_cus "The network interface cannot be null" 1 fi ifconfig | grep $ETH_TEST > /dev/null || exit_cus "The network interface you provide is invalid" 1 # check openl2tp related kernel config zcat /proc/config.gz | grep CONFIG_L2TP=y > /dev/null || exit_cus "Failed to check CONFIG_L2TP=y, skip the tests." 1 zcat /proc/config.gz | grep CONFIG_PPPOL2TP=m > /dev/null || exit_cus "Failed to check CONFIG_PPPOL2TP=m, skip the tests." 1 SYSV_INIT="/etc/init.d/rpcbind" if [ -e ${SYSV_INIT} ]; then ${SYSV_INIT} status > /dev/null || ${SYSV_INIT} start > /dev/null else systemctl status rpcbind > /dev/null || systemctl start rpcbind > /dev/null fi which systemctl > /dev/null && systemctl status rpcbind > /dev/null || service rpcbind status > /dev/null [ $? -ne 0 ] && exit_cus "Failed to start rpcbind service, skip the tests." 1 # backup the below files cp ${OPENL2TP_DIR}/ptest/test_procs.tcl $TMP_DIR cp ${OPENL2TP_DIR}/ptest/tunnel.test $TMP_DIR cp ${OPENL2TP_DIR}/ptest/session.test $TMP_DIR # customise the config if [ x"$ETH_TEST" = x ]; then exit_cus "Please set ETH_TEST which used to test first, skip the tests." 1 fi sed -i 's/eth2/'\"$ETH_TEST\"'/g' ${OPENL2TP_DIR}/ptest/test_procs.tcl test_ip="`ifconfig $ETH_TEST | grep 'inet ' | sed 's/^.*inet addr://g' | \ sed 's/ *Mask.*$//g'|sed 's/ *Bcast.*$//g'`" sed -i 's/192.168.0.1/'"$test_ip"'/g' ${OPENL2TP_DIR}/ptest/tunnel.test # load module l2tp_ppp modprobe l2tp_ppp > /dev/null lsmod | grep l2tp_ppp > /dev/null || exit_cus "FAIL: Load module l2tp_ppp" 2 # start openl2tpd ps aux | grep openl2tpd | grep -v grep > /dev/null && killall openl2tpd > /dev/null ppp_path=`rpm -ql openl2tp | grep ppp_null.so` echo "test it here" /usr/sbin/openl2tpd -d all -D -f -p ${ppp_path} & > /dev/null # prepare the test env rm -rf $OPENL2TP_DIR/results mkdir -p $OPENL2TP_DIR/results || exit_cus "FAIL: mkdir $OPENL2TP_DIR/results" 2 cp /usr/bin/l2tpconfig ${OPENL2TP_DIR} || exit_cus "FAIL: copy /usr/bin/l2tpconfig to ${OPENL2TP_DIR}" 2 # start the test cd ${OPENL2TP_DIR}/ptest && tclsh all.tcl -preservecore 3 -verbose bps -tmpdir $OPENL2TP_DIR/results -outfile test-l2tpd.result -constraints "l2tpdRunning peerProfile tunnelProfile sessionProfile pppProfile system" -match "peer_profile-1.1 tunnel_profile-1.1 session_profile-1.1 ppp_profile-1.1 system-1.1" # check the result PASSNUM=`grep PASS $OPENL2TP_DIR/results/test-l2tpd.result | wc -l` FAILNUM=`grep FAIL $OPENL2TP_DIR/results/test-l2tpd.result | wc -l` if [ $PASSNUM -ne 0 ] && [ $FAILNUM -eq 0 ]; then echo "PASS: openl2tp" else echo "FAIL: openl2tp" fi restore_file