mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-06 10:46:21 +08:00
70b57c5667
Some portions of the test suite did not correctly handle asyncmeta, fix those issues. Tests execute and pass after this change
280 lines
6.4 KiB
Bash
280 lines
6.4 KiB
Bash
#!/bin/sh
|
|
# $OpenLDAP$
|
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
|
##
|
|
## Copyright 1998-2019 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@"
|
|
TOPSRCDIR="@top_srcdir@"
|
|
LN_S="@LN_S@"
|
|
EGREP_CMD="@EGREP@"
|
|
|
|
export SRCDIR TOPSRCDIR LN_S EGREP_CMD
|
|
|
|
# backends known to ./run -b <backend> (used to deduce $BACKENDTYPE)
|
|
AC_ldif=yes
|
|
AC_mdb=@BUILD_MDB@
|
|
AC_null=@BUILD_NULL@
|
|
|
|
# other backends
|
|
AC_ldap=ldap@BUILD_LDAP@
|
|
AC_meta=meta@BUILD_META@
|
|
AC_asyncmeta=asyncmeta@BUILD_ASYNCMETA@
|
|
AC_monitor=@BUILD_MONITOR@
|
|
AC_relay=relay@BUILD_RELAY@
|
|
AC_sql=sql@BUILD_SQL@
|
|
|
|
# overlays
|
|
AC_accesslog=accesslog@BUILD_ACCESSLOG@
|
|
AC_autoca=autoca@BUILD_AUTOCA@
|
|
AC_constraint=constraint@BUILD_CONSTRAINT@
|
|
AC_dds=dds@BUILD_DDS@
|
|
AC_dynlist=dynlist@BUILD_DYNLIST@
|
|
AC_memberof=memberof@BUILD_MEMBEROF@
|
|
AC_pcache=pcache@BUILD_PROXYCACHE@
|
|
AC_ppolicy=ppolicy@BUILD_PPOLICY@
|
|
AC_refint=refint@BUILD_REFINT@
|
|
AC_retcode=retcode@BUILD_RETCODE@
|
|
AC_translucent=translucent@BUILD_TRANSLUCENT@
|
|
AC_unique=unique@BUILD_UNIQUE@
|
|
AC_rwm=rwm@BUILD_RWM@
|
|
AC_syncprov=syncprov@BUILD_SYNCPROV@
|
|
AC_valsort=valsort@BUILD_VALSORT@
|
|
|
|
# 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_THREADS=threads@BUILD_THREAD@
|
|
AC_LIBS_DYNAMIC=lib@BUILD_LIBS_DYNAMIC@
|
|
|
|
# sanitize
|
|
if test "${AC_ldap}" = "ldapmod" && test "${AC_LIBS_DYNAMIC}" = "static" ; then
|
|
AC_ldap="ldapno"
|
|
fi
|
|
if test "${AC_meta}" = "metamod" && test "${AC_LIBS_DYNAMIC}" = "static" ; then
|
|
AC_meta="metano"
|
|
fi
|
|
if test "${AC_asyncmeta}" = "asyncmetamod" && test "${AC_LIBS_DYNAMIC}" = "static" ; then
|
|
AC_meta="asyncmetano"
|
|
fi
|
|
export AC_ldap AC_mdb AC_meta AC_asyncmeta AC_monitor AC_null AC_relay AC_sql \
|
|
AC_accesslog AC_autoca AC_constraint AC_dds AC_dynlist AC_memberof AC_pcache AC_ppolicy \
|
|
AC_refint AC_retcode AC_rwm AC_unique AC_syncprov AC_translucent \
|
|
AC_valsort \
|
|
AC_WITH_SASL AC_WITH_TLS AC_WITH_MODULES_ENABLED AC_ACI_ENABLED \
|
|
AC_THREADS 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\" != 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`
|
|
if test "x$BACKENDTYPE" = "x" ; then
|
|
BACKENDTYPE="unknown"
|
|
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 ;;
|
|
ndb) INDEXDB=indexdb ;;
|
|
esac
|
|
|
|
export BACKEND BACKENDTYPE INDEXDB MAINDB \
|
|
WAIT KILLSERVERS PRESERVE SYNCMODE USERDATA
|
|
|
|
if test $# = 0 ; then
|
|
echo "$USAGE"; exit 1
|
|
fi
|
|
|
|
# need defines.sh for the definitions of the directories
|
|
. $SRCDIR/scripts/defines.sh
|
|
|
|
SCRIPTDIR="${SRCDIR}/scripts"
|
|
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
|
|
if test $BACKEND = ndb ; then
|
|
mysql --user root <<EOF
|
|
drop database if exists db_1;
|
|
drop database if exists db_2;
|
|
drop database if exists db_3;
|
|
drop database if exists db_4;
|
|
drop database if exists db_5;
|
|
drop database if exists db_6;
|
|
EOF
|
|
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
|
|
$SCRIPT $*
|
|
RC=$?
|
|
|
|
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
|