X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest033-glue-syncrepl;h=253510b59139b1ba09a9d69bdd26975e93165e47;hb=fc1396fa2e94ee2e752fd7c3ea5bb22f6592398a;hp=1ffb611d6bf4c894d2d90e6de3f5d01f0d505024;hpb=a6af1437984e646365375433f656eef9ef9a1d0f;p=openldap diff --git a/tests/scripts/test033-glue-syncrepl b/tests/scripts/test033-glue-syncrepl index 1ffb611d6b..253510b591 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-2012 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without @@ -15,7 +16,12 @@ echo "running defines.sh" . $SRCDIR/scripts/defines.sh -mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C +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 @@ -26,8 +32,7 @@ if test $RC != 0 ; then exit $RC fi -mv $DBDIR1B $DBDIR2B -mkdir $DBDIR2A $DBDIR1B +rm -rf $DBDIR1A/* $DBDIR1B/* cp -pr $DBDIR1C $DBDIR2C echo "Starting slapd 1 on TCP/IP port $PORT1..." @@ -40,6 +45,8 @@ if test $WAIT != 0 ; then fi KILLPIDS="$PID" +sleep 1 + echo "Using ldapsearch to check that slapd 1 is running..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ @@ -62,6 +69,8 @@ if test $WAIT != 0 ; then fi KILLPIDS="$KILLPIDS $PID" +sleep 1 + echo "Using ldapsearch to check that slapd 2 is running..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \ @@ -74,13 +83,61 @@ for i in 0 1 2 3 4 5; do sleep 5 done -echo "Waiting 15 seconds for shadow subtrees to sync..." -sleep 15 +SUBTREE1="ou=Information Technology Division,ou=People,dc=example,dc=com" +SUBTREE2="ou=Groups,dc=example,dc=com" + +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 \ + > /dev/null 2>&1 +RC=$? +case $RC in +0) + echo "ldapadd should have failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit -1 + ;; +10|68) + # Fine if we get alreadyExists or referrals + ;; +*) + echo "ldapadd failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC + ;; +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 \ + > /dev/null 2>&1 +RC=$? +case $RC in +0) + echo "ldapadd should have failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit -1 + ;; +10|68) + # Fine if we get alreadyExists or referrals + ;; +*) + echo "ldapadd failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC + ;; +esac + +echo "Waiting $SLEEP1 seconds for shadow subtrees to sync..." +sleep $SLEEP1 + +echo "Filtering original ldif used to create database..." +$LDIFFILTER < $GLUESYNCOUT > $LDIFFLT for P in $PORT1 $PORT2 ; do echo "Using ldapsearch to read all the entries from port $P..." $LDAPSEARCH -b "$BASEDN" -h $LOCALHOST -p $P \ - -S "" '(objectclass=*)' > $SEARCHOUT 2>&1 + -S "" '(objectclass=*)' > "${SEARCHOUT}.${P}" 2>&1 RC=$? if test $RC != 0 ; then @@ -90,9 +147,7 @@ for P in $PORT1 $PORT2 ; do fi echo "Filtering ldapsearch results..." - . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT - echo "Filtering original ldif used to create database..." - . $LDIFFILTER < $GLUESYNCOUT > $LDIFFLT + $LDIFFILTER < "${SEARCHOUT}.${P}" > $SEARCHFLT echo "Comparing filter output..." $CMP $SEARCHFLT $LDIFFLT > $CMPOUT @@ -103,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