# $OpenLDAP$
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
##
-## Copyright 1998-2004 The OpenLDAP Foundation.
+## Copyright 1998-2005 The OpenLDAP Foundation.
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
echo "running defines.sh"
. $SRCDIR/scripts/defines.sh
-if test $BACKRELAY = relayno ; then
- echo "relay backend not available, test skipped"
- exit 0
-fi
-
if test $RWM = rwmno ; then
echo "Rewrite/remap overlay not available, test skipped"
exit 0
fi
-mkdir -p $TESTDIR $DBDIR1
-
-echo "Starting slapd on TCP/IP port $PORT1..."
-. $CONFFILTER $BACKEND $MONITORDB < $RWMCONF > $CONF1
-$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
-PID=$!
-if test $WAIT != 0 ; then
- echo PID $PID
- read foo
-fi
-KILLPIDS="$PID"
-
-echo "Using ldapsearch to check that slapd is running..."
-for i in 0 1 2 3 4 5; do
- $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
- 'objectclass=*' > /dev/null 2>&1
- RC=$?
- if test $RC = 0 ; then
- break
+echo ""
+
+if test "x$RELAYS" = "x" ; then
+ RELAYS=
+ # back-relay
+ if test $BACKRELAY = relayno ; then
+ echo "relay backend not available, test skipped"
+ else
+ if test "x$RELAYS" != "x" ; then
+ RELAYS="${RELAYS} "
+ fi
+ RELAYS="${RELAYS}relay"
fi
- echo "Waiting 5 seconds for slapd to start..."
- sleep 5
-done
-if test $RC != 0 ; then
- echo "ldapsearch failed $(RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
-
-echo "Using ldapadd to populate the database..."
-$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
- $LDIFORDERED > $TESTOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "ldapadd failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
-
-cat /dev/null > $SEARCHOUT
-
-BASEDN="dc=example,dc=com"
-echo "searching base=\"$BASEDN\"..."
-$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "Search failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
-
-BASEDN="o=Example,c=US"
-echo "searching base=\"$BASEDN\"..."
-$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "Search failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
-
-BASEDN="o=Esempio,c=IT"
-echo "searching base=\"$BASEDN\"..."
-$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "Search failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
-BASEDN="o=Beispiel,c=DE"
-echo "searching base=\"$BASEDN\"..."
-$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "Search failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
-
-#
-# Do some modifications
-#
-
-BASEDN="o=Beispiel,c=DE"
-echo "modifying database \"$BASEDN\"..."
-$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
- >> $TESTOUT 2>&1 << EOMODS
-dn: cn=Added User,ou=Alumni Association,ou=People,$BASEDN
-changetype: add
-objectClass: OpenLDAPperson
-cn: Added User
-sn: User
-uid: auser
-seealso: cn=All Staff,ou=Groups,$BASEDN
-homephone: +49 1234567890
-drink: Beer
-mail: auser@mail.alumni.example.com
-telephonenumber: +1 313 555 4178
-
-dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
-changetype: modify
-add: seeAlso
-seeAlso: cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN
--
-add: description
-description: Just added self in $BASEDN virtual naming context
--
-
-dn: cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN
-changetype: delete
-
-dn: cn=John Doe,ou=Information Technology Division,ou=People,$BASEDN
-changetype: modrdn
-newrdn: cn=John P. Doe
-deleteoldrdn: 1
-
-dn: cn=Jane Doe,ou=Alumni Association,ou=People,$BASEDN
-changetype: modrdn
-newrdn: cn=Jane Q. Doe
-deleteoldrdn: 1
-newsuperior: ou=Information Technology Division,ou=People,$BASEDN
-
-EOMODS
+ # back-ldap
+ if test $BACKLDAP = ldapno ; then
+ echo "ldap backend not available, test skipped"
+ else
+ if test "x$RELAYS" != "x" ; then
+ RELAYS="${RELAYS} "
+ fi
+ RELAYS="${RELAYS}ldap"
+ fi
-if test $RC != 0 ; then
- echo "Modify failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+ # back-meta
+ if test $BACKMETA = metano ; then
+ echo "meta backend not available, test skipped"
+ else
+ if test "x$RELAYS" != "x" ; then
+ RELAYS="${RELAYS} "
+ fi
+ RELAYS="${RELAYS}meta"
+ fi
fi
-BASEDN="o=Esempio,c=IT"
-echo "searching base=\"$BASEDN\"..."
-$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" >> $SEARCHOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "Search failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
+if test "x$RELAYS" = "x" ; then
+ echo "no relaying capable backend is available"
+ echo ">>>>> Test succeeded"
+ exit 0
fi
-echo "Filtering ldapsearch results..."
-. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
-echo "Filtering original ldif used to create database..."
-. $LDIFFILTER < $RELAYOUT > $LDIFFLT
-echo "Comparing filter output..."
-$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
-
-if test $? != 0 ; then
- echo "comparison failed - relay search/modification didn't succeed"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit 1
-fi
+echo "Testing virtual naming context mapping with $RELAYS backend(s)..."
+echo ""
-BASEDN="o=Example,c=US"
-echo "changing password to database \"$BASEDN\"..."
-$LDAPPASSWD -h $LOCALHOST -p $PORT1 -D "cn=Manager,$BASEDN" -w $PASSWD \
- "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
- -s $PASSWD >> $TESTOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "Passwd ExOp failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
+first=1
+for RELAY in $RELAYS ; do
+ if test $first = 1 ; then
+ first=0
+ else
+ echo ">>>>> waiting 10 seconds for things to exit"
+ sleep 10
+ echo ""
-echo "binding with newly changed password to database \"$BASEDN\"..."
-$LDAPWHOAMI -h $LOCALHOST -p $PORT1 \
- -D "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
- -w $PASSWD >> $TESTOUT 2>&1
-RC=$?
-if test $RC != 0 ; then
- echo "WhoAmI failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
+ rm -rf $TESTDIR
+ fi
-BASEDN="o=Esempio,c=IT"
-echo "comparing to database \"$BASEDN\"..."
-$LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
- "cn=Added User,ou=Alumni Association,ou=People,$BASEDN" \
- "seeAlso:cn=All Staff,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
-RC=$?
-if test $RC != 6 ; then
- echo "Compare failed ($RC)!"
- test $KILLSERVERS != no && kill -HUP $KILLPIDS
- exit $RC
-fi
+ mkdir -p $TESTDIR $DBDIR1
-test $KILLSERVERS != no && kill -HUP $KILLPIDS
+ . $SRCDIR/scripts/relay
+done
echo ">>>>> Test succeeded"
exit 0