mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-24 08:39:37 -05:00
ldapsearch:
use draft guidelines for determining when to use
-t only writes binary attributes to files
-tt writes all attributes to files
output now lists URL instead of path to such files
-T dir can be used to specify directory to create temp files in
-V urlprefix can be used to change the URL prefix
LDIF is now commented (can be disabled using -LL)
LDIF now contains version attribute (can be disabled with -LLL)
LDIF:
put interface changed to allow caller to specify how to encode
put interface uses draft guidelines for determine when to base64 encode
wrapping kludged to match old off by one bug
Tests:
removed trailing space from some attributes (to avoid base64 encoding)
enabled -LLL in defines.sh (should sed output to remove
wrapping/comments/redundant separators)
Misc:
updated codes outputting LDIF to use new put interface
TODO:
handling of version attribute on input
handling of URLs on input (ie: fetch URL)
190 lines
4.9 KiB
Bash
Executable file
190 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 -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 -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 > \
|
|
$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=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 -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 -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
|