]> git.sur5r.net Git - openldap/blobdiff - tests/scripts/test033-glue-syncrepl
Note ITS#6780
[openldap] / tests / scripts / test033-glue-syncrepl
index 5f2bfbc8f7b34bf7de7b9536ca84a1376a32b2c2..831b775c4c109ee5ab75aea31954ef769845dac7 100755 (executable)
@@ -1,7 +1,8 @@
 #! /bin/sh
+# $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
 ## top-level directory of the distribution or, alternatively, at
 ## <http://www.OpenLDAP.org/license.html>.
 
-if test "$BACKEND" != "bdb" && test "$BACKEND" != "hdb" ; then
-       echo "Test does not support $BACKEND"
-       exit 0
-fi
-
 echo "running defines.sh"
 . $SRCDIR/scripts/defines.sh
 
-mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C $DBDIR2A $DBDIR2B $DBDIR2C
+if test $SYNCPROV = syncprovno; then 
+       echo "Syncrepl provider overlay not available, test skipped"
+       exit 0
+fi 
+
+mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C $DBDIR2A $DBDIR2B
+
+echo "Running slapadd to build glued slapd databases..."
+. $CONFFILTER $BACKEND $MONITORDB < $GLUECONF > $CONF1
+$SLAPADD -d $LVL -f $CONF1 -l $LDIFORDERED > $SLAPADDLOG1 2>&1
+RC=$?
+if test $RC != 0 ; then
+       echo "slapadd failed ($RC)!"
+       exit $RC
+fi
+
+rm -rf $DBDIR1A/* $DBDIR1B/*
+cp -pr $DBDIR1C $DBDIR2C
 
 echo "Starting slapd 1 on TCP/IP port $PORT1..."
 . $CONFFILTER $BACKEND $MONITORDB < $GLUESYNCCONF1 > $CONF1
@@ -73,39 +86,9 @@ done
 SUBTREE1="ou=Information Technology Division,ou=People,dc=example,dc=com"
 SUBTREE2="ou=Groups,dc=example,dc=com"
 
-for M in 1 2 ; do
-       P=`expr 9010 + $M`
-       echo "Using ldapadd to populate the common root on port $P..."
-       $LDAPADD -D "cn=Manager $M,$BASEDN" -w $PASSWD -h $LOCALHOST -p $P \
-               -f $LDIFORDERED \
-               -c -e\!assert="(&(!(entryDN:dnSubtreeMatch:=${SUBTREE1}))(!(entryDN:dnSubtreeMatch:=${SUBTREE2})))" \
-               > /dev/null 2>&1
-       RC=$?
-       case $RC in
-       0)
-               echo "ldapadd should have failed ($RC)!"
-               test $KILLSERVERS != no && kill -HUP $KILLPIDS
-               exit -1
-               ;;
-       10|32|68)
-               # FIXME: we should rather get ASSERT, and ignore it;
-               # see <http://www.openldap.org/lists/openldap-software/200512/msg00250.html>
-               # for details.
-               # Fine by now if we get noSuchObject, alreadyExists
-               # or referrals
-               ;;
-       *)
-               echo "ldapadd failed ($RC)!"
-               test $KILLSERVERS != no && kill -HUP $KILLPIDS
-               exit $RC
-               ;;
-       esac
-done
-
 echo "Using ldapadd to populate subtree=\"${SUBTREE1}\" on port $PORT1..."
 $LDAPADD -D "cn=Manager 1,$BASEDN" -w $PASSWD -h $LOCALHOST -p $PORT1 \
-       -f $LDIFORDERED \
-       -c -e\!assert="(entryDN:dnSubtreeMatch:=${SUBTREE1})" \
+       -f $LDIFORDERED -c \
        > /dev/null 2>&1
 RC=$?
 case $RC in
@@ -114,12 +97,8 @@ case $RC in
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit -1
        ;;
-10|32|68)
-       # FIXME: we should rather get ASSERT, and ignore it;
-       # see <http://www.openldap.org/lists/openldap-software/200512/msg00250.html>
-       # for details.
-       # Fine by now if we get noSuchObject, alreadyExists
-       # or referrals
+10|68)
+       # Fine if we get alreadyExists or referrals
        ;;
 *)
        echo "ldapadd failed ($RC)!"
@@ -130,8 +109,7 @@ esac
 
 echo "Using ldapadd to populate subtree=\"${SUBTREE2}\" on port $PORT2..."
 $LDAPADD -D "cn=Manager 2,$BASEDN" -w $PASSWD -h $LOCALHOST -p $PORT2 \
-       -f $LDIFORDERED \
-       -c -e\!assert="(entryDN:dnSubtreeMatch:=${SUBTREE2})" \
+       -f $LDIFORDERED -c \
        > /dev/null 2>&1
 RC=$?
 case $RC in
@@ -140,12 +118,8 @@ case $RC in
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit -1
        ;;
-10|32|68)
-       # FIXME: we should rather get ASSERT, and ignore it;
-       # see <http://www.openldap.org/lists/openldap-software/200512/msg00250.html>
-       # for details.
-       # Fine by now if we get noSuchObject, alreadyExists
-       # or referrals
+10|68)
+       # Fine if we get alreadyExists or referrals
        ;;
 *)
        echo "ldapadd failed ($RC)!"
@@ -154,12 +128,11 @@ case $RC in
        ;;
 esac
 
-SLEEP=15
-echo "Waiting $SLEEP seconds for shadow subtrees to sync..."
-sleep $SLEEP
+echo "Waiting $SLEEP1 seconds for shadow subtrees to sync..."
+sleep $SLEEP1
 
 echo "Filtering original ldif used to create database..."
-$LDIFFILTER < $GLUESYNCOUT > $LDIFFLT
+$LDIFFILTER < $GLUESYNCOUT > $LDIFFLT
 
 for P in $PORT1 $PORT2 ; do
        echo "Using ldapsearch to read all the entries from port $P..."
@@ -174,7 +147,7 @@ for P in $PORT1 $PORT2 ; do
        fi
 
        echo "Filtering ldapsearch results..."
-       $LDIFFILTER < "${SEARCHOUT}.${P}" > $SEARCHFLT
+       $LDIFFILTER < "${SEARCHOUT}.${P}" > $SEARCHFLT
        echo "Comparing filter output..."
        $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
 
@@ -185,7 +158,31 @@ for P in $PORT1 $PORT2 ; do
        fi
 done
 
+echo "Testing ldapdelete propagation..."
+$LDAPDELETE -D "cn=Manager 1,$BASEDN" -w $PASSWD -H $URI1 "$BABSDN" \
+       > $TESTOUT 2>&1
+RC=$?
+if test $RC != 0 ; then
+       echo "ldapdelete failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit $RC
+fi
+
+# This usually propagates immediately
+sleep 1
+
+$LDAPSEARCH -H $URI2 -b "$BABSDN" > $TESTOUT 2>&1
+RC=$?
+if test $RC = 0 && test $BACKEND != null ; then
+       echo "ldapsearch should have failed ($RC)!"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
+       exit -1
+fi
+
 test $KILLSERVERS != no && kill -HUP $KILLPIDS
 
 echo ">>>>> Test succeeded"
+
+test $KILLSERVERS != no && wait
+
 exit 0