X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest030-relay;h=72594760d832b673cf7180dc1ff25ab9bf937a90;hb=a5765f1785653cabe18419e710c5b2bf7723b892;hp=60f0262dc00c8eb2d43fb0d8ccee8c8f6fb17aac;hpb=97ce6c3044922245ab7719f20fdcff9725a96646;p=openldap diff --git a/tests/scripts/test030-relay b/tests/scripts/test030-relay index 60f0262dc0..72594760d8 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-2012 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without @@ -16,299 +16,103 @@ 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\"..." -echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT -$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\"..." -echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT -$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\"..." -echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT -$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\"..." -echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT -$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 - -RC=$? -if test $RC != 0 ; then - echo "Modify failed ($RC)!" - test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC -fi - -echo "searching base=\"$BASEDN\"..." -echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT -$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\"..." -echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT -$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\"..." -echo "# base=\"$BASEDN\"..." >> $SEARCHOUT -$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=Example,c=US" -echo " base=\"$BASEDN\"..." -echo "# base=\"$BASEDN\"..." >> $SEARCHOUT -$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=Esempio,c=IT" -echo " base=\"$BASEDN\"..." -echo "# base=\"$BASEDN\"..." >> $SEARCHOUT -$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 +echo "Testing virtual naming context mapping with $RELAYS backend(s)..." +echo "" -BASEDN="o=Example,c=US" -FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)" -echo "searching filter=\"$FILTER\"" -echo " attrs=\"seeAlso\"" -echo " base=\"$BASEDN\"..." -echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT -echo "# attrs=\"seeAlso\"" >> $SEARCHOUT -echo "# base=\"$BASEDN\"..." >> $SEARCHOUT -$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 +tmpfile=savelog.log +if test -f $tmpfile ; then + rm -f $tmpfile 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 +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 - -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 + if test $RUNIT = yes ; then + if test $first = 1 ; then + first=0 + else + echo ">>>>> waiting for things to exit" + test $KILLSERVERS != no && wait + echo "" + + mv -f $LOG1 $tmpfile + rm -rf $TESTDIR + fi + + mkdir -p $TESTDIR $DBDIR1 + + if test -f $tmpfile ; then + mv $tmpfile $LOG1 + fi + + . $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 -