mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-07-14 20:41:02 -04:00
Also improve KILLPIDS tracking. Waiting on multiple jobs and relying on wait exit code being != 0 if at least one process returned != 0 might not be portable but is the best we can do for now. We can address that in the future.
219 lines
5.1 KiB
Bash
Executable file
219 lines
5.1 KiB
Bash
Executable file
#! /bin/sh
|
|
# $OpenLDAP$
|
|
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
|
|
##
|
|
## Copyright 1998-2026 The OpenLDAP Foundation.
|
|
## All rights reserved.
|
|
##
|
|
## Redistribution and use in source and binary forms, with or without
|
|
## modification, are permitted only as authorized by the OpenLDAP
|
|
## Public License.
|
|
##
|
|
## A copy of this license is available in the file LICENSE in the
|
|
## top-level directory of the distribution or, alternatively, at
|
|
## <http://www.OpenLDAP.org/license.html>.
|
|
|
|
echo "running defines.sh"
|
|
. $SRCDIR/scripts/defines.sh
|
|
|
|
if test $BACKEND = "ldif" ; then
|
|
echo "LDIF backend does not support relax control, test skipped"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p $TESTDIR $DBDIR1
|
|
|
|
echo "Running slapadd to build slapd database..."
|
|
. $CONFFILTER $BACKEND < $CONF > $CONF1
|
|
$SLAPADD -f $CONF1 -l $LDIFORDERED
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "slapadd failed ($RC)!"
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Starting slapd on TCP/IP port $PORT1..."
|
|
$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
|
|
PID=$!
|
|
if test $WAIT != 0 ; then
|
|
echo PID $PID
|
|
read foo
|
|
fi
|
|
KILLPIDS="$PID"
|
|
|
|
sleep 1
|
|
|
|
echo "Testing slapd Manage operations..."
|
|
for i in 0 1 2 3 4 5; do
|
|
$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
|
|
'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 "Testing modify, add, and delete..."
|
|
$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
|
|
-e \!relax > \
|
|
$TESTOUT 2>&1 << EOMODS
|
|
version: 1
|
|
#
|
|
# Working Tests
|
|
#
|
|
|
|
#
|
|
# ObjectClass tests
|
|
#
|
|
|
|
dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
|
|
dc=com
|
|
# add obsolete auxiliary objectclass
|
|
changetype: modify
|
|
add: objectClass
|
|
objectClass: obsoletePerson
|
|
|
|
dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
|
|
dc=com
|
|
# add obsolete attribute
|
|
changetype: modify
|
|
add: testObsolete
|
|
testObsolete: TRUE
|
|
|
|
#
|
|
# create/modify timestamp test
|
|
#
|
|
|
|
dn: ou=Groups,dc=example,dc=com
|
|
# change creatorsName
|
|
changetype: modify
|
|
replace: creatorsName
|
|
creatorsName: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
|
|
|
|
dn: cn=ITD Staff,ou=Groups,dc=example,dc=com
|
|
# change modifiersName
|
|
changetype: modify
|
|
replace: modifiersName
|
|
modifiersName: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
|
|
|
|
dn: dc=example,dc=com
|
|
# change timestamps
|
|
changetype: modify
|
|
replace: modifyTimestamp
|
|
modifyTimestamp: 19700101000000Z
|
|
-
|
|
replace: createTimestamp
|
|
createTimestamp: 19700101000000Z
|
|
-
|
|
|
|
dn: cn=All Staff,ou=Groups,dc=example,dc=com
|
|
# change entryUUID
|
|
changetype: modify
|
|
replace: entryUUID
|
|
entryUUID: badbadba-dbad-1029-92f7-badbadbadbad
|
|
|
|
dn: cn=All Staff,dc=example,dc=com
|
|
changetype: add
|
|
objectClass: groupOfNames
|
|
cn: All Staff
|
|
member:
|
|
creatorsName: cn=Someone
|
|
createTimestamp: 19700101000000Z
|
|
modifiersName: cn=Someone Else
|
|
modifyTimestamp: 19700101000000Z
|
|
entryUUID: badbadef-dbad-1029-92f7-badbadbadbad
|
|
|
|
#
|
|
# Tests that did not work until ITS#5792
|
|
#
|
|
|
|
dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
|
|
dc=com
|
|
# update structural object class of entry via objectClass replace
|
|
changetype: modify
|
|
replace: objectClass
|
|
objectClass: obsoletePerson
|
|
objectClass: testPerson
|
|
-
|
|
|
|
dn: cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com
|
|
# update structural object class of entry via objectClass add
|
|
changetype: modify
|
|
add: objectClass
|
|
objectClass: testPerson
|
|
-
|
|
|
|
dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com
|
|
# update structural object class of entry via objectClass delete/add
|
|
changetype: modify
|
|
delete: objectClass
|
|
objectClass: OpenLDAPperson
|
|
-
|
|
add: objectClass
|
|
objectClass: testPerson
|
|
-
|
|
EOMODS
|
|
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
echo "ldapmodify failed ($RC)!"
|
|
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
|
exit $RC
|
|
fi
|
|
|
|
echo "Using ldapsearch to retrieve all the entries..."
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
|
|
'objectClass=*' '*' creatorsName modifiersName > $SEARCHOUT 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
|
echo "ldapsearch failed ($RC)!"
|
|
exit $RC
|
|
fi
|
|
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -s base -H $URI1 \
|
|
'objectClass=*' '*' creatorsName createTimestamp \
|
|
modifiersName modifyTimestamp >> $SEARCHOUT 2>&1
|
|
RC=$?
|
|
if test $RC != 0 ; then
|
|
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
|
echo "ldapsearch failed ($RC)!"
|
|
exit $RC
|
|
fi
|
|
|
|
$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
|
|
'(cn=All Staff)' '*' entryUUID >> $SEARCHOUT 2>&1
|
|
RC=$?
|
|
test $KILLSERVERS != no && kill -HUP $KILLPIDS
|
|
if test $RC != 0 ; then
|
|
echo "ldapsearch failed ($RC)!"
|
|
exit $RC
|
|
fi
|
|
|
|
LDIF=$MANAGEOUT
|
|
|
|
echo "Filtering ldapsearch results..."
|
|
$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
|
|
echo "Filtering original ldif used to create database..."
|
|
$LDIFFILTER < $LDIF > $LDIFFLT
|
|
echo "Comparing filter output..."
|
|
$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
|
|
|
|
if test $? != 0 ; then
|
|
echo "comparison failed - manage operations did not complete correctly"
|
|
exit 1
|
|
fi
|
|
|
|
echo ">>>>> Test succeeded"
|
|
|
|
test $KILLSERVERS != no && { wait $KILLPIDS || exit $?; }
|
|
|
|
exit 0
|