xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test027-emptydn (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
12de962bdSlukem#! /bin/sh
22de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>.
32de962bdSlukem##
4*e670fd5cSchristos## Copyright 2004-2021 The OpenLDAP Foundation.
52de962bdSlukem## All rights reserved.
62de962bdSlukem##
72de962bdSlukem## Redistribution and use in source and binary forms, with or without
82de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP
92de962bdSlukem## Public License.
102de962bdSlukem##
112de962bdSlukem## A copy of this license is available in the file LICENSE in the
122de962bdSlukem## top-level directory of the distribution or, alternatively, at
132de962bdSlukem## <http://www.OpenLDAP.org/license.html>.
142de962bdSlukem
152de962bdSlukemecho "running defines.sh"
162de962bdSlukem. $SRCDIR/scripts/defines.sh
172de962bdSlukem
182de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2
192de962bdSlukem
20*e670fd5cSchristos. $CONFFILTER $BACKEND < $EMPTYDNCONF > $CONF1
212de962bdSlukem
222de962bdSlukemecho "Running slapadd to build \"dc=example,dc=com\" slapd database..."
232de962bdSlukem$SLAPADD -f $CONF1 -n 1 -l $LDIFEMPTYDN1
242de962bdSlukemRC=$?
252de962bdSlukemif test $RC != 0 ; then
262de962bdSlukem	echo "slapadd failed ($RC)!"
272de962bdSlukem	exit $RC
282de962bdSlukemfi
292de962bdSlukem
302de962bdSlukemecho "Running slapadd to build empty DN slapd database..."
312de962bdSlukem$SLAPADD -f $CONF1 -b "" -l $LDIFEMPTYDN2
322de962bdSlukemRC=$?
332de962bdSlukemif test $RC != 0 ; then
342de962bdSlukem	echo "slapadd failed ($RC)!"
352de962bdSlukem	exit $RC
362de962bdSlukemfi
372de962bdSlukem
382de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
39*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
402de962bdSlukemPID=$!
412de962bdSlukemif test $WAIT != 0 ; then
422de962bdSlukem    echo PID $PID
432de962bdSlukem    read foo
442de962bdSlukemfi
452de962bdSlukemKILLPIDS="$PID"
462de962bdSlukem
472de962bdSlukemsleep 1
482de962bdSlukem
492de962bdSlukemecho "Testing slapd empty DN handling..."
502de962bdSlukemfor i in 0 1 2 3 4 5; do
51*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
522de962bdSlukem		'objectclass=*' > /dev/null 2>&1
532de962bdSlukem	RC=$?
542de962bdSlukem	if test $RC = 0 ; then
552de962bdSlukem		break
562de962bdSlukem	fi
572de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
582de962bdSlukem	sleep 5
592de962bdSlukemdone
602de962bdSlukem
612de962bdSlukemif test $RC != 0 ; then
622de962bdSlukem	echo "ldapsearch failed ($RC)!"
632de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
642de962bdSlukem	exit $RC
652de962bdSlukemfi
662de962bdSlukem
672de962bdSlukemecho "Searching database..."
682de962bdSlukem
69*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -H $URI1 > $SEARCHOUT 2>&1
702de962bdSlukem
712de962bdSlukemRC=$?
722de962bdSlukemif test $RC != 0 ; then
732de962bdSlukem	echo "ldapsearch failed ($RC)!"
742de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
752de962bdSlukem	exit $RC
762de962bdSlukemfi
772de962bdSlukem
782de962bdSlukemkill -HUP $KILLPIDS
792de962bdSlukemwait
802de962bdSlukem
812de962bdSlukemecho "Filtering ldapsearch results..."
82ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
83ef2f90d3Sadamecho "Filtering expected results..."
84ef2f90d3Sadam$LDIFFILTER < $EMPTYDNOUT1 > $LDIFFLT
852de962bdSlukemecho "Comparing ldapsearch results against original..."
86ef2f90d3Sadam$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
872de962bdSlukem
882de962bdSlukemif test $? != 0 ; then
892de962bdSlukem	echo "comparison failed - empty DN write operations did not complete correctly"
902de962bdSlukem	exit 1
912de962bdSlukemfi
922de962bdSlukem
932de962bdSlukemecho "Comparison of database generated via slapadd succeeded"
942de962bdSlukem
952de962bdSlukemecho "Cleaning up database directories..."
962de962bdSlukem/bin/rm -rf $TESTDIR/db.*
972de962bdSlukem
982de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2
992de962bdSlukem
1002de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
101*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
1022de962bdSlukemPID=$!
1032de962bdSlukemif test $WAIT != 0 ; then
1042de962bdSlukem    echo PID $PID
1052de962bdSlukem    read foo
1062de962bdSlukemfi
1072de962bdSlukemKILLPIDS="$PID"
1082de962bdSlukem
1092de962bdSlukemsleep 1
1102de962bdSlukem
1112de962bdSlukemecho "Testing slapd empty DN handling..."
1122de962bdSlukemfor i in 0 1 2 3 4 5; do
113*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
1142de962bdSlukem		'objectclass=*' > /dev/null 2>&1
1152de962bdSlukem	RC=$?
1162de962bdSlukem	if test $RC = 0 ; then
1172de962bdSlukem		break
1182de962bdSlukem	fi
1192de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
1202de962bdSlukem	sleep 5
1212de962bdSlukemdone
1222de962bdSlukem
1232de962bdSlukemif test $RC != 0 ; then
1242de962bdSlukem	echo "ldapsearch failed ($RC)!"
1252de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1262de962bdSlukem	exit $RC
1272de962bdSlukemfi
1282de962bdSlukem
1292de962bdSlukemecho "Loading database..."
130*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD \
1312de962bdSlukem	-f $LDIFEMPTYDN1 > /dev/null 2>&1
132*e670fd5cSchristos$LDAPADD -D "$EMPTYDNDN" -H $URI1 -w $PASSWD \
1332de962bdSlukem	-f $LDIFEMPTYDN2 > /dev/null 2>&1
1342de962bdSlukem
135*e670fd5cSchristos$LDAPMODIFY -D "$EMPTYDNDN" -H $URI1 -w $PASSWD \
1362de962bdSlukem	> /dev/null 2>&1 << EOF
1372de962bdSlukemdn: o=Beispiel,c=DE
1382de962bdSlukemchangetype: delete
1392de962bdSlukem
1402de962bdSlukemdn: c=DE
1412de962bdSlukemchangetype: delete
1422de962bdSlukemEOF
1432de962bdSlukem
1442de962bdSlukemecho "Searching database..."
1452de962bdSlukem
146*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -H $URI1 > $SEARCHOUT 2>&1
1472de962bdSlukem
1482de962bdSlukemRC=$?
1492de962bdSlukemif test $RC != 0 ; then
1502de962bdSlukem	echo "ldapsearch failed ($RC)!"
1512de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1522de962bdSlukem	exit $RC
1532de962bdSlukemfi
1542de962bdSlukem
1552de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
1562de962bdSlukem
1572de962bdSlukemecho "Filtering ldapsearch results..."
158ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
159ef2f90d3Sadamecho "Filtering expected results..."
160ef2f90d3Sadam$LDIFFILTER < $EMPTYDNOUT2 > $LDIFFLT
1612de962bdSlukemecho "Comparing ldapsearch results against original..."
162ef2f90d3Sadam$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
1632de962bdSlukem
1642de962bdSlukemif test $? != 0 ; then
1652de962bdSlukem	echo "comparison failed - empty DN write operations did not complete correctly"
1662de962bdSlukem	exit 1
1672de962bdSlukemfi
1682de962bdSlukem
1692de962bdSlukem#####
1702de962bdSlukem
1712de962bdSlukemecho ">>>>> Test succeeded"
1722de962bdSlukem
1732de962bdSlukemtest $KILLSERVERS != no && wait
1742de962bdSlukem
1752de962bdSlukemexit 0
176