6b679fd74f
git-svn-id: https://unbound.nlnetlabs.nl/svn/trunk@4667 be551aaa-1e26-0410-a405-d3ace91eadb9
150 lines
3.4 KiB
Plaintext
150 lines
3.4 KiB
Plaintext
# #-- 03-testbound.test --#
|
|
# source the master var file when it's there
|
|
[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
|
|
# use .tpkg.var.test for in test variable passing
|
|
[ -f .tpkg.var.test ] && source .tpkg.var.test
|
|
|
|
. ../common.sh
|
|
PRE="../.."
|
|
get_make
|
|
(cd $PRE ; $MAKE testbound)
|
|
exitval=0
|
|
# quiet="" to make verbose
|
|
|
|
if test -f $PRE/unbound_do_valgrind_in_test; then
|
|
do_valgrind=yes
|
|
else
|
|
do_valgrind=no
|
|
fi
|
|
VALGRIND_FLAGS="--leak-check=full --show-leak-kinds=all"
|
|
# valgrind mode for debug
|
|
#if grep "staticexe=-static" $PRE/Makefile >/dev/null 2>&1; then
|
|
# if test -x "`which valgrind`"; then
|
|
# do_valgrind=yes
|
|
# fi
|
|
#fi
|
|
|
|
# self-test (unit test of testbound)
|
|
if test $do_valgrind = "yes"; then
|
|
echo "valgrind yes"
|
|
echo
|
|
if (valgrind $VALGRIND_FLAGS $PRE/testbound -s >tmpout 2>&1;); then
|
|
echo "selftest OK "
|
|
else
|
|
echo "selftest FAILED"
|
|
exit 1
|
|
fi
|
|
if grep "All heap blocks were freed -- no leaks are possible" tmpout; then
|
|
: # clean
|
|
else
|
|
cat tmpout
|
|
echo "Memory leaked in selftest"
|
|
grep "in use at exit" tmpout
|
|
exit 1
|
|
fi
|
|
if grep "ERROR SUMMARY: 0 errors from 0 contexts" tmpout; then
|
|
: # clean
|
|
else
|
|
cat tmpout
|
|
echo "Errors in selftest"
|
|
grep "ERROR SUMMARY" tmpout
|
|
exit 1
|
|
fi
|
|
else
|
|
if ($PRE/testbound -s >/dev/null 2>&1;); then
|
|
echo "selftest OK "
|
|
else
|
|
echo "selftest FAILED"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
|
|
# the .crpl are not always supported and need checking for SHA256 and GOST
|
|
# support.
|
|
# the .rpl should work on any system (portable).
|
|
for input in $PRE/testdata/*.rpl $PRE/testdata/*.crpl; do
|
|
header=`grep SCENARIO_BEGIN $input | head -1 | sed -e 's/SCENARIO_BEGIN //'`
|
|
cleaninput=`echo $input | sed -e "s?$PRE/testdata/??"`
|
|
|
|
# detect if SHA256 is needed
|
|
if echo $cleaninput | grep sha2 >/dev/null 2>&1; then
|
|
if $PRE/testbound -2 >/dev/null 2>&1; then
|
|
: # the SHA256 is supported
|
|
else
|
|
continue
|
|
fi
|
|
fi
|
|
|
|
# detect if GOST is needed
|
|
if echo $cleaninput | grep gost >/dev/null 2>&1; then
|
|
if $PRE/testbound -g >/dev/null 2>&1; then
|
|
: # GOST is supported
|
|
else
|
|
continue
|
|
fi
|
|
fi
|
|
|
|
# detect if CLIENT_SUBNET is needed
|
|
if echo $cleaninput | grep subnet >/dev/null 2>&1; then
|
|
if $PRE/testbound -c >/dev/null 2>&1; then
|
|
: # CLIENT_SUBNET is supported
|
|
else
|
|
continue
|
|
fi
|
|
fi
|
|
|
|
# detect if IPSECMOD is needed
|
|
if echo $cleaninput | grep ipsecmod >/dev/null 2>&1; then
|
|
if $PRE/testbound -i >/dev/null 2>&1; then
|
|
: # IPSECMOD is supported
|
|
else
|
|
continue
|
|
fi
|
|
fi
|
|
|
|
if test $do_valgrind = "yes"; then
|
|
echo
|
|
if (valgrind $VALGRIND_FLAGS $PRE/testbound -p $input >tmpout 2>&1;); then
|
|
echo " OK $cleaninput: $header"
|
|
else
|
|
echo "FAILED $cleaninput: $header"
|
|
exitval=1
|
|
fi
|
|
if grep "All heap blocks were freed -- no leaks are possible" tmpout; then
|
|
: # clean
|
|
else
|
|
grep "^==" tmpout
|
|
echo "Memory leaked in $cleaninput"
|
|
grep "in use at exit" tmpout
|
|
exitval=1
|
|
fi
|
|
if grep "ERROR SUMMARY: 0 errors from 0 contexts" tmpout; then
|
|
: # clean
|
|
else
|
|
grep "^==" tmpout
|
|
echo "Errors in $cleaninput"
|
|
grep "ERROR SUMMARY" tmpout
|
|
exitval=1
|
|
fi
|
|
else
|
|
# do valgrind=no
|
|
if ($PRE/testbound -p $input >/dev/null 2>&1;); then
|
|
echo " OK $cleaninput: $header"
|
|
else
|
|
echo "FAILED $cleaninput: $header"
|
|
exitval=1
|
|
fi
|
|
fi
|
|
if test -f ublocktrace.0; then
|
|
if $PRE/lock-verify ublocktrace.*; then
|
|
#echo "lock-verify test $input worked."
|
|
i=i
|
|
else
|
|
echo "lock-verify test $input failed."
|
|
exitval=1
|
|
fi
|
|
fi
|
|
done
|
|
exit $exitval
|