]> git.sur5r.net Git - openldap/commitdiff
Use $MMR env var to choose up to 9 servers for testing
authorHoward Chu <hyc@openldap.org>
Sat, 7 Mar 2009 13:45:59 +0000 (13:45 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 7 Mar 2009 13:45:59 +0000 (13:45 +0000)
tests/scripts/test050-syncrepl-multimaster

index ad508ab93d48918d475277a626ea1c40bdb5b851..84cc576b94ab1f25ef688f3f3b3ff45e996fe42a 100755 (executable)
@@ -21,20 +21,16 @@ if test $SYNCPROV = syncprovno; then
        exit 0
 fi 
 
-PRODIR=$TESTDIR/pro
-CONDIR=$TESTDIR/con1
-CONDIR2=$TESTDIR/con2
-CONDIR3=$TESTDIR/con3
-DBPRO=$PRODIR/db
-DBCON=$CONDIR/db
-DBCON2=$CONDIR2/db
-DBCON3=$CONDIR3/db
-CFPRO=$PRODIR/slapd.d
-CFCON=$CONDIR/slapd.d
-CFCON2=$CONDIR2/slapd.d
-CFCON3=$CONDIR3/slapd.d
-
-mkdir -p $TESTDIR $PRODIR $CONDIR $CONDIR2 $CONDIR3 $DBPRO $DBCON $DBCON2 $DBCON3 $CFPRO $CFCON $CFCON2 $CFCON3
+MMR=${MMR-4}
+
+if [ $MMR -gt 9 ]; then
+MMR=9
+fi
+
+XDIR=$TESTDIR/srv
+TMP=$TESTDIR/tmp
+
+mkdir -p $TESTDIR
 
 $SLAPPASSWD -g -n >$CONFIGPWF
 
@@ -56,10 +52,7 @@ esac
 
 #
 # Test replication of dynamic config:
-# - start producer
-# - start consumer1
-# - start consumer2
-# - start consumer3
+# - start servers
 # - configure over ldap
 # - populate over ldap
 # - configure syncrepl over ldap
@@ -67,35 +60,19 @@ esac
 #
 
 echo "Initializing server configurations..."
-$SLAPADD -F $CFCON2 -n 0 <<EOF
-dn: cn=config
-objectClass: olcGlobal
-cn: config
-olcServerID: 3
+n=1
+while [ $n -le $MMR ]; do
 
-dn: olcDatabase={0}config,cn=config
-objectClass: olcDatabaseConfig
-olcDatabase: {0}config
-olcRootPW:< file://$CONFIGPWF
-EOF
+DBDIR=${XDIR}$n/db
+CFDIR=${XDIR}$n/slapd.d
 
-$SLAPADD -F $CFCON3 -n 0 <<EOF
-dn: cn=config
-objectClass: olcGlobal
-cn: config
-olcServerID: 4
-
-dn: olcDatabase={0}config,cn=config
-objectClass: olcDatabaseConfig
-olcDatabase: {0}config
-olcRootPW:< file://$CONFIGPWF
-EOF
+mkdir -p ${XDIR}$n $DBDIR $CFDIR
 
-$SLAPADD -F $CFCON -n 0 <<EOF
+$SLAPADD -F $CFDIR -n 0 <<EOF
 dn: cn=config
 objectClass: olcGlobal
 cn: config
-olcServerID: 2
+olcServerID: $n
 
 dn: olcDatabase={0}config,cn=config
 objectClass: olcDatabaseConfig
@@ -103,20 +80,11 @@ olcDatabase: {0}config
 olcRootPW:< file://$CONFIGPWF
 EOF
 
-$SLAPADD -F $CFPRO -n 0 <<EOF
-dn: cn=config
-objectClass: olcGlobal
-cn: config
-olcServerID: 1
-
-dn: olcDatabase={0}config,cn=config
-objectClass: olcDatabaseConfig
-olcDatabase: {0}config
-olcRootPW:< file://$CONFIGPWF
-EOF
+n=`expr $n + 1`
+done
 
-echo "Starting producer slapd on TCP/IP port $PORT1..."
-cd $PRODIR
+echo "Starting server 1 on TCP/IP port $PORT1..."
+cd ${XDIR}1
 $SLAPD -F slapd.d -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
@@ -128,7 +96,7 @@ cd $TESTWD
 
 sleep 1
 
-echo "Using ldapsearch to check that producer slapd is running..."
+echo "Using ldapsearch to check that server 1 is running..."
 for i in 0 1 2 3 4 5; do
        $LDAPSEARCH -s base -b "" -H $URI1 \
                'objectclass=*' > /dev/null 2>&1
@@ -146,21 +114,18 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
-echo "Inserting syncprov overlay on producer..."
+echo "Inserting syncprov overlay on server 1..."
+echo "" > $TMP
 if [ "$SYNCPROV" = syncprovmod ]; then
-       $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1
+cat <<EOF >> $TMP
 dn: cn=module,cn=config
+changetype: add
 objectClass: olcModuleList
 cn: module
 olcModulePath: ../../../servers/slapd/overlays
 olcModuleLoad: syncprov.la
+
 EOF
-       RC=$?
-       if test $RC != 0 ; then
-               echo "ldapadd failed for moduleLoad ($RC)!"
-               test $KILLSERVERS != no && kill -HUP $KILLPIDS
-               exit $RC
-       fi
 fi
 #
 # Note that we configure a timeout here; it's possible for both
@@ -170,14 +135,18 @@ fi
 # attempt and allow the modifies to complete.
 #
 read CONFIGPW < $CONFIGPWF
-$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >> $TESTOUT 2>&1
-dn: cn=config
-changetype: modify
-replace: olcServerID
-olcServerID: 1 $URI1
-olcServerID: 2 $URI2
-olcServerID: 3 $URI3
-olcServerID: 4 $URI4
+echo "dn: cn=config" >> $TMP
+echo "changetype: modify" >> $TMP
+echo "replace: olcServerID" >> $TMP
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
+echo "olcServerID: $n $URI" >> $TMP
+n=`expr $n + 1`
+done
+
+cat <<EOF >> $TMP
 
 dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
 changetype: add
@@ -188,22 +157,21 @@ olcOverlay: syncprov
 dn: olcDatabase={0}config,cn=config
 changetype: modify
 add: olcSyncRepl
-olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=004 provider=$URI4 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
--
-add: olcMirrorMode
-olcMirrorMode: TRUE
 EOF
+
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
+echo "olcSyncRepl: rid=00$n provider=$URI binddn=\"cn=config\" bindmethod=simple" >> $TMP
+echo "  credentials=$CONFIGPW searchbase=\"cn=config\" type=refreshAndPersist" >> $TMP
+echo "  retry=\"3 5 300 5\" timeout=3" >> $TMP
+n=`expr $n + 1`
+done
+echo "-" >> $TMP
+echo "add: olcMirrorMode" >> $TMP
+echo "olcMirrorMode: TRUE" >> $TMP
+$LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF < $TMP >> $TESTOUT 2>&1
 RC=$?
 if test $RC != 0 ; then
        echo "ldapmodify failed for syncrepl config ($RC)!"
@@ -211,9 +179,14 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
-echo "Starting consumer1 slapd on TCP/IP port $PORT2..."
-cd $CONDIR
-$SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
+n=2
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
+LOG=$TESTDIR/slapd.$n.log
+echo "Starting server $n on TCP/IP port $PORT..."
+cd ${XDIR}$n
+$SLAPD -F ./slapd.d -h $URI -d $LVL $TIMING > $LOG 2>&1 &
 SLAVEPID=$!
 if test $WAIT != 0 ; then
     echo SLAVEPID $SLAVEPID
@@ -224,9 +197,9 @@ cd $TESTWD
 
 sleep 1
 
-echo "Using ldapsearch to check that consumer1 slapd is running..."
+echo "Using ldapsearch to check that server $n is running..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI2 \
+       $LDAPSEARCH -s base -b "" -H $URI \
                'objectclass=*' > /dev/null 2>&1
        RC=$?
        if test $RC = 0 ; then
@@ -242,135 +215,31 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
-echo "Configuring syncrepl on consumer1..."
-$LDAPMODIFY -D cn=config -H $URI2 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
+echo "Configuring syncrepl on server $n..."
+cat <<EOF > $TMP
 dn: olcDatabase={0}config,cn=config
 changetype: modify
 add: olcSyncRepl
-olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=004 provider=$URI4 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
--
-add: olcMirrorMode
-olcMirrorMode: TRUE
 EOF
-
-echo "Starting consumer2 slapd on TCP/IP port $PORT3..."
-cd $CONDIR2
-$SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING > $LOG3 2>&1 &
-SLAVE2PID=$!
-if test $WAIT != 0 ; then
-    echo SLAVE2PID $SLAVE2PID
-    read foo
-fi
-KILLPIDS="$KILLPIDS $SLAVE2PID"
-cd $TESTWD
-
-sleep 1
-
-echo "Using ldapsearch to check that consumer2 slapd is running..."
-for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI3 \
-               'objectclass=*' > /dev/null 2>&1
-       RC=$?
-       if test $RC = 0 ; then
-               break
-       fi
-       echo "Waiting 5 seconds for slapd to start..."
-       sleep 5
+j=1
+while [ $j -le $MMR ]; do
+P2=`expr $BASEPORT + $j`
+U2="ldap://${LOCALHOST}:$P2/"
+echo "olcSyncRepl: rid=00$j provider=$U2 binddn=\"cn=config\" bindmethod=simple" >> $TMP
+echo "  credentials=$CONFIGPW searchbase=\"cn=config\" type=refreshAndPersist" >> $TMP
+echo "  retry=\"3 5 300 5\" timeout=3" >> $TMP
+j=`expr $j + 1`
 done
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Configuring syncrepl on consumer2..."
-$LDAPMODIFY -D cn=config -H $URI3 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
-dn: olcDatabase={0}config,cn=config
-changetype: modify
-add: olcSyncRepl
-olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=004 provider=$URI4 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
+cat <<EOF >> $TMP
 -
 add: olcMirrorMode
 olcMirrorMode: TRUE
 EOF
-
-echo "Starting consumer3 slapd on TCP/IP port $PORT4..."
-cd $CONDIR3
-$SLAPD -F ./slapd.d -h $URI4 -d $LVL $TIMING > $LOG4 2>&1 &
-SLAVE3PID=$!
-if test $WAIT != 0 ; then
-    echo SLAVE3PID $SLAVE3PID
-    read foo
-fi
-KILLPIDS="$KILLPIDS $SLAVE3PID"
-cd $TESTWD
-
-sleep 1
-
-echo "Using ldapsearch to check that consumer3 slapd is running..."
-for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI4 \
-               'objectclass=*' > /dev/null 2>&1
-       RC=$?
-       if test $RC = 0 ; then
-               break
-       fi
-       echo "Waiting 5 seconds for slapd to start..."
-       sleep 5
+$LDAPMODIFY -D cn=config -H $URI -y $CONFIGPWF < $TMP >>$TESTOUT 2>&1
+n=`expr $n + 1`
 done
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Configuring syncrepl on consumer3..."
-$LDAPMODIFY -D cn=config -H $URI4 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
-dn: olcDatabase={0}config,cn=config
-changetype: modify
-add: olcSyncRepl
-olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=004 provider=$URI4 binddn="cn=config" bindmethod=simple
-  credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
-  retry="3 5 300 5" timeout=3
--
-add: olcMirrorMode
-olcMirrorMode: TRUE
-EOF
-
-echo "Adding schema and databases on producer..."
+echo "Adding schema and databases on server 1..."
 $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
 include: file://$ABS_SCHEMADIR/core.ldif
 
@@ -389,23 +258,19 @@ if test $RC != 0 ; then
        exit $RC
 fi
 
+echo "" > $TMP
 if [ "$BACKENDTYPE" = mod ]; then
-       $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
+cat <<EOF >> $TMP
 dn: cn=module,cn=config
 objectClass: olcModuleList
 cn: module
 olcModulePath: ../../../servers/slapd/back-$BACKEND
 olcModuleLoad: back_$BACKEND.la
+
 EOF
-       RC=$?
-       if test $RC != 0 ; then
-               echo "ldapadd failed for backend config ($RC)!"
-               test $KILLSERVERS != no && kill -HUP $KILLPIDS
-               exit $RC
-       fi
 fi
 
-$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >>$TESTOUT 2>&1
+cat <<EOF >> $TMP
 dn: olcDatabase={1}$BACKEND,cn=config
 objectClass: olcDatabaseConfig
 objectClass: olc${BACKEND}Config
@@ -414,26 +279,28 @@ olcSuffix: $BASEDN
 olcDbDirectory: ./db
 olcRootDN: $MANAGERDN
 olcRootPW: $PASSWD
-olcSyncRepl: rid=005 provider=$URI1 binddn="$MANAGERDN" bindmethod=simple
-  credentials=$PASSWD searchbase="$BASEDN" $SYNCTYPE
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=006 provider=$URI2 binddn="$MANAGERDN" bindmethod=simple
-  credentials=$PASSWD searchbase="$BASEDN" $SYNCTYPE
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=007 provider=$URI3 binddn="$MANAGERDN" bindmethod=simple
-  credentials=$PASSWD searchbase="$BASEDN" $SYNCTYPE
-  retry="3 5 300 5" timeout=3
-olcSyncRepl: rid=008 provider=$URI4 binddn="$MANAGERDN" bindmethod=simple
-  credentials=$PASSWD searchbase="$BASEDN" $SYNCTYPE
-  retry="3 5 300 5" timeout=3
+EOF
+
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
+
+echo "olcSyncRepl: rid=01$n provider=$URI binddn=\"$MANAGERDN\" bindmethod=simple" >> $TMP
+echo "  credentials=$PASSWD searchbase=\"$BASEDN\" $SYNCTYPE" >> $TMP
+echo "  retry=\"3 5 300 5\" timeout=3" >> $TMP
+n=`expr $n + 1`
+done
+
+cat <<EOF >> $TMP
 olcMirrorMode: TRUE
 
 dn: olcOverlay=syncprov,olcDatabase={1}${BACKEND},cn=config
-changetype: add
 objectClass: olcOverlayConfig
 objectClass: olcSyncProvConfig
 olcOverlay: syncprov
 EOF
+$LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF < $TMP >>$TESTOUT 2>&1
 RC=$?
 if test $RC != 0 ; then
        echo "ldapadd failed for database config ($RC)!"
@@ -459,12 +326,12 @@ EOF
        ;;
 esac
 
-echo "Using ldapadd to populate producer..."
+echo "Using ldapadd to populate server 1..."
 $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFORDERED \
        >> $TESTOUT 2>&1
 RC=$?
 if test $RC != 0 ; then
-       echo "ldapadd failed for producer database ($RC)!"
+       echo "ldapadd failed for server 1 database ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
@@ -472,169 +339,78 @@ fi
 echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep $SLEEP1
 
-echo "Using ldapsearch to read config from the producer..."
-$LDAPSEARCH -b cn=config -D cn=config -H $URI1 -y $CONFIGPWF  \
-       'objectclass=*' > $MASTEROUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at producer ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read config from consumer1..."
-$LDAPSEARCH -b cn=config -D cn=config -H $URI2 -y $CONFIGPWF \
-       'objectclass=*' > $SLAVEOUT 2>&1
-RC=$?
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer1 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read config from consumer2..."
-$LDAPSEARCH -b cn=config -D cn=config -H $URI3 -y $CONFIGPWF \
-       'objectclass=*' > $SLAVE2OUT 2>&1
+echo "Using ldapsearch to read config from server $n..."
+$LDAPSEARCH -b cn=config -D cn=config -H $URI -y $CONFIGPWF  \
+       'objectclass=*' > $TESTDIR/server$n.out 2>&1
 RC=$?
 
 if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer2 ($RC)!"
+       echo "ldapsearch failed at server $n ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
 
-echo "Using ldapsearch to read config from consumer3..."
-$LDAPSEARCH -b cn=config -D cn=config -H $URI4 -y $CONFIGPWF \
-       'objectclass=*' > $SERVER4OUT 2>&1
-RC=$?
+. $LDIFFILTER < $TESTDIR/server$n.out > $TESTDIR/server$n.flt
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer3 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Filtering producer results..."
-. $LDIFFILTER < $MASTEROUT > $MASTERFLT
-echo "Filtering consumer1 results..."
-. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
-echo "Filtering consumer2 results..."
-. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
-echo "Filtering consumer3 results..."
-. $LDIFFILTER < $SERVER4OUT > $SERVER4FLT
-
-echo "Comparing retrieved configs from producer and consumer1..."
-$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer1 configs differ"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit 1
-fi
-
-echo "Comparing retrieved configs from producer and consumer2..."
-$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer2 configs differ"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit 1
-fi
+n=`expr $n + 1`
+done
 
-echo "Comparing retrieved configs from producer and consumer3..."
-$CMP $MASTERFLT $SERVER4FLT > $CMPOUT
+n=2
+while [ $n -le $MMR ]; do
+echo "Comparing retrieved configs from server 1 and server $n..."
+$CMP $MASTERFLT $TESTDIR/server$n.flt > $CMPOUT
 
 if test $? != 0 ; then
-       echo "test failed - producer and consumer3 configs differ"
+       echo "test failed - server 1 and server $n configs differ"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit 1
 fi
+n=`expr $n + 1`
+done
 
-echo "Using ldapsearch to read all the entries from the producer..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD  \
-       'objectclass=*' > $MASTEROUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at producer ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer1..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD  \
-       'objectclass=*' > $SLAVEOUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer1 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer2..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD  \
-       'objectclass=*' > $SLAVE2OUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer2 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
 
-echo "Using ldapsearch to read all the entries from consumer3..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI4 -w $PASSWD  \
-       'objectclass=*' > $SERVER4OUT 2>&1
+echo "Using ldapsearch to read all the entries from server $n..."
+$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI -w $PASSWD  \
+       'objectclass=*' > $TESTDIR/server$n.out 2>&1
 RC=$?
 
 if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer3 ($RC)!"
+       echo "ldapsearch failed at server $n ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
+. $LDIFFILTER < $TESTDIR/server$n.out > $TESTDIR/server$n.flt
+n=`expr $n + 1`
+done
 
-echo "Filtering producer results..."
-. $LDIFFILTER < $MASTEROUT > $MASTERFLT
-echo "Filtering consumer1 results..."
-. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
-echo "Filtering consumer2 results..."
-. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
-echo "Filtering consumer3 results..."
-. $LDIFFILTER < $SERVER4OUT > $SERVER4FLT
-
-echo "Comparing retrieved entries from producer and consumer1..."
-$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer1 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer2..."
-$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer2 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer3..."
-$CMP $MASTERFLT $SERVER4FLT > $CMPOUT
+n=2
+while [ $n -le $MMR ]; do
+echo "Comparing retrieved entries from server 1 and server $n..."
+$CMP $MASTERFLT $TESTDIR/server$n.flt > $CMPOUT
 
 if test $? != 0 ; then
-       echo "test failed - producer and consumer3 databases differ"
+       echo "test failed - server 1 and server $n databases differ"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit 1
 fi
+n=`expr $n + 1`
+done
 
-echo "Using ldapadd to populate consumer1..."
+echo "Using ldapadd to populate server 2..."
 $LDAPADD -D "$MANAGERDN" -H $URI2 -w $PASSWD -f $LDIFADD1 \
        >> $TESTOUT 2>&1
 RC=$?
 if test $RC != 0 ; then
-       echo "ldapadd failed for consumer1 database ($RC)!"
+       echo "ldapadd failed for server 2 database ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
@@ -642,94 +418,49 @@ fi
 echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep $SLEEP1
 
-echo "Using ldapsearch to read all the entries from the producer..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD  \
-       'objectclass=*' > $MASTEROUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at producer ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer1..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD  \
-       'objectclass=*' > $SLAVEOUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer1 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer2..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD  \
-       'objectclass=*' > $SLAVE2OUT 2>&1
-RC=$?
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer2 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer3..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI4 -w $PASSWD  \
-       'objectclass=*' > $SERVER4OUT 2>&1
+echo "Using ldapsearch to read all the entries from server $n..."
+$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI -w $PASSWD  \
+       'objectclass=*' > $TESTDIR/server$n.out 2>&1
 RC=$?
 
 if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer3 ($RC)!"
+       echo "ldapsearch failed at server $n ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
+. $LDIFFILTER < $TESTDIR/server$n.out > $TESTDIR/server$n.flt
+n=`expr $n + 1`
+done
 
-echo "Filtering producer results..."
-. $LDIFFILTER < $MASTEROUT > $MASTERFLT
-echo "Filtering consumer1 results..."
-. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
-echo "Filtering consumer2 results..."
-. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
-echo "Filtering consumer3 results..."
-. $LDIFFILTER < $SERVER4OUT > $SERVER4FLT
-
-echo "Comparing retrieved entries from producer and consumer1..."
-$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer1 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer2..."
-$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer2 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer3..."
-$CMP $MASTERFLT $SERVER4FLT > $CMPOUT
+n=2
+while [ $n -le $MMR ]; do
+echo "Comparing retrieved entries from server 1 and server $n..."
+$CMP $MASTERFLT $TESTDIR/server$n.flt > $CMPOUT
 
 if test $? != 0 ; then
-       echo "test failed - producer and consumer3 databases differ"
+       echo "test failed - server 1 and server $n databases differ"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit 1
 fi
+n=`expr $n + 1`
+done
 
-echo "Using ldapadd to populate consumer2..."
+echo "Using ldapadd to populate server 3..."
 $LDAPADD -D "$MANAGERDN" -H $URI3 -w $PASSWD \
        << EOMODS >> $TESTOUT 2>&1
-dn: cn=Consumer 2 Test,dc=example,dc=com
+dn: cn=Server 3 Test,dc=example,dc=com
 changetype: add
 objectClass: device
-cn: Consumer 2 Test
+cn: Server 3 Test
 EOMODS
 RC=$?
 if test $RC != 0 ; then
-       echo "ldapadd failed for consumer2 database ($RC)!"
+       echo "ldapadd failed for server 3 database ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
@@ -737,107 +468,62 @@ fi
 echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep $SLEEP1
 
-echo "Using ldapsearch to read all the entries from the producer..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD  \
-       'objectclass=*' > $MASTEROUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at producer ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer1..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD  \
-       'objectclass=*' > $SLAVEOUT 2>&1
-RC=$?
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer1 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer2..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD  \
-       'objectclass=*' > $SLAVE2OUT 2>&1
+echo "Using ldapsearch to read all the entries from server $n..."
+$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI -w $PASSWD  \
+       'objectclass=*' > $TESTDIR/server$n.out 2>&1
 RC=$?
 
 if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer2 ($RC)!"
+       echo "ldapsearch failed at server $n ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
+. $LDIFFILTER < $TESTDIR/server$n.out > $TESTDIR/server$n.flt
+n=`expr $n + 1`
+done
 
-echo "Using ldapsearch to read all the entries from consumer3..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI4 -w $PASSWD  \
-       'objectclass=*' > $SERVER4OUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer3 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Filtering producer results..."
-. $LDIFFILTER < $MASTEROUT > $MASTERFLT
-echo "Filtering consumer1 results..."
-. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
-echo "Filtering consumer2 results..."
-. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
-echo "Filtering consumer3 results..."
-. $LDIFFILTER < $SERVER4OUT > $SERVER4FLT
-
-echo "Comparing retrieved entries from producer and consumer1..."
-$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer1 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer2..."
-$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer2 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer3..."
-$CMP $MASTERFLT $SERVER4FLT > $CMPOUT
+n=2
+while [ $n -le $MMR ]; do
+echo "Comparing retrieved entries from server 1 and server $n..."
+$CMP $MASTERFLT $TESTDIR/server$n.flt > $CMPOUT
 
 if test $? != 0 ; then
-       echo "test failed - producer and consumer3 databases differ"
+       echo "test failed - server 1 and server $n databases differ"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit 1
 fi
+n=`expr $n + 1`
+done
 
-echo "Using ldapmodify to add to the producer entries that will be deleted..."
+echo "Using ldapmodify to add to server 1 entries that will be deleted..."
 $LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD \
        >> $TESTOUT 2>&1 << EOADDS
-dn: cn=To be deleted by producer,dc=example,dc=com
+dn: cn=To be deleted by server 1,dc=example,dc=com
 changetype: add
 objectClass: device
 # no distinguished values, will be added by DSA
 
-dn: cn=To be deleted by consumer1,dc=example,dc=com
+dn: cn=To be deleted by server 2,dc=example,dc=com
 changetype: add
 objectClass: device
 # no distinguished values, will be added by DSA
 
-dn: cn=To be deleted by consumer2,dc=example,dc=com
+dn: cn=To be deleted by server 3,dc=example,dc=com
 changetype: add
 objectClass: device
 # no distinguished values, will be added by DSA
 
-dn: cn=To be deleted by producer,dc=example,dc=com
+dn: cn=To be deleted by server 1,dc=example,dc=com
 changetype: delete
 EOADDS
 RC=$?
 if test $RC != 0 ; then
-       echo "ldapmodify failed for producer database ($RC)!"
+       echo "ldapmodify failed for server 1 database ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
@@ -845,92 +531,47 @@ fi
 echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep $SLEEP1
 
-echo "Using ldapsearch to read all the entries from the producer..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD  \
-       'objectclass=*' > $MASTEROUT 2>&1
-RC=$?
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed at producer ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer1..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD  \
-       'objectclass=*' > $SLAVEOUT 2>&1
+echo "Using ldapsearch to read all the entries from server $n..."
+$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI -w $PASSWD  \
+       'objectclass=*' > $TESTDIR/server$n.out 2>&1
 RC=$?
 
 if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer1 ($RC)!"
+       echo "ldapsearch failed at server $n ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
+. $LDIFFILTER < $TESTDIR/server$n.out > $TESTDIR/server$n.flt
+n=`expr $n + 1`
+done
 
-echo "Using ldapsearch to read all the entries from consumer2..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD  \
-       'objectclass=*' > $SLAVE2OUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer2 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer3..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI4 -w $PASSWD  \
-       'objectclass=*' > $SERVER4OUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer3 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Filtering producer results..."
-. $LDIFFILTER < $MASTEROUT > $MASTERFLT
-echo "Filtering consumer1 results..."
-. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
-echo "Filtering consumer2 results..."
-. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
-echo "Filtering consumer3 results..."
-. $LDIFFILTER < $SERVER4OUT > $SERVER4FLT
-
-echo "Comparing retrieved entries from producer and consumer1..."
-$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer1 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer2..."
-$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer2 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer3..."
-$CMP $MASTERFLT $SERVER4FLT > $CMPOUT
+n=2
+while [ $n -le $MMR ]; do
+echo "Comparing retrieved entries from server 1 and server $n..."
+$CMP $MASTERFLT $TESTDIR/server$n.flt > $CMPOUT
 
 if test $? != 0 ; then
-       echo "test failed - producer and consumer3 databases differ"
+       echo "test failed - server 1 and server $n databases differ"
+       test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit 1
 fi
+n=`expr $n + 1`
+done
 
-echo "Using ldapmodify to delete entries from consumer1..."
+echo "Using ldapmodify to delete entries from server 2..."
 $LDAPMODIFY -D "$MANAGERDN" -H $URI2 -w $PASSWD \
        >> $TESTOUT 2>&1 << EOADDS
-dn: cn=To be deleted by consumer1,dc=example,dc=com
+dn: cn=To be deleted by server 2,dc=example,dc=com
 changetype: delete
 EOADDS
 RC=$?
 if test $RC != 0 ; then
-       echo "ldapmodify failed for consumer1 database ($RC)!"
+       echo "ldapmodify failed for server 2 database ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
@@ -938,15 +579,15 @@ fi
 echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep $SLEEP1
 
-echo "Using ldapmodify to delete entries from consumer2..."
+echo "Using ldapmodify to delete entries from server 3..."
 $LDAPMODIFY -D "$MANAGERDN" -H $URI3 -w $PASSWD \
        >> $TESTOUT 2>&1 << EOADDS
-dn: cn=To be deleted by consumer2,dc=example,dc=com
+dn: cn=To be deleted by server 3,dc=example,dc=com
 changetype: delete
 EOADDS
 RC=$?
 if test $RC != 0 ; then
-       echo "ldapmodify failed for consumer2 database ($RC)!"
+       echo "ldapmodify failed for server 3 database ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
@@ -954,106 +595,67 @@ fi
 echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep $SLEEP1
 
-echo "Using ldapsearch to read all the entries from the producer..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD  \
-       'objectclass=*' > $MASTEROUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at producer ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Using ldapsearch to read all the entries from consumer1..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD  \
-       'objectclass=*' > $SLAVEOUT 2>&1
-RC=$?
-
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer1 ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
 
-echo "Using ldapsearch to read all the entries from consumer2..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD  \
-       'objectclass=*' > $SLAVE2OUT 2>&1
+echo "Using ldapsearch to read all the entries from server $n..."
+$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI -w $PASSWD  \
+       'objectclass=*' > $TESTDIR/server$n.out 2>&1
 RC=$?
 
 if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer2 ($RC)!"
+       echo "ldapsearch failed at server $n ($RC)!"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
+. $LDIFFILTER < $TESTDIR/server$n.out > $TESTDIR/server$n.flt
+n=`expr $n + 1`
+done
 
-echo "Using ldapsearch to read all the entries from consumer3..."
-$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI4 -w $PASSWD  \
-       'objectclass=*' > $SERVER4OUT 2>&1
-RC=$?
+n=2
+while [ $n -le $MMR ]; do
+echo "Comparing retrieved entries from server 1 and server $n..."
+$CMP $MASTERFLT $TESTDIR/server$n.flt > $CMPOUT
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed at consumer3 ($RC)!"
+if test $? != 0 ; then
+       echo "test failed - server 1 and server $n databases differ"
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
+       exit 1
 fi
+n=`expr $n + 1`
+done
 
 # kill!
 # test $KILLSERVERS != no && kill -HUP $KILLPIDS
 kill -HUP $KILLPIDS
 
-echo "Filtering producer results..."
-. $LDIFFILTER < $MASTEROUT > $MASTERFLT
-echo "Filtering consumer1 results..."
-. $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
-echo "Filtering consumer2 results..."
-. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT
-echo "Filtering consumer3 results..."
-. $LDIFFILTER < $SERVER4OUT > $SERVER4FLT
-
-echo "Comparing retrieved entries from producer and consumer1..."
-$CMP $MASTERFLT $SLAVEFLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer1 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer2..."
-$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer2 databases differ"
-       exit 1
-fi
-
-echo "Comparing retrieved entries from producer and consumer3..."
-$CMP $MASTERFLT $SERVER4FLT > $CMPOUT
-
-if test $? != 0 ; then
-       echo "test failed - producer and consumer3 databases differ"
-       exit 1
-fi
-
 # kill!
 # test $KILLSERVERS != no && wait
 wait
 
 echo "Restarting servers..."
-echo "Starting producer slapd on TCP/IP port $PORT1..."
-cd $PRODIR
-echo "======================= RESTART =======================" >> $LOG1
-$SLAPD -F ./slapd.d -h $URI1 -d $LVL $TIMING >> $LOG1 2>&1 &
+KILLPIDS=""
+n=1
+while [ $n -le $MMR ]; do
+PORT=`expr $BASEPORT + $n`
+URI="ldap://${LOCALHOST}:$PORT/"
+LOG=$TESTDIR/slapd.$n.log
+echo "Starting server $n on TCP/IP port $PORT..."
+cd ${XDIR}$n
+echo "======================= RESTART =======================" >> $LOG
+$SLAPD -F ./slapd.d -h $URI -d $LVL $TIMING >> $LOG 2>&1 &
 PID=$!
 if test $WAIT != 0 ; then
     echo PID $PID
     read foo
 fi
-KILLPIDS="$PID"
+KILLPIDS="$KILLPIDS $PID"
 cd $TESTWD
-echo "Using ldapsearch to check that producer slapd is running..."
+echo "Using ldapsearch to check that server $n is running..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI1 \
+       $LDAPSEARCH -s base -b "" -H $URI \
                'objectclass=*' > /dev/null 2>&1
        RC=$?
        if test $RC = 0 ; then
@@ -1068,103 +670,9 @@ if test $RC != 0 ; then
        test $KILLSERVERS != no && kill -HUP $KILLPIDS
        exit $RC
 fi
-#exit 0
-echo "Starting consumer1 slapd on TCP/IP port $PORT2..."
-cd $CONDIR
-echo "======================= RESTART =======================" >> $LOG2
-$SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING >> $LOG2 2>&1 &
-SLAVEPID=$!
-if test $WAIT != 0 ; then
-    echo SLAVEPID $SLAVEPID
-    read foo
-fi
-KILLPIDS="$KILLPIDS $SLAVEPID"
-cd $TESTWD
-
-sleep 1
-
-echo "Using ldapsearch to check that consumer1 slapd is running..."
-for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI2 \
-               'objectclass=*' > /dev/null 2>&1
-       RC=$?
-       if test $RC = 0 ; then
-               break
-       fi
-       echo "Waiting 5 seconds for slapd to start..."
-       sleep 5
+n=`expr $n + 1`
 done
 
-if test $RC != 0 ; then
-       echo "ldapsearch failed ($RC)!"
-       test $KILLSERVERS != no && kill -HUP $KILLPIDS
-       exit $RC
-fi
-
-echo "Starting consumer2 slapd on TCP/IP port $PORT3..."
-cd $CONDIR2
-echo "======================= RESTART =======================" >> $LOG3
-$SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING >> $LOG3 2>&1 &
-SLAVE2PID=$!
-if test $WAIT != 0 ; then
-    echo SLAVE2PID $SLAVE2PID
-    read foo
-fi
-KILLPIDS="$KILLPIDS $SLAVE2PID"
-cd $TESTWD
-
-sleep 1
-
-echo "Using ldapsearch to check that consumer2 slapd is running..."
-for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI3 \
-               'objectclass=*' > /dev/null 2>&1
-       RC=$?
-       if test $RC = 0 ; then
-               break
-       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 "Starting consumer3 slapd on TCP/IP port $PORT4..."
-cd $CONDIR3
-echo "======================= RESTART =======================" >> $LOG4
-$SLAPD -F ./slapd.d -h $URI4 -d $LVL $TIMING >> $LOG4 2>&1 &
-SLAVE3PID=$!
-if test $WAIT != 0 ; then
-    echo SLAVE3PID $SLAVE3PID
-    read foo
-fi
-KILLPIDS="$KILLPIDS $SLAVE3PID"
-cd $TESTWD
-
-sleep 1
-
-echo "Using ldapsearch to check that consumer3 slapd is running..."
-for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -s base -b "" -H $URI4 \
-               'objectclass=*' > /dev/null 2>&1
-       RC=$?
-       if test $RC = 0 ; then
-               break
-       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
-
 # Insert modifications and more tests here.
 echo "Waiting $SLEEP1 seconds for servers to resync..."
 sleep $SLEEP1