mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
73276e84ae
Includes support for update referral for each replicated backend. Reworked replication test to use update referral. Includes major rewrite of response encoding codes (result.c). Includes reworked alias support and eliminates old suffix alias codes (can be emulated using named alias). Includes (untested) support for the Manage DSA IT control. Works in LDAPv2 world. Still testing in LDAPv3 world. Added default referral (test009) test.
191 lines
4.9 KiB
Bash
Executable File
191 lines
4.9 KiB
Bash
Executable File
#! /bin/sh
|
|
|
|
#
|
|
# Test replication:
|
|
# - start master
|
|
# - start slave
|
|
# - start slurpd
|
|
# - populate over ldap
|
|
# - perform some modifies and deleted
|
|
# - retrieve database over ldap and compare against expected results
|
|
#
|
|
|
|
if test $# -eq 0 ; then
|
|
SRCDIR="."
|
|
else
|
|
SRCDIR=$1; shift
|
|
fi
|
|
if test $# -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."
|
|
exit 0
|
|
fi
|
|
|
|
echo "Cleaning up in $DBDIR..."
|
|
rm -f $DBDIR/[!C]*
|
|
echo "Cleaning up in $REPLDIR..."
|
|
rm -f $REPLDIR/[!C]*
|
|
|
|
echo "Starting master slapd on TCP/IP port $PORT..."
|
|
$SLAPD -f $MASTERCONF -p $PORT -d $LVL $TIMING > $MASTERLOG 2>&1 &
|
|
PID=$!
|
|
|
|
echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
|
|
$SLAPD -f $SLAVECONF -p $SLAVEPORT -d $LVL $TIMING > $SLAVELOG 2>&1 &
|
|
SLAVEPID=$!
|
|
|
|
echo "Using ldapsearch to check that master slapd is running..."
|
|
for i in 0 1 2 3 4 5; do
|
|
$LDAPSEARCH -L -s base -b "$MONITOR" -h localhost -p $PORT \
|
|
'objectclass=*' > /dev/null 2>&1
|
|
RC=$?
|
|
if test $RC = 1 ; then
|
|
echo "Waiting 5 seconds for slapd to start..."
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
echo "Using ldapsearch to check that slave slapd is running..."
|
|
for i in 0 1 2 3 4 5; do
|
|
$LDAPSEARCH -L -s base -b "$MONITOR" -h localhost -p $PORT \
|
|
'objectclass=*' > /dev/null 2>&1
|
|
RC=$?
|
|
if test $RC = 1 ; then
|
|
echo "Waiting 5 seconds for slapd to start..."
|
|
sleep 5
|
|
fi
|
|
done
|
|
|
|
echo "Starting slurpd..."
|
|
$SLURPD -f $MASTERCONF -d 4 -t $REPLDIR > $SLURPLOG 2>&1 &
|
|
SLURPPID=$!
|
|
|
|
echo "Using ldapadd to populate the master directory..."
|
|
$LDAPADD -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD < \
|
|
$LDIFORDERED > /dev/null 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapadd failed!"
|
|
kill -HUP $PID $SLAVEPID $SLURPPID
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Waiting 15 seconds for slurpd to send changes..."
|
|
sleep 15
|
|
|
|
echo "Using ldapmodify to modify slave directory..."
|
|
|
|
#
|
|
# Do some modifications
|
|
#
|
|
|
|
$LDAPMODIFY -v -D "$MANAGERDN" -h localhost -p $SLAVEPORT -w $PASSWD > \
|
|
/dev/null 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=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
|
|
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
|
|
-
|
|
add: member
|
|
member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
|
|
member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
|
|
|
|
dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
|
|
changetype: modify
|
|
delete: member
|
|
|
|
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
|
|
cn: Gern Jensen
|
|
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
|
|
multilinedescription: Very odd
|
|
facsimiletelephonenumber: +1 313 555 7557
|
|
telephonenumber: +1 313 555 8343
|
|
mail: gjensen@mailgw.umich.edu
|
|
homephone: +1 313 555 8844
|
|
|
|
dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
|
|
changetype: delete
|
|
|
|
EOMODS
|
|
|
|
echo "Waiting 15 seconds for slurpd to send changes..."
|
|
sleep 15
|
|
|
|
echo "Using ldapsearch to read all the entries from the master..."
|
|
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
|
|
'objectclass=*' > $MASTEROUT 2>&1
|
|
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed!"
|
|
kill -HUP $PID $SLAVEPID $SLURPPID
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Using ldapsearch to read all the entries from the slave..."
|
|
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $SLAVEPORT \
|
|
'objectclass=*' > $SLAVEOUT 2>&1
|
|
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed!"
|
|
kill -HUP $PID $SLAVEPID $SLURPPID
|
|
exit $RC
|
|
fi
|
|
|
|
kill -HUP $PID $SLAVEPID $SLURPPID
|
|
|
|
SEARCHOUT=$MASTEROUT
|
|
LDIF=$SLAVEOUT
|
|
|
|
echo "Filtering ldapsearch results..."
|
|
. $SRCDIR/scripts/acfilter.sh < $SEARCHOUT > $SEARCHFLT
|
|
echo "Filtering original ldif used to create database..."
|
|
. $SRCDIR/scripts/acfilter.sh < $LDIF > $LDIFFLT
|
|
|
|
echo "Comparing retrieved entries from master and slave..."
|
|
cmp $SEARCHFLT $LDIFFLT
|
|
|
|
if test $? != 0 ; then
|
|
echo "test failed - master and slave databases differ"
|
|
exit 1
|
|
fi
|
|
|
|
echo ">>>>> Test succeeded"
|
|
|
|
|
|
exit 0
|