mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 09:06:25 +00:00
172 lines
4.3 KiB
Text
172 lines
4.3 KiB
Text
|
#! /bin/sh
|
||
|
#
|
||
|
# $Id$
|
||
|
LIBS=${LIBS:-"-lpthread"}
|
||
|
WINBUILDDIR="Win32/Release"
|
||
|
|
||
|
CYGWIN=0
|
||
|
HOSTOS="`uname -o 2>/dev/null||uname -s 2>/dev/null`"
|
||
|
if test `echo "$HOSTOS"|grep -i cygwin|wc -l` -gt 0;then
|
||
|
CYGWIN=1
|
||
|
fi
|
||
|
|
||
|
# build_test_micro_posix
|
||
|
# Build test_micro on a POSIX system.
|
||
|
build_test_micro_posix()
|
||
|
{
|
||
|
# See if there's a test_micro binary already.
|
||
|
test $clean -eq 0 && test -x test_micro && return 0
|
||
|
|
||
|
echo 'Compiling test_micro on posix system...'
|
||
|
rm -f test_micro
|
||
|
CC=${CC:-gcc}
|
||
|
if [ "$CC" = "gcc" ]; then
|
||
|
CC="$CC -O3 -Wall"
|
||
|
else
|
||
|
CC="$CC -O"
|
||
|
fi
|
||
|
$CC -I. -I../src/dbinc -I../src/dbinc_auto -I.. -I../src -I$h/source \
|
||
|
$SRC -o test_micro ./libdb.a $LIBS || return 1
|
||
|
}
|
||
|
|
||
|
# build_test_micro_windows
|
||
|
# Build test_micro on a Windows system.
|
||
|
build_test_micro_windows()
|
||
|
{
|
||
|
# See if there's a test_micro binary already.
|
||
|
test $clean -eq 0 && test -x test_micro && return 0
|
||
|
|
||
|
echo 'Compiling test_micro on windows ...'
|
||
|
rm -f test_micro
|
||
|
|
||
|
cl /nologo /o test_micro /DDB_WIN32 /G6 /Ox /MD\
|
||
|
-I./ -I../ -I../src/ -I$h/source/ -I../src/dbinc -I../src/dbinc_auto \
|
||
|
$SRC $WINSRC ./$WINBUILDDIR/libdb*.lib ./Release/libdb*.lib \
|
||
|
ws2_32.lib advapi32.lib
|
||
|
}
|
||
|
|
||
|
# run --
|
||
|
# $1: args
|
||
|
run()
|
||
|
{
|
||
|
# You can set the MAJOR and MINOR environment variables to limit
|
||
|
# the BDB releases on which the tests are run.
|
||
|
echo Versions db-${MAJOR:-[3-9]}.${MINOR:-*}.*
|
||
|
for i in db-${MAJOR:-[3-9]}.${MINOR:-*}.*; do
|
||
|
|
||
|
major=`echo $i|sed "s/db-//g"|cut -d . -f 1`
|
||
|
minor=`echo $i|sed "s/db-//g"|cut -d . -f 2`
|
||
|
if test $major -gt "4";then
|
||
|
WINBUILDDIR="Win32/Release"
|
||
|
elif test $major -lt "4";then
|
||
|
WINBUILDDIR="Release"
|
||
|
elif test "X$minor" = "X" -o "$minor" -lt "8";then
|
||
|
WINBUILDDIR="Release"
|
||
|
else
|
||
|
WINBUILDDIR="Win32/Release"
|
||
|
fi
|
||
|
|
||
|
if [ -f $i/$variant/libdb.a ] ; then
|
||
|
(cd $i/$variant/ &&
|
||
|
build_test_micro_posix || exit 1)
|
||
|
elif [ -f $i/build_windows/${WINBUILDDIR}/libdb??.lib ] ; then
|
||
|
(cd $i/build_windows &&
|
||
|
build_test_micro_windows || exit 1)
|
||
|
fi
|
||
|
|
||
|
echo "$i run begins: `date`"
|
||
|
echo "test_micro $1..."
|
||
|
if [ -f $i/$variant/libdb.a ] ; then
|
||
|
(cd $i/$variant/ && ./test_micro $1 || exit 1)
|
||
|
if [ -f $t/gmon.out ] ; then
|
||
|
mv $t/gmon.out $i/$variant
|
||
|
gprof $i/$variant/.libs/lt-test_micro $i/$variant/gmon.out > $i/$variant/gprof.out
|
||
|
fi
|
||
|
elif [ -f $i/build_windows/${WINBUILDDIR}/libdb??.lib ] ; then
|
||
|
(cd $i/build_windows/ && ./test_micro $1 || exit 1)
|
||
|
fi
|
||
|
echo "$i run ends: `date`"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
# Get a path to this shellscript.
|
||
|
t=`dirname $0`
|
||
|
h=`(cd $t && pwd)`
|
||
|
if [ "$CYGWIN" = "1" ];then
|
||
|
h="`cygpath -m -a \"$h\"`"
|
||
|
fi
|
||
|
# We may need to re-compile, create a list of our sources.
|
||
|
SRC="$h/source/b_curalloc.c $h/source/b_curwalk.c $h/source/b_del.c
|
||
|
$h/source/b_get.c $h/source/b_inmem.c $h/source/b_load.c $h/source/b_latch.c
|
||
|
$h/source/b_open.c $h/source/b_put.c $h/source/b_recover.c
|
||
|
$h/source/b_txn.c $h/source/b_txn_write.c $h/source/b_uname.c
|
||
|
$h/source/b_util.c $h/source/b_workload.c $h/source/test_micro.c
|
||
|
$h/../../src/common/util_arg.c"
|
||
|
|
||
|
WINSRC="$h/../../src/clib/getopt.c"
|
||
|
|
||
|
# Process arguments.
|
||
|
clean=0 # Rebuild test_micro
|
||
|
workload=0 # Run workload tests
|
||
|
start_test=0 # Start test
|
||
|
end_test=0 # End test
|
||
|
variant=build_unix
|
||
|
while :
|
||
|
do case "$1" in
|
||
|
-c) # Rebuild test_micro.
|
||
|
clean=1
|
||
|
shift;;
|
||
|
-w) # Run workload tests
|
||
|
workload=1
|
||
|
shift;;
|
||
|
[1-9]*-[0-9]*) # Range: -3, 3-, 3-10
|
||
|
start_test=`echo $1|sed 's/-.*//'`
|
||
|
start_test=${start_test:=1}
|
||
|
end_test=`echo $1|sed 's/.*-//'`
|
||
|
end_test=${end_test:=0}
|
||
|
shift;;
|
||
|
[1-9]*) # Specific test
|
||
|
start_test="$1"
|
||
|
end_test="$1"
|
||
|
shift;;
|
||
|
-v) variant=$2 # get code here, rather than from build_unix
|
||
|
shift; shift;;
|
||
|
*)
|
||
|
break;;
|
||
|
esac
|
||
|
done
|
||
|
test "$#" -ne 0 && {
|
||
|
echo 'usage: test_micro [-cw] [# | #- | -# | #-#]' >& 2
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
if test $start_test != 0; then
|
||
|
cmd="$cmd -s $start_test"
|
||
|
fi
|
||
|
if test $end_test != 0; then
|
||
|
cmd="$cmd -e $end_test"
|
||
|
fi
|
||
|
|
||
|
# Create the run directory, and initialize test_micro's arguments.
|
||
|
t=RUN.`hostname | sed 's/\..*//'`
|
||
|
[ -d $t ] || mkdir $t
|
||
|
if [ "$CYGWIN" = "1" ];then
|
||
|
cmd="$cmd -d `(cd $t && cygpath -m -a \"$PWD\")`"
|
||
|
else
|
||
|
cmd="$cmd -d `(cd $t && pwd)`"
|
||
|
fi
|
||
|
# Set input file.
|
||
|
if test "$workload" -eq 1; then
|
||
|
cmd="$cmd -i $h/configs/run.workload"
|
||
|
else
|
||
|
cmd="$cmd -i $h/configs/run.std"
|
||
|
fi
|
||
|
|
||
|
# Flush any I/O, just to get as a clean a timing as we can, ignore errors,
|
||
|
# sync is privleged on some systems.
|
||
|
(sync && sleep 1 2>&1) > /dev/null
|
||
|
|
||
|
run "$cmd"
|
||
|
|
||
|
exit 0
|