]> git.sur5r.net Git - openldap/blobdiff - tests/scripts/test007-replication
cleanup ($PORT -> $SLAVEPORT)
[openldap] / tests / scripts / test007-replication
index a30586604f44d89d455560f5afb8dad373be0164..8deaa2743738c290223222f936ffcaf46c9cb501 100755 (executable)
@@ -1,4 +1,15 @@
-#!/bin/sh
+#! /bin/sh
+# $OpenLDAP$
+
+SRCDIR="."
+if test $# -ge 1 ; then
+       SRCDIR=$1; shift
+fi
+
+. $SRCDIR/scripts/args.sh
+
+echo "running defines.sh"
+. $SRCDIR/scripts/defines.sh
 
 #
 # Test replication:
 
 #
 # Test replication:
 # - retrieve database over ldap and compare against expected results
 #
 
 # - retrieve database over ldap and compare against expected results
 #
 
-if [ $# -eq 0 ]; then
-       SRCDIR="."
-else
-       SRCDIR=$1; shift
-fi
-if [ $# -eq 1 ]; then
-       BACKEND=$1; shift
-fi
-
-echo "running defines.sh $SRCDIR $BACKEND"
-. $SRCDIR/scripts/defines.sh
-
 if test ! -x $SLURPD ; then
        echo ">>>>> $SLURPD is not executable or do not exist."
        echo ">>>>> Test skipped."
 if test ! -x $SLURPD ; then
        echo ">>>>> $SLURPD is not executable or do not exist."
        echo ">>>>> Test skipped."
@@ -31,74 +30,95 @@ fi
 echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 echo "Cleaning up in $REPLDIR..."
 echo "Cleaning up in $DBDIR..."
 rm -f $DBDIR/[!C]*
 echo "Cleaning up in $REPLDIR..."
-rm -f $REPLDIR/[!C]*
+rm -rf $REPLDIR/[!C]*
 
 echo "Starting master slapd on TCP/IP port $PORT..."
 
 echo "Starting master slapd on TCP/IP port $PORT..."
-$SLAPD -f $MASTERCONF -p $PORT -d $LVL $TIMING > $MASTERLOG 2>&1 &
+. $CONFFILTER $BACKEND $MONITORDB < $MASTERCONF > $DBCONF
+$SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
 PID=$!
 PID=$!
+if test $WAIT != 0 ; then
+    echo PID $PID
+    read foo
+fi
 
 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
 
 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
-$SLAPD -f $SLAVECONF -p $SLAVEPORT -d $LVL $TIMING > $SLAVELOG 2>&1 &
+. $CONFFILTER $BACKEND $MONITORDB < $SLAVECONF > $REPLCONF
+$SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 &
 SLAVEPID=$!
 SLAVEPID=$!
+if test $WAIT != 0 ; then
+    echo SLAVEPID $SLAVEPID
+    read foo
+fi
 
 echo "Using ldapsearch to check that master slapd is running..."
 for i in 0 1 2 3 4 5; do
 
 echo "Using ldapsearch to check that master slapd is running..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -L -b "$BASEDN" -h localhost -p $PORT \
-               'cn=Monitor' > /dev/null 2>&1
+       $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
+               'objectclass=*' > /dev/null 2>&1
        RC=$?
        RC=$?
-       if [ $RC = 1 ]; then
-               echo "Waiting 5 seconds for slapd to start..."
-               sleep 5
+       if test $RC = 0 ; then
+               break
        fi
        fi
+       echo "Waiting 5 seconds for slapd to start..."
+       sleep 5
 done
 
 echo "Using ldapsearch to check that slave slapd is running..."
 for i in 0 1 2 3 4 5; do
 done
 
 echo "Using ldapsearch to check that slave slapd is running..."
 for i in 0 1 2 3 4 5; do
-       $LDAPSEARCH -L -b "$BASEDN" -h localhost -p $SLAVEPORT \
-               'cn=Monitor' > /dev/null 2>&1
+       $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $SLAVEPORT \
+               'objectclass=*' > /dev/null 2>&1
        RC=$?
        RC=$?
-       if [ $RC = 1 ]; then
-               echo "Waiting 5 seconds for slapd to start..."
-               sleep 5
+       if test $RC = 0 ; then
+               break
        fi
        fi
+       echo "Waiting 5 seconds for slapd to start..."
+       sleep 5
 done
 
 echo "Starting slurpd..."
 done
 
 echo "Starting slurpd..."
-$SLURPD -f $MASTERCONF -d 4 -t $REPLDIR > $SLURPLOG 2>&1 &
+$SLURPD -f $MASTERCONF -d ${SLURPD_DEBUG-5} -t $REPLDIR > $SLURPLOG 2>&1 &
 SLURPPID=$!
 
 SLURPPID=$!
 
-echo "Using ldapmodify to populate the database..."
-$LDAPMODIFY -a -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD < \
+echo "Using ldapadd to populate the master directory..."
+$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
        $LDIFORDERED > /dev/null 2>&1
 RC=$?
        $LDIFORDERED > /dev/null 2>&1
 RC=$?
-if [ $RC != 0 ]; then
-       echo "ldapmodify failed!"
-       kill -HUP $PID $SLAVEPID $SLURPPID
+if test $RC != 0 ; then
+       echo "ldapadd failed ($RC)!"
+       kill -HUP $PID $SLAVEPID
+       kill -HUP $SLURPPID
        exit $RC
 fi
 
        exit $RC
 fi
 
-echo "Using ldapmodify to modify the database..."
+echo "Waiting 15 seconds for slurpd to send changes..."
+sleep 15
+
+echo "Using ldapmodify to modify master directory..."
+
 #
 # Do some modifications
 #
 
 #
 # Do some modifications
 #
 
-$LDAPMODIFY -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \
-       /dev/null 2>&1 << EOMODS
+$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \
+       $TESTOUT 2>&1 << EOMODS
 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
 changetype: modify
 add: drink
 drink: Orange Juice
 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
 changetype: modify
 add: drink
 drink: Orange Juice
+-
+delete: sn
+sn: Jones
+-
+add: sn
+sn: Jones
 
 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: modify
 
 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: modify
-replace: multilinedescription
-multilinedescription: The replaced multiLineDescription $ Blah Woof.
--
 replace: drink
 drink: Iced Tea
 drink: Mad Dog 20/20
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
 replace: drink
 drink: Iced Tea
 drink: Mad Dog 20/20
 
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
+changetype: modify
 delete: member
 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 delete: member
 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
@@ -109,31 +129,43 @@ member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Mi
 
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 changetype: modify
 
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
 changetype: modify
-delete: member
+delete: description
 
 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: add
 
 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: add
-objectclass: top
-objectclass: person
-objectclass: organizationalPerson
-objectclass: newPilotPerson
-objectclass: umichPerson
+objectclass: OpenLDAPperson
 cn: Gern Jensen
 cn: Gern Jensen
+sn: Jensen
+uid: gjensen
 title: Chief Investigator, ITD
 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
 title: Chief Investigator, ITD
 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
-uid: gjensen
-krbname: gjensen@umich.edu
-nobatchupdates: TRUE
-onvacation: FALSE
 drink: Coffee
 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
 drink: Coffee
 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
-multilinedescription: Very odd
+description: Very odd
 facsimiletelephonenumber: +1 313 555 7557
 telephonenumber: +1 313 555 8343
 facsimiletelephonenumber: +1 313 555 7557
 telephonenumber: +1 313 555 8343
-mail: gjensen@mailgw.umich.edu
+mail: gjensen@mailgw.example.com
 homephone: +1 313 555 8844
 
 homephone: +1 313 555 8844
 
+dn: ou=Retired, ou=People, o=University of Michigan, c=US
+changetype: add
+objectclass: organizationalUnit
+ou: Retired
+
+dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
+changetype: add
+objectclass: OpenLDAPperson
+cn: Rosco P. Coltrane
+sn: Coltrane
+uid: rosco
+
+dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
+changetype: modrdn
+newrdn: cn=Rosco P. Coltrane
+deleteoldrdn: 1
+newsuperior: ou=Retired, ou=People, o=University of Michigan, c=US
+
 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: delete
 
 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
 changetype: delete
 
@@ -143,30 +175,44 @@ echo "Waiting 15 seconds for slurpd to send changes..."
 sleep 15
 
 echo "Using ldapsearch to read all the entries from the master..."
 sleep 15
 
 echo "Using ldapsearch to read all the entries from the master..."
-$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
+$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
        'objectclass=*' > $MASTEROUT 2>&1
        'objectclass=*' > $MASTEROUT 2>&1
+RC=$?
 
 
-if [ $RC != 0 ]; then
-       echo "ldapsearch failed!"
-       kill -HUP $PID $SLAVEPID $SLURPPID
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       kill -HUP $PID $SLAVEPID
+       kill -HUP $SLURPPID
        exit $RC
 fi
 
 echo "Using ldapsearch to read all the entries from the slave..."
        exit $RC
 fi
 
 echo "Using ldapsearch to read all the entries from the slave..."
-$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $SLAVEPORT \
+$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
        'objectclass=*' > $SLAVEOUT 2>&1
        'objectclass=*' > $SLAVEOUT 2>&1
+RC=$?
 
 
-if [ $RC != 0 ]; then
-       echo "ldapsearch failed!"
-       kill -HUP $PID $SLAVEPID $SLURPPID
+if test $RC != 0 ; then
+       echo "ldapsearch failed ($RC)!"
+       kill -HUP $PID $SLAVEPID
+       kill -HUP $SLURPPID
        exit $RC
 fi
 
        exit $RC
 fi
 
-kill -HUP $PID $SLAVEPID $SLURPPID
+kill -HUP $PID $SLAVEPID
+kill -HUP $SLURPPID
+
+SEARCHOUT=$MASTEROUT
+LDIF=$SLAVEOUT
+
+echo "Filtering ldapsearch results..."
+. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
+echo "Filtering original ldif used to create database..."
+. $LDIFFILTER < $LDIF > $LDIFFLT
 
 echo "Comparing retrieved entries from master and slave..."
 
 echo "Comparing retrieved entries from master and slave..."
-cmp $MASTEROUT $SLAVEOUT
-if [ $? != 0 ]; then
+$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
+
+if test $? != 0 ; then
        echo "test failed - master and slave databases differ"
        exit 1
 fi
        echo "test failed - master and slave databases differ"
        exit 1
 fi