mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-18 21:26:29 -05:00
This uses the result AC_CANONICAL_HOST and a pre-existing case statement checking for mingw32, cygwin, interix to determine if the build system is Windows based... We make the not unreasonable assumption that if the build system is Windows based, the tests will also be running on a Windows system.
246 lines
5.2 KiB
Bash
246 lines
5.2 KiB
Bash
#!/bin/sh
|
|
# $OpenLDAP$
|
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
|
##
|
|
## Copyright 1998-2024 The OpenLDAP Foundation.
|
|
## All rights reserved.
|
|
##
|
|
## Redistribution and use in source and binary forms, with or without
|
|
## modification, are permitted only as authorized by the OpenLDAP
|
|
## Public License.
|
|
##
|
|
## A copy of this license is available in the file LICENSE in the
|
|
## top-level directory of the distribution or, alternatively, at
|
|
## <http://www.OpenLDAP.org/license.html>.
|
|
|
|
USAGE="$0 [-b <backend>] [-c] [-k] [-l #] [-p] [-s {ro|rp}] [-u] [-w] <script>"
|
|
|
|
# configure generated
|
|
SRCDIR="${SRCDIR:-@srcdir@}"
|
|
TOPSRCDIR="${TOPSRCDIR:-@top_srcdir@}"
|
|
TOPDIR="`(cd ..; echo $PWD)`"
|
|
OBJDIR="${OBJDIR:-$TOPDIR}"
|
|
LN_S="@LN_S@"
|
|
EGREP_CMD="@EGREP@"
|
|
|
|
export SRCDIR TOPSRCDIR OBJDIR LN_S EGREP_CMD
|
|
|
|
SCRIPTDIR="${SCRIPTDIR:-${SRCDIR}/scripts}"
|
|
DEFSDIR="${DEFSDIR:-$SCRIPTDIR}"
|
|
# need defines.sh for the definitions of the directories
|
|
. "$DEFSDIR/defines.sh"
|
|
|
|
# Load balancer
|
|
AC_lloadd=lloadd@BUILD_BALANCER@
|
|
|
|
# backends known to ./run -b <backend> (used to deduce $BACKENDTYPE)
|
|
AC_ldif=yes
|
|
#AC_mdb=
|
|
#AC_null=
|
|
|
|
# misc
|
|
AC_WITH_SASL=@WITH_SASL@
|
|
AC_WITH_TLS=@WITH_TLS@
|
|
AC_TLS_TYPE=@WITH_TLS_TYPE@
|
|
AC_WITH_MODULES_ENABLED=@WITH_MODULES_ENABLED@
|
|
AC_ACI_ENABLED=aci@WITH_ACI_ENABLED@
|
|
AC_LIBS_DYNAMIC=lib@BUILD_LIBS_DYNAMIC@
|
|
|
|
# environment
|
|
AC_OS_WINDOWS=@OS_WINDOWS@
|
|
|
|
export AC_lloadd \
|
|
AC_WITH_SASL AC_WITH_TLS AC_WITH_MODULES_ENABLED AC_ACI_ENABLED \
|
|
AC_LIBS_DYNAMIC AC_WITH_TLS AC_TLS_TYPE
|
|
|
|
if test ! -x ../servers/slapd/slapd ; then
|
|
echo "Could not locate slapd(8)"
|
|
exit 1
|
|
fi
|
|
|
|
BACKEND=
|
|
CLEAN=no
|
|
WAIT=0
|
|
KILLSERVERS=yes
|
|
PRESERVE=${PRESERVE-no}
|
|
SYNCMODE=${SYNCMODE-rp}
|
|
USERDATA=no
|
|
LOOP=1
|
|
COUNTER=1
|
|
|
|
while test $# -gt 0 ; do
|
|
case "$1" in
|
|
-b | -backend)
|
|
BACKEND="$2"
|
|
shift; shift ;;
|
|
|
|
-c | -clean)
|
|
CLEAN=yes
|
|
shift ;;
|
|
|
|
-k | -kill)
|
|
KILLSERVERS=no
|
|
shift ;;
|
|
-l | -loop)
|
|
NUM="`echo $2 | sed 's/[0-9]//g'`"
|
|
if [ -z "$NUM" ]; then
|
|
LOOP=$2
|
|
else
|
|
echo "Loop variable not an int: $2"
|
|
echo "$USAGE"; exit 1
|
|
fi
|
|
shift ;
|
|
shift ;;
|
|
|
|
-p | -preserve)
|
|
PRESERVE=yes
|
|
shift ;;
|
|
|
|
-s | -syncmode)
|
|
case "$2" in
|
|
ro | rp)
|
|
SYNCMODE="$2"
|
|
;;
|
|
*)
|
|
echo "unknown sync mode $2"
|
|
echo "$USAGE"; exit 1
|
|
;;
|
|
esac
|
|
shift; shift ;;
|
|
|
|
-u | -userdata)
|
|
USERDATA=yes
|
|
shift ;;
|
|
|
|
-w | -wait)
|
|
WAIT=1
|
|
shift ;;
|
|
|
|
-)
|
|
shift
|
|
break ;;
|
|
|
|
-*)
|
|
echo "$USAGE"; exit 1
|
|
;;
|
|
|
|
*)
|
|
break ;;
|
|
esac
|
|
done
|
|
|
|
if test -z "$BACKEND" ; then
|
|
for b in mdb ; do
|
|
if eval "test \"\$AC_$b\" != ${b}no" ; then
|
|
BACKEND=$b
|
|
break
|
|
fi
|
|
done
|
|
if test -z "$BACKEND" ; then
|
|
echo "No suitable default database backend configured" >&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
BACKENDTYPE=`eval 'echo $AC_'$BACKEND | sed -e s/$BACKEND//`
|
|
if test "x$BACKENDTYPE" = "x" ; then
|
|
BACKENDTYPE="unknown"
|
|
fi
|
|
if test "$BACKENDTYPE" != "yes" -a "$BACKENDTYPE" != "mod" ; then
|
|
echo "Backend $BACKEND disabled or unknown (type is \"$BACKENDTYPE\")"
|
|
exit 1
|
|
fi
|
|
|
|
# Backend features. indexdb: indexing and unchecked limit.
|
|
# maindb: main storage backend. Currently index,limits,mode,paged results.
|
|
INDEXDB=noindexdb MAINDB=nomaindb
|
|
case $BACKEND in
|
|
mdb) INDEXDB=indexdb MAINDB=maindb ;;
|
|
wt) INDEXDB=indexdb ;;
|
|
esac
|
|
|
|
export BACKEND BACKENDTYPE INDEXDB MAINDB \
|
|
WAIT KILLSERVERS PRESERVE SYNCMODE USERDATA
|
|
|
|
if test $# = 0 ; then
|
|
echo "$USAGE"; exit 1
|
|
fi
|
|
|
|
|
|
ITSDIR="${SRCDIR}/data/regressions"
|
|
SCRIPTNAME="$1"
|
|
shift
|
|
|
|
if test -x "${SCRIPTDIR}/${SCRIPTNAME}" ; then
|
|
SCRIPT="${SCRIPTDIR}/${SCRIPTNAME}"
|
|
elif test -x "`echo ${SCRIPTDIR}/test*-${SCRIPTNAME}`"; then
|
|
SCRIPT="`echo ${SCRIPTDIR}/test*-${SCRIPTNAME}`"
|
|
elif test -x "`echo ${SCRIPTDIR}/${SCRIPTNAME}-*`"; then
|
|
SCRIPT="`echo ${SCRIPTDIR}/${SCRIPTNAME}-*`"
|
|
elif test -x "`echo ${ITSDIR}/${SCRIPTNAME}/${SCRIPTNAME}`"; then
|
|
SCRIPT="`echo ${ITSDIR}/${SCRIPTNAME}/${SCRIPTNAME}`"
|
|
else
|
|
echo "run: ${SCRIPTNAME} not found (or not executable)"
|
|
exit 1;
|
|
fi
|
|
|
|
if test ! -r ${DATADIR}/test.ldif ; then
|
|
${LN_S} ${SRCDIR}/data ${DATADIR}
|
|
fi
|
|
if test ! -r ${SCHEMADIR}/core.schema ; then
|
|
${LN_S} ${TOPSRCDIR}/servers/slapd/schema ${SCHEMADIR}
|
|
fi
|
|
|
|
if test -d ${TESTDIR} ; then
|
|
if test $PRESERVE = no ; then
|
|
echo "Cleaning up test run directory leftover from previous run."
|
|
/bin/rm -rf ${TESTDIR}
|
|
elif test $PRESERVE = yes ; then
|
|
echo "Cleaning up only database directories leftover from previous run."
|
|
/bin/rm -rf ${TESTDIR}/db.*
|
|
fi
|
|
fi
|
|
mkdir -p ${TESTDIR}
|
|
|
|
if test $USERDATA = yes ; then
|
|
if test ! -d userdata ; then
|
|
echo "User data directory (userdata) does not exist."
|
|
exit 1
|
|
fi
|
|
cp -R userdata/* ${TESTDIR}
|
|
fi
|
|
|
|
# disable LDAP initialization
|
|
LDAPNOINIT=true; export LDAPNOINIT
|
|
|
|
echo "Running ${SCRIPT} for ${BACKEND}..."
|
|
while [ $COUNTER -le $LOOP ]; do
|
|
if [ $LOOP -gt 1 ]; then
|
|
echo "Running $COUNTER of $LOOP iterations"
|
|
fi
|
|
START=`date +%s`
|
|
$SCRIPT $*
|
|
RC=$?
|
|
END=`date +%s`
|
|
|
|
if test $CLEAN = yes ; then
|
|
echo "Cleaning up test run directory from this run."
|
|
/bin/rm -rf ${TESTDIR}
|
|
echo "Cleaning up symlinks."
|
|
/bin/rm -f ${DATADIR} ${SCHEMADIR}
|
|
fi
|
|
|
|
if [ $RC -ne 0 ]; then
|
|
if [ $LOOP -gt 1 ]; then
|
|
echo "Failed after $COUNTER of $LOOP iterations"
|
|
fi
|
|
exit $RC
|
|
else
|
|
COUNTER=`expr $COUNTER + 1`
|
|
if [ $COUNTER -le $LOOP ]; then
|
|
echo "Cleaning up test run directory from this run."
|
|
/bin/rm -rf ${TESTDIR}
|
|
fi
|
|
fi
|
|
done
|
|
exit $RC
|