X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest030-relay;h=7f06f98e7f4ff74283a343846afef72b45adb90b;hb=6c062ca841f82ca9ea17172c2a9882f373a76c02;hp=56a41b7e514202f7f8728a392e7d4256c1e3b03f;hpb=44276337773fce170b52ce70e504dfab9b7816e9;p=openldap diff --git a/tests/scripts/test030-relay b/tests/scripts/test030-relay index 56a41b7e51..7f06f98e7f 100755 --- a/tests/scripts/test030-relay +++ b/tests/scripts/test030-relay @@ -2,7 +2,7 @@ # $OpenLDAP$ ## This work is part of OpenLDAP Software . ## -## Copyright 1998-2004 The OpenLDAP Foundation. +## Copyright 1998-2006 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without @@ -16,277 +16,94 @@ 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" + echo "rwm (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 \ - -e manageDSAit >> $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: +49 1234-567-890 -description: Just added in o=Beispiel,c=DE naming context - -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 to seeAlso 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 - -dn: ou=Referrals,$BASEDN -changetype: add -objectclass: referral -objectclass: extensibleObject -ou: Referrals -ref: ldap://localhost.localdomain/ou=Referrals,$BASEDN -description: Just added as ldap://localhost.localdomain/ou=Referrals,$BASEDN -dn: ou=Referrals,$BASEDN -changetype: modify -replace: ref -ref: ldap://ldap.example.com/ou=Referrals,$BASEDN -- -add: description -description: ...and modified as ldap://ldap.example.com/ou=Referrals,$BASEDN -- -EOMODS - -if test $RC != 0 ; then - echo "Modify 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 - -FILTER="(objectClass=referral)" -echo "searching filter=\"$FILTER\"" -echo " attrs=\"'*' ref\"" - -BASEDN="dc=example,dc=com" -echo " base=\"$BASEDN\"..." -$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" "*" ref \ - -e manageDSAit >> $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 " base=\"$BASEDN\"..." -$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" "*" ref \ - -e manageDSAit >> $SEARCHOUT 2>&1 -RC=$? -if test $RC != 0 ; then - echo "Search failed ($RC)!" - test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC -fi + # back-ldap + if test $BACKLDAP = ldapno ; then + echo "ldap backend not available, test skipped" + else + if test $THREADS = "threadsno" ; then + echo "Need threads support, test skipped" + else + if test "x$RELAYS" != "x" ; then + RELAYS="${RELAYS} " + fi + RELAYS="${RELAYS}ldap" + fi + fi -BASEDN="o=Esempio,c=IT" -echo " base=\"$BASEDN\"..." -$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" "*" ref \ - -e manageDSAit >> $SEARCHOUT 2>&1 -RC=$? -if test $RC != 0 ; then - echo "Search 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 $THREADS = "threadsno" ; then + echo "Need threads support, test skipped" + else + if test "x$RELAYS" != "x" ; then + RELAYS="${RELAYS} " + fi + RELAYS="${RELAYS}meta" + fi + fi +fi + +if test "x$RELAYS" = "x" ; then + echo "no relaying capable backend is available" + echo ">>>>> Test succeeded" + exit 0 fi -BASEDN="o=Example,c=US" -FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)" -echo "searching filter=\"$FILTER\"" -echo " attrs=\"seeAlso\"" -echo " base=\"$BASEDN\"..." -$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" "$FILTER" seeAlso \ - >> $SEARCHOUT 2>&1 -RC=$? -if test $RC != 0 ; then - echo "Search failed ($RC)!" - test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC -fi +echo "Testing virtual naming context mapping with $RELAYS backend(s)..." +echo "" -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 +first=1 +for RELAY in $RELAYS ; do + RUNIT=yes + if test $THREADS = "threadsno" ; then + case $RELAY in + ldap|meta) + echo "Need threads support, test skipped" + RUNIT=no + ;; + esac + fi -if test $? != 0 ; then - echo "comparison failed - relay search/modification didn't succeed" - test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit 1 -fi - -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 + if test $RUNIT = yes ; then + if test $first = 1 ; then + first=0 + else + echo ">>>>> waiting for things to exit" + test $KILLSERVERS != no && wait + echo "" + + rm -rf $TESTDIR + fi -BASEDN="o=Beispiel,c=DE" -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 + mkdir -p $TESTDIR $DBDIR1 + + . $SRCDIR/scripts/relay + fi +done -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 +echo ">>>>> Test succeeded" -test $KILLSERVERS != no && kill -HUP $KILLPIDS +test $KILLSERVERS != no && wait -echo ">>>>> Test succeeded" exit 0 -