home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Geek Gadgets 1
/
ADE-1.bin
/
ade-dist
/
dbmalloc-1.14-src.tgz
/
tar.out
/
contrib
/
dbmalloc
/
Runtests
< prev
next >
Wrap
Text File
|
1996-09-28
|
4KB
|
156 lines
#!/bin/sh
#
#
# (c) Copyright 1990, 1991, 1992 Conor P. Cahill (cpcahil@virtech.vti.com)
#
# This software may be distributed freely as long as the following conditions
# are met:
# * the distribution, or any derivative thereof, may not be
# included as part of a commercial product
# * full source code is provided including this copyright
# * there is no charge for the software itself (there may be
# a minimal charge for the copying or distribution effort)
# * this copyright notice is not modified or removed from any
# source file
#
# $Id: Runtests,v 1.13 1992/08/22 16:27:13 cpcahil Exp $
#
# This shell attempts to run all of the tests distributed with the
# malloc library and detmine if they pass.
#
# The following tests are processed
#
# testmem - test str* and mem* functions
# teststack - test stack mechanism
# testmalloc - test malloc routines
# testerr - test error conditions
#
#
# before we run any tests, lets make sure we have the programs that
# we intend to test
#
if [ ! -r testmem -o ! -r teststack -o ! -r testmalloc -o ! -r testerr ]; then
echo "All of the test programs are not available. Pleas run"
echo "make tests before you run this shell"
exit 1
fi
#
# these tests have to run with the default malloc environment variables,
# so make sure they are not overridden (otherwise the validation of the
# results may be incorrect)
#
MALLOC_CKCHAIN=0
MALLOC_DETAIL=0
MALLOC_WARN=0
MALLOC_FATAL=1
MALLOC_CKDATA=1
MALLOC_LOWFRAG=0
MALLOC_REUSE=1
MALLOC_ERRFILE="-"
MALLOC_FILLAREA=3
MALLOC_SHOW_LINKS=0
export MALLOC_CKCHAIN MALLOC_DETAIL MALLOC_WARN MALLOC_FATAL MALLOC_CKDATA
export MALLOC_LOWFRAG MALLOC_REUSE MALLOC_ERRFILE MALLOC_FILLAREA
export MALLOC_SHOW_LINKS
OUT=Runtests.out
TMPOUT=/tmp/err.$$
TMPFILE=/tmp/ttt.$$
failed=0
rm -f $OUT
cat <<endcat > $OUT
This file contains the outputs from the tests run by the Runtests script.
For more info on a particular test, check the README file
endcat
#
# run testmem and verify that it had no output and returned a zero exit code
#
echo "************ Running testmem test..." >> $OUT
rm -f ${TMPOUT}
./testmem > ${TMPOUT} 2>&1
if [ $? != 0 -o -s ${TMPOUT} ]; then
echo "FAILED testmem test"
echo "FAILED testmem test" >> $OUT
failed=`expr $failed + 1`
fi
cat ${TMPOUT} >> $OUT
#
# run stack tests and verify the output is correct
#
echo "************ Running stack test" >> $OUT
./teststack > ${TMPOUT} 2>&1
result=$?
lines=`grep "\->" ${TMPOUT} | wc -l | sed -e "s/ //g"`
if [ $result != 0 -o "x$lines" != "x53" ]; then
echo "FAILED teststack test"
echo "FAILED teststack test" >> $OUT
failed=`expr $failed + 1`
fi
cat ${TMPOUT} >> $OUT
#
# run the malloc tests. Note that we only run 5,000 iterations of the test and
# a real test should be well over 1,000,000 tests. However, since I don't want
# the user thinking the system has locked up, I will just run the short test
# here. (this can be overridden by passing an arugment to Runtests (any
# arugment will do))
#
echo "************ Running malloc test" >> $OUT
./testmalloc 5000 > ${TMPOUT} 2>&1
result=$?
line="`grep 'Did 5000 iterations' ${TMPOUT}`"
line2="`grep Warning ${TMPOUT}`"
if [ $result != 0 -o -z "$line" -o ! -z "$line2" ]; then
echo "FAILED malloc test"
echo "FAILED malloc test" >> $OUT
failed=`expr $failed + 1`
fi
cat ${TMPOUT} >> $OUT
#
# run the malloc error test. Note that this test *should* abort therefore we
# have to run it in a sub-shell in order to ensure that the user doesn't see
# an error message
#
echo "************ Running error test" >> $OUT
sh -c "./testerr" > ${TMPOUT} 2>&1
sed -e "111,\$ d" -e "/ was /d" < ${TMPOUT} > ${TMPFILE}
cmp ${TMPFILE} testerr.base
if [ $? != 0 ]; then
echo "FAILED error test"
echo "FAILED error test" >> $OUT
failed=`expr $failed + 1`
fi
cat ${TMPOUT} >> $OUT
rm -f ${TMPOUT} ${TMPFILE}
if [ $failed = 0 ]; then
echo "All tests seem to have passed. Review $OUT to make sure"
fi
rm -f core a.out
exit $failed