X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest033-glue-syncrepl;h=831b775c4c109ee5ab75aea31954ef769845dac7;hb=58c0bf5ad12415ac4fde91d4ae39ac883eb28106;hp=5f2bfbc8f7b34bf7de7b9536ca84a1376a32b2c2;hpb=d71bef1a470c9fc4ee772bc10e2855948adb4fac;p=openldap diff --git a/tests/scripts/test033-glue-syncrepl b/tests/scripts/test033-glue-syncrepl index 5f2bfbc8f7..831b775c4c 100755 --- a/tests/scripts/test033-glue-syncrepl +++ b/tests/scripts/test033-glue-syncrepl @@ -1,7 +1,8 @@ #! /bin/sh +# $OpenLDAP$ */ ## This work is part of OpenLDAP Software . ## -## 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 @@ -12,15 +13,27 @@ ## top-level directory of the distribution or, alternatively, at ## . -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 - # 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 - # 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 - # 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