openldap/tests/scripts/test005-modrdn
Kurt Zeilenga 73276e84ae Import experimental referral implementation from OPENLDAP_DEVEL_REFERRALS.
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.
1999-07-16 02:45:46 +00:00

221 lines
5.4 KiB
Bash
Executable File

#! /bin/sh
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
echo "Cleaning up in $DBDIR..."
rm -f $DBDIR/[!C]*
echo "Running ldif2ldbm to build slapd database..."
$LDIF2LDBM -f $CONF -i $LDIF -e ../servers/slapd/tools
RC=$?
if test $RC != 0 ; then
echo "ldif2ldbm failed!"
exit $RC
fi
echo "Starting slapd on TCP/IP port $PORT..."
$SLAPD -f $CONF -p $PORT -d $LVL $TIMING > $MASTERLOG 2>&1 &
PID=$!
echo "Testing slapd modrdn operations..."
# Make sure we can search the database
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
if test $RC != 0 ; then
echo "ldapsearch failed!"
kill -HUP $PID
exit $RC
fi
cat /dev/null > $TESTOUT
# -r used to do remove of old rdn
echo "Testing modrdn(deleteoldrdn=0)..."
$LDAPMODRDN -v -D "$MANAGERDN" -h localhost -p $PORT -w $PASSWD > \
/dev/null 2>&1 'cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US' 'cn=James A Jones III'
RC=$?
if test $RC != 0 ; then
echo "ldapmodrdn failed!"
kill -HUP $PID
exit $RC
fi
echo "Testing modrdn(deleteoldrdn=1)..."
$LDAPMODRDN -v -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD > \
/dev/null 2>&1 'cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US' 'cn=James A Jones II'
RC=$?
if test $RC != 0 ; then
echo "ldapmodrdn failed!"
kill -HUP $PID
exit $RC
fi
# Ensure the new rdn's can be found
echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones III)..."
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
'cn=James A Jones III' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed!"
kill -HUP $PID
exit $RC
fi
LDIF=$MODRDNOUTMASTER1
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 filter output..."
cmp $SEARCHFLT $LDIFFLT
if test $? != 0 ; then
echo "comparison failed - modrdn operations did not complete correctly"
kill -HUP $PID
exit 1
fi
echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones II)..."
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
'cn=James A Jones II' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed!"
kill -HUP $PID
exit $RC
fi
LDIF=$MODRDNOUTMASTER2
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 filter output..."
cmp $SEARCHFLT $LDIFFLT
if test $? != 0 ; then
echo "comparison failed - modrdn operations did not complete correctly"
kill -HUP $PID
exit 1
fi
# Ensure that you cannot find the entry for which the rdn was deleted as
# an attribute.
echo "Using ldapsearch to retrieve entries using removed rdn (cn=James A Jones 2)..."
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
'cn=James A Jones 2' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
> /dev/null 2>&1
RC=$?
if test $RC = 0 ; then
echo "failure: ldapsearch found attribute that was to be removed!"
kill -HUP $PID
exit $RC
fi
echo "Using ldapsearch to retrieve all the entries..."
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
'objectClass=*' > $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
kill -HUP $PID
echo "ldapsearch failed!"
exit $RC
fi
LDIF=$MODRDNOUTMASTER0
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 filter output..."
cmp $SEARCHFLT $LDIFFLT
if test $? != 0 ; then
echo "comparison failed - modrdn operations did not complete correctly"
kill -HUP $PID
exit 1
fi
echo "Testing modrdn(deleteoldrdn=1), modrdn with new rdn already an att val..."
$LDAPMODRDN -v -D "$MANAGERDN" -r -h localhost -p $PORT -w $PASSWD > \
/dev/null 2>&1 'cn=James A Jones III, ou=Alumni Association, ou=People, o=University of Michigan, c=US' 'cn=James A Jones 1'
RC=$?
if test $RC != 0 ; then
echo "ldapmodrdn failed!"
kill -HUP $PID
exit $RC
fi
# Test that you can use modrdn with an attribute value which was previously
# present
echo "Using ldapsearch to retrieve entries using new rdn (cn=James A Jones 1)..."
$LDAPSEARCH -L -S "" -b "$BASEDN" -h localhost -p $PORT \
'cn=James A Jones 1' | egrep -iv '^createtimestamp:|^modifytimestamp:' \
> $SEARCHOUT 2>&1
RC=$?
if test $RC != 0 ; then
echo "ldapsearch failed!"
kill -HUP $PID
exit $RC
fi
LDIF=$MODRDNOUTMASTER3
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 filter output..."
cmp $SEARCHFLT $LDIFFLT
kill -HUP $PID
if test $? != 0 ; then
echo "comparison failed - modrdn operations did not complete correctly"
exit 1
fi
echo ">>>>> Test succeeded"
# echo "modrdn test not yet written"
exit 0