]> git.sur5r.net Git - openldap/blobdiff - tests/scripts/test032-chain
Merge remote branch 'origin/mdb.master'
[openldap] / tests / scripts / test032-chain
index 5b6a1db01b16fb8323bc5f838abc015b82686862..88ac726f376e80e8552bcb22d9dca07fc6b49ab7 100755 (executable)
@@ -2,7 +2,7 @@
 # $OpenLDAP$
 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
 ##
-## Copyright 1998-2005 The OpenLDAP Foundation.
+## Copyright 1998-2011 The OpenLDAP Foundation.
 ## All rights reserved.
 ##
 ## Redistribution and use in source and binary forms, with or without
@@ -21,6 +21,8 @@ if test $BACKLDAP = "ldapno" ; then
        exit 0
 fi 
 
+rm -rf $TESTDIR
+
 mkdir -p $TESTDIR $DBDIR1 $DBDIR2
 
 echo "Running slapadd to build slapd database..."
@@ -50,6 +52,7 @@ if test $WAIT != 0 ; then
     echo PID $PID1
     read foo
 fi
+KILLPIDS="$PID1"
 
 echo "Starting second slapd on TCP/IP port $PORT2..."
 . $CONFFILTER $BACKEND $MONITORDB < $CHAINCONF2 > $CONF2
@@ -60,7 +63,7 @@ if test $WAIT != 0 ; then
     read foo
 fi
 
-KILLPIDS="$PID1 $PID2"
+KILLPIDS="$KILLPIDS $PID2"
 
 sleep 1
 
@@ -76,6 +79,12 @@ for i in 0 1 2 3 4 5; do
        sleep 5
 done
 
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
 echo "Using ldapsearch to check that second slapd is running..."
 for i in 0 1 2 3 4 5; do
        $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \
@@ -88,6 +97,12 @@ for i in 0 1 2 3 4 5; do
        sleep 5
 done
 
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
 for P in $PORT1 $PORT2 ; do
        echo "Testing ldapsearch as anonymous for \"$BASEDN\" on port $P..."
        $LDAPSEARCH -h $LOCALHOST -p $P -b "$BASEDN" -S "" \
@@ -101,9 +116,9 @@ for P in $PORT1 $PORT2 ; do
        fi
 
        echo "Filtering ldapsearch results..."
-       $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+       $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
        echo "Filtering original ldif used to create database..."
-       $LDIFFILTER < $CHAINOUT > $LDIFFLT
+       $LDIFFILTER < $CHAINOUT > $LDIFFLT
        echo "Comparing filter output..."
        $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
        
@@ -113,7 +128,7 @@ for P in $PORT1 $PORT2 ; do
                exit 1
        fi
 
-       echo "Reading the referral entry "ou=Other,$BASEDN" as anonymous on port $P..."
+       echo "Reading the referral entry \"ou=Other,$BASEDN\" as anonymous on port $P..."
        $LDAPSEARCH -h $LOCALHOST -p $P -b "ou=Other,$BASEDN" -S "" \
                 > $SEARCHOUT 2>&1
 
@@ -125,9 +140,9 @@ for P in $PORT1 $PORT2 ; do
        fi
 
        echo "Filtering ldapsearch results..."
-       $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+       $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
        echo "Filtering original ldif used to create database..."
-       $LDIFFILTER < $CHAINREFOUT > $LDIFFLT
+       $LDIFFILTER < $CHAINREFOUT > $LDIFFLT
        echo "Comparing filter output..."
        $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
                
@@ -143,10 +158,10 @@ for P in $PORT1 $PORT2 ; do
                 > $TESTOUT 2>&1
 
        RC=$?
-       if test $RC != 6 ; then
+       if test $RC != 6 && test $RC,$BACKEND != 5,null ; then
                echo "ldapcompare failed ($RC)!"
                test $KILLSERVERS != no && kill -HUP $KILLPIDS
-               exit $RC
+               exit 1
        fi
 
        DN="ou=Other,$BASEDN"
@@ -155,10 +170,10 @@ for P in $PORT1 $PORT2 ; do
                 > $TESTOUT 2>&1
 
        RC=$?
-       if test $RC != 6 ; then
+       if test $RC != 6 && test $RC,$BACKEND != 5,null ; then
                echo "ldapcompare failed ($RC)!"
                test $KILLSERVERS != no && kill -HUP $KILLPIDS
-               exit $RC
+               exit 1
        fi
 done
 
@@ -254,9 +269,9 @@ for P in $PORT1 $PORT2 ; do
        fi
 
        echo "Filtering ldapsearch results..."
-       $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+       $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
        echo "Filtering original ldif used to create database..."
-       $LDIFFILTER < $CHAINMODOUT > $LDIFFLT
+       $LDIFFILTER < $CHAINMODOUT > $LDIFFLT
        echo "Comparing filter output..."
        $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
        
@@ -289,8 +304,35 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
+# ITS#57??
+$LDAPADD -h $LOCALHOST -p $PORT1 \
+       -D "$MANAGERDN" -w secret \
+       >> $TESTOUT 2>&1 \
+       << EOMODS
+dn: ou=Can't Contact,dc=example,dc=com
+changetype: add
+objectclass: referral
+objectclass: extensibleobject
+ou: Can't Contact
+# invalid URI to test broken connectivity handling (search only)
+ref: ${URI3}ou=Can't%20Contact,dc=example,dc=com
+EOMODS
+
+echo "Reading the referral entry \"ou=Can't Contact,$BASEDN\" as anonymous on port $PORT1..."
+$LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" -S "" "(cn=Can't Contact)" \
+        > $SEARCHOUT 2>&1
+
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
 test $KILLSERVERS != no && kill -HUP $KILLPIDS
 
 echo ">>>>> Test succeeded"
-exit 0
 
+test $KILLSERVERS != no && wait
+
+exit 0