From d9a883c337ac8bfd51a2e8650eb4b2ed0740e1c2 Mon Sep 17 00:00:00 2001 From: Andreas Steffen Date: Mon, 3 Jul 2006 07:10:17 +0000 Subject: [PATCH] introduced subdirectory structure --- testing/do-tests | 464 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 239 insertions(+), 225 deletions(-) diff --git a/testing/do-tests b/testing/do-tests index 356c90c..5b47753 100755 --- a/testing/do-tests +++ b/testing/do-tests @@ -144,194 +144,208 @@ else TESTS="`ls $DEFAULTTESTSDIR`" fi -for testname in $TESTS +for SUBDIR in $TESTS do - let "testnumber += 1" - cecho-n " $testnumber $testname.." + SUBTESTS="`basename $SUBDIR`" - if [ ! -d $DEFAULTTESTSDIR/${testname} ] + if [ $SUBTESTS = $SUBDIR ] then - cecho "is missing..skipped" - continue + SUBTESTS="`ls $DEFAULTTESTSDIR/$SUBDIR`" + else + SUBDIR="`dirname $SUBDIR`" fi - [ -f $DEFAULTTESTSDIR/${testname}/description.txt ] || die "!! File 'description.txt' is missing" - [ -f $DEFAULTTESTSDIR/${testname}/test.conf ] || die "!! File 'test.conf' is missing" - [ -f $DEFAULTTESTSDIR/${testname}/pretest.dat ] || die "!! File 'pretest.dat' is missing" - [ -f $DEFAULTTESTSDIR/${testname}/posttest.dat ] || die "!! File 'posttest.dat' is missing" - [ -f $DEFAULTTESTSDIR/${testname}/evaltest.dat ] || die "!! File 'evaltest.dat' is missing" + for name in $SUBTESTS + do + let "testnumber += 1" + testname=$SUBDIR/$name + cecho-n " $testnumber $testname.." - TESTRESULTDIR=$TODAYDIR/$testname - mkdir $TESTRESULTDIR - CONSOLE_LOG=$TESTRESULTDIR/console.log - touch $CONSOLE_LOG + if [ ! -d $DEFAULTTESTSDIR/${testname} ] + then + cecho "is missing..skipped" + continue + fi - TESTDIR=$TESTSDIR/${testname} - rm -rf $TESTDIR/* - cp -rfp $DEFAULTTESTSDIR/${testname} $TESTSDIR + [ -f $DEFAULTTESTSDIR/${testname}/description.txt ] || die "!! File 'description.txt' is missing" + [ -f $DEFAULTTESTSDIR/${testname}/test.conf ] || die "!! File 'test.conf' is missing" + [ -f $DEFAULTTESTSDIR/${testname}/pretest.dat ] || die "!! File 'pretest.dat' is missing" + [ -f $DEFAULTTESTSDIR/${testname}/posttest.dat ] || die "!! File 'posttest.dat' is missing" + [ -f $DEFAULTTESTSDIR/${testname}/evaltest.dat ] || die "!! File 'evaltest.dat' is missing" - ############################################################################## - # replace IP wildcards with actual IPv4 and IPv6 addresses - # + TESTRESULTDIR=$TODAYDIR/$testname + mkdir -p $TESTRESULTDIR + CONSOLE_LOG=$TESTRESULTDIR/console.log + touch $CONSOLE_LOG - for host in $STRONGSWANHOSTS - do - case $host in - moon) - searchandreplace PH_IP_MOON1 $ipv4_moon1 $TESTDIR - searchandreplace PH_IP_MOON $ipv4_moon $TESTDIR - searchandreplace PH_IP6_MOON1 $ipv6_moon1 $TESTDIR - searchandreplace PH_IP6_MOON $ipv6_moon $TESTDIR - ;; - sun) - searchandreplace PH_IP_SUN1 $ipv4_sun1 $TESTDIR - searchandreplace PH_IP_SUN $ipv4_sun $TESTDIR - searchandreplace PH_IP6_SUN1 $ipv6_sun1 $TESTDIR - searchandreplace PH_IP6_SUN $ipv6_sun $TESTDIR - ;; - alice) - searchandreplace PH_IP_ALICE $ipv4_alice $TESTDIR - searchandreplace PH_IP6_ALICE $ipv6_alice $TESTDIR - ;; - venus) - searchandreplace PH_IP_VENUS $ipv4_venus $TESTDIR - searchandreplace PH_IP6_VENUS $ipv6_venus $TESTDIR - ;; - bob) - searchandreplace PH_IP_BOB $ipv4_bob $TESTDIR - searchandreplace PH_IPV6_BOB $ipv6_bob $TESTDIR - ;; - carol) - searchandreplace PH_IP_CAROL1 $ipv4_carol1 $TESTDIR - searchandreplace PH_IP_CAROL $ipv4_carol $TESTDIR - searchandreplace PH_IP6_CAROL1 $ipv6_carol1 $TESTDIR - searchandreplace PH_IP6_CAROL $ipv6_carol $TESTDIR - ;; - dave) - searchandreplace PH_IP_DAVE1 $ipv4_dave1 $TESTSDIR - searchandreplace PH_IP_DAVE $ipv4_dave $TESTSDIR - searchandreplace PH_IP6_DAVE1 $ipv6_dave1 $TESTSDIR - searchandreplace PH_IP6_DAVE $ipv6_dave $TESTSDIR - ;; - winnetou) - searchandreplace PH_IP_WINNETOU $ipv4_winnetou $TESTSDIR - searchandreplace PH_IP6_WINNETOU $ipv6_winnetou $TESTSDIR - ;; - esac - done + TESTDIR=$TESTSDIR/${testname} + rm -rf $TESTDIR + mkdir -p $TESTDIR + cp -rfp $DEFAULTTESTSDIR/${testname}/* $TESTDIR - ########################################################################## - # copy test specific configurations to uml hosts and clear auth.log files - # + ############################################################################## + # replace IP wildcards with actual IPv4 and IPv6 addresses + # - $DIR/scripts/load-testconfig $testname - source $TESTDIR/test.conf + for host in $STRONGSWANHOSTS + do + case $host in + moon) + searchandreplace PH_IP_MOON1 $ipv4_moon1 $TESTDIR + searchandreplace PH_IP_MOON $ipv4_moon $TESTDIR + searchandreplace PH_IP6_MOON1 $ipv6_moon1 $TESTDIR + searchandreplace PH_IP6_MOON $ipv6_moon $TESTDIR + ;; + sun) + searchandreplace PH_IP_SUN1 $ipv4_sun1 $TESTDIR + searchandreplace PH_IP_SUN $ipv4_sun $TESTDIR + searchandreplace PH_IP6_SUN1 $ipv6_sun1 $TESTDIR + searchandreplace PH_IP6_SUN $ipv6_sun $TESTDIR + ;; + alice) + searchandreplace PH_IP_ALICE $ipv4_alice $TESTDIR + searchandreplace PH_IP6_ALICE $ipv6_alice $TESTDIR + ;; + venus) + searchandreplace PH_IP_VENUS $ipv4_venus $TESTDIR + searchandreplace PH_IP6_VENUS $ipv6_venus $TESTDIR + ;; + bob) + searchandreplace PH_IP_BOB $ipv4_bob $TESTDIR + searchandreplace PH_IPV6_BOB $ipv6_bob $TESTDIR + ;; + carol) + searchandreplace PH_IP_CAROL1 $ipv4_carol1 $TESTDIR + searchandreplace PH_IP_CAROL $ipv4_carol $TESTDIR + searchandreplace PH_IP6_CAROL1 $ipv6_carol1 $TESTDIR + searchandreplace PH_IP6_CAROL $ipv6_carol $TESTDIR + ;; + dave) + searchandreplace PH_IP_DAVE1 $ipv4_dave1 $TESTDIR + searchandreplace PH_IP_DAVE $ipv4_dave $TESTDIR + searchandreplace PH_IP6_DAVE1 $ipv6_dave1 $TESTDIR + searchandreplace PH_IP6_DAVE $ipv6_dave $TESTDIR + ;; + winnetou) + searchandreplace PH_IP_WINNETOU $ipv4_winnetou $TESTDIR + searchandreplace PH_IP6_WINNETOU $ipv6_winnetou $TESTDIR + ;; + esac + done - ########################################################################## - # run tcpdump in the background - # + ########################################################################## + # copy test specific configurations to uml hosts and clear auth.log files + # - if [ "$TCPDUMPHOSTS" != "" ] - then - echo -e "TCPDUMP\n" >> $CONSOLE_LOG 2>&1 - - for host_iface in $TCPDUMPHOSTS - do - host=`echo $host_iface | awk -F ":" '{print $1}'` - iface=`echo $host_iface | awk -F ":" '{if ($2 != "") { print $2 } else { printf("eth0") }}'` - tcpdump_cmd="tcpdump -i $iface not port ssh and not port domain and not arp > /tmp/tcpdump.log 2>&1 &" - echo "${host}# $tcpdump_cmd" >> $CONSOLE_LOG - ssh root@`eval echo \\\$ipv4_$host '$tcpdump_cmd'` - eval TDUP_${host}="true" - done - fi + $DIR/scripts/load-testconfig $testname + source $TESTDIR/test.conf - ########################################################################## - # execute pre-test commands - # - cecho-n "pre.." - echo -e "\nPRE-TEST\n" >> $CONSOLE_LOG 2>&1 + ########################################################################## + # run tcpdump in the background + # - eval `awk -F "::" '{ - if ($2 != "") - { - printf("echo \"%s# %s\"; ", $1, $2) - printf("ssh root@\044ipv4_%s \"%s\"; ", $1, $2) - printf("echo;\n") - } - }' $TESTDIR/pretest.dat` >> $CONSOLE_LOG 2>&1 + if [ "$TCPDUMPHOSTS" != "" ] + then + echo -e "TCPDUMP\n" >> $CONSOLE_LOG 2>&1 + + for host_iface in $TCPDUMPHOSTS + do + host=`echo $host_iface | awk -F ":" '{print $1}'` + iface=`echo $host_iface | awk -F ":" '{if ($2 != "") { print $2 } else { printf("eth0") }}'` + tcpdump_cmd="tcpdump -i $iface not port ssh and not port domain and not arp > /tmp/tcpdump.log 2>&1 &" + echo "${host}# $tcpdump_cmd" >> $CONSOLE_LOG + ssh root@`eval echo \\\$ipv4_$host '$tcpdump_cmd'` + eval TDUP_${host}="true" + done + fi + + + ########################################################################## + # execute pre-test commands + # + cecho-n "pre.." + echo -e "\nPRE-TEST\n" >> $CONSOLE_LOG 2>&1 - ########################################################################## - # stop tcpdump - # + eval `awk -F "::" '{ + if ($2 != "") + { + printf("echo \"%s# %s\"; ", $1, $2) + printf("ssh root@\044ipv4_%s \"%s\"; ", $1, $2) + printf("echo;\n") + } + }' $TESTDIR/pretest.dat` >> $CONSOLE_LOG 2>&1 - function stop_tcpdump { - echo "${1}# killall tcpdump" >> $CONSOLE_LOG - eval ssh root@\$ipv4_${1} killall tcpdump - eval TDUP_${1}="false" - echo "" - } + ########################################################################## + # stop tcpdump + # - ########################################################################## - # get and evaluate test results - # + function stop_tcpdump { + echo "${1}# killall tcpdump" >> $CONSOLE_LOG + eval ssh root@\$ipv4_${1} killall tcpdump + eval TDUP_${1}="false" + echo "" + } - cecho-n "test.." - echo -e "\nTEST\n" >> $CONSOLE_LOG 2>&1 - STATUS="passed" + ########################################################################## + # get and evaluate test results + # - eval `awk -F "::" '{ - host=$1 - command=$2 - pattern=$3 - hit=$4 - if (command != "") - { - if (command == "tcpdump") - { - printf("if [ \044TDUP_%s == \"true\" ]; then stop_tcpdump %s; fi; \n", host, host) - printf("echo \"%s# cat /tmp/tcpdump.log | grep \047%s\047 [%s]\"; ", host, pattern, hit) - printf("ssh root@\044ipv4_%s cat /tmp/tcpdump.log | grep \"%s\"; ", host, pattern) - } - else + cecho-n "test.." + echo -e "\nTEST\n" >> $CONSOLE_LOG 2>&1 + + STATUS="passed" + + eval `awk -F "::" '{ + host=$1 + command=$2 + pattern=$3 + hit=$4 + if (command != "") { - printf("echo \"%s# %s | grep \047%s\047 [%s]\"; ", host, command, pattern, hit) - printf("ssh root@\044ipv4_%s %s | grep \"%s\"; ", host, command, pattern) + if (command == "tcpdump") + { + printf("if [ \044TDUP_%s == \"true\" ]; then stop_tcpdump %s; fi; \n", host, host) + printf("echo \"%s# cat /tmp/tcpdump.log | grep \047%s\047 [%s]\"; ", host, pattern, hit) + printf("ssh root@\044ipv4_%s cat /tmp/tcpdump.log | grep \"%s\"; ", host, pattern) + } + else + { + printf("echo \"%s# %s | grep \047%s\047 [%s]\"; ", host, command, pattern, hit) + printf("ssh root@\044ipv4_%s %s | grep \"%s\"; ", host, command, pattern) + } + printf("cmd_exit=\044?; ") + printf("echo; ") + printf("if [ \044cmd_exit -eq 0 -a \"%s\" = \"NO\" ] ", hit) + printf("|| [ \044cmd_exit -ne 0 -a \"%s\" = \"YES\" ] ", hit) + printf("; then STATUS=\"failed\"; fi; \n") } - printf("cmd_exit=\044?; ") - printf("echo; ") - printf("if [ \044cmd_exit -eq 0 -a \"%s\" = \"NO\" ] ", hit) - printf("|| [ \044cmd_exit -ne 0 -a \"%s\" = \"YES\" ] ", hit) - printf("; then STATUS=\"failed\"; fi; \n") + }' $TESTDIR/evaltest.dat` >> $CONSOLE_LOG 2>&1 - } - }' $TESTDIR/evaltest.dat` >> $CONSOLE_LOG 2>&1 + ########################################################################## + # set counters + # - ########################################################################## - # set counters - # - - if [ $STATUS = "failed" ] - then - let "failed_cnt += 1" - else - let "passed_cnt += 1" - fi + if [ $STATUS = "failed" ] + then + let "failed_cnt += 1" + else + let "passed_cnt += 1" + fi - ########################################################################## - # log statusall and listall output - # get copies of ipsec.conf, ipsec.secrets - # create index.html for the given test case + ########################################################################## + # log statusall and listall output + # get copies of ipsec.conf, ipsec.secrets + # create index.html for the given test case - cat > $TESTRESULTDIR/index.html <<@EOF + cat > $TESTRESULTDIR/index.html <<@EOF Test $testname @@ -343,33 +357,32 @@ do

Description

@EOF - cat $TESTDIR/description.txt >> $TESTRESULTDIR/index.html + cat $TESTDIR/description.txt >> $TESTRESULTDIR/index.html - cat >> $TESTRESULTDIR/index.html <<@EOF + cat >> $TESTRESULTDIR/index.html <<@EOF $UMLHOSTS @EOF - - for host in $IPSECHOSTS - do - eval HOSTLOGIN=root@\$ipv4_${host} - - for command in statusall listall + for host in $IPSECHOSTS do - ssh $HOSTLOGIN ipsec $command \ - > $TESTRESULTDIR/${host}.$command 2>/dev/null - done + eval HOSTLOGIN=root@\$ipv4_${host} - for file in ipsec.conf ipsec.secrets - do - scp $HOSTLOGIN:/etc/$file \ - $TESTRESULTDIR/${host}.$file > /dev/null 2>&1 - done + for command in statusall listall + do + ssh $HOSTLOGIN ipsec $command \ + > $TESTRESULTDIR/${host}.$command 2>/dev/null + done - cat >> $TESTRESULTDIR/index.html <<@EOF + for file in ipsec.conf ipsec.secrets + do + scp $HOSTLOGIN:/etc/$file \ + $TESTRESULTDIR/${host}.$file > /dev/null 2>&1 + done + + cat >> $TESTRESULTDIR/index.html <<@EOF

$host

@EOF - done + done - cat >> $TESTRESULTDIR/index.html <<@EOF + cat >> $TESTRESULTDIR/index.html <<@EOF Back @@ -393,73 +406,73 @@ do @EOF - ########################################################################## - # execute post-test commands - # + ########################################################################## + # execute post-test commands + # - cecho-n "post.." - echo -e "\nPOST-TEST\n" >> $CONSOLE_LOG 2>&1 + cecho-n "post.." + echo -e "\nPOST-TEST\n" >> $CONSOLE_LOG 2>&1 - eval `awk -F "::" '{ - if ($2 != "") - { - printf("echo \"%s# %s\"; ", $1, $2) - printf("ssh root@\044ipv4_%s \"%s\"; ", $1, $2) - printf("echo;\n") - } - }' $TESTDIR/posttest.dat` >> $CONSOLE_LOG 2>&1 + eval `awk -F "::" '{ + if ($2 != "") + { + printf("echo \"%s# %s\"; ", $1, $2) + printf("ssh root@\044ipv4_%s \"%s\"; ", $1, $2) + printf("echo;\n") + } + }' $TESTDIR/posttest.dat` >> $CONSOLE_LOG 2>&1 - ########################################################################## - # get a copy of /var/log/auth.log - # + ########################################################################## + # get a copy of /var/log/auth.log + # - for host in $IPSECHOSTS - do - eval HOSTLOGIN=root@\$ipv4_${host} - ssh $HOSTLOGIN grep pluto /var/log/auth.log \ - > $TESTRESULTDIR/${host}.auth.log - echo >> $TESTRESULTDIR/${host}.auth.log - ssh $HOSTLOGIN grep charon /var/log/auth.log \ - >> $TESTRESULTDIR/${host}.auth.log - done + for host in $IPSECHOSTS + do + eval HOSTLOGIN=root@\$ipv4_${host} + ssh $HOSTLOGIN grep pluto /var/log/auth.log \ + > $TESTRESULTDIR/${host}.auth.log + echo >> $TESTRESULTDIR/${host}.auth.log + ssh $HOSTLOGIN grep charon /var/log/auth.log \ + >> $TESTRESULTDIR/${host}.auth.log + done - ########################################################################## - # stop tcpdump if necessary - # + ########################################################################## + # stop tcpdump if necessary + # - for host in $TCPDUMPHOSTS - do - if [ "`eval echo \\\$TDUP_${host}`" = "true" ] - then - echo "${host}# killall tcpdump" >> $CONSOLE_LOG - eval ssh root@\$ipv4_$host killall tcpdump - eval TDUP_${host}="false" - fi - done + for host in $TCPDUMPHOSTS + do + if [ "`eval echo \\\$TDUP_${host}`" = "true" ] + then + echo "${host}# killall tcpdump" >> $CONSOLE_LOG + eval ssh root@\$ipv4_$host killall tcpdump + eval TDUP_${host}="false" + fi + done - ########################################################################## - # copy default host config back if necessary - # + ########################################################################## + # copy default host config back if necessary + # - $DIR/scripts/restore-defaults $testname + $DIR/scripts/restore-defaults $testname - ########################################################################## - # write test status to html file - # + ########################################################################## + # write test status to html file + # - cecho "$STATUS" - if [ $STATUS = "passed" ] - then - COLOR="green" - else - COLOR="red" - fi + cecho "$STATUS" + if [ $STATUS = "passed" ] + then + COLOR="green" + else + COLOR="red" + fi - cat >> $TESTRESULTSHTML << @EOF + cat >> $TESTRESULTSHTML << @EOF $testnumber $testname @@ -467,6 +480,7 @@ do @EOF + done done -- 2.7.4