xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test040-subtree-rename (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
12de962bdSlukem#! /bin/sh
2d11b170bStron# $OpenLDAP$ */
32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>.
42de962bdSlukem##
5*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation.
62de962bdSlukem## All rights reserved.
72de962bdSlukem##
82de962bdSlukem## Redistribution and use in source and binary forms, with or without
92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP
102de962bdSlukem## Public License.
112de962bdSlukem##
122de962bdSlukem## A copy of this license is available in the file LICENSE in the
132de962bdSlukem## top-level directory of the distribution or, alternatively, at
142de962bdSlukem## <http://www.OpenLDAP.org/license.html>.
152de962bdSlukem
162de962bdSlukemecho "running defines.sh"
172de962bdSlukem. $SRCDIR/scripts/defines.sh
182de962bdSlukem
192de962bdSlukemmkdir -p $TESTDIR $DBDIR1
202de962bdSlukem
212de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
22*e670fd5cSchristos. $CONFFILTER $BACKEND < $CONF > $CONF1
23*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
242de962bdSlukemPID=$!
252de962bdSlukemif test $WAIT != 0 ; then
262de962bdSlukem    echo PID $PID
272de962bdSlukem    read foo
282de962bdSlukemfi
292de962bdSlukemKILLPIDS="$PID"
302de962bdSlukem
312de962bdSlukemsleep 1
322de962bdSlukem
332de962bdSlukemecho "Testing slapd searching..."
342de962bdSlukemfor i in 0 1 2 3 4 5; do
35*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
362de962bdSlukem		'(objectclass=*)' > /dev/null 2>&1
372de962bdSlukem	RC=$?
382de962bdSlukem	if test $RC = 0 ; then
392de962bdSlukem		break
402de962bdSlukem	fi
412de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
422de962bdSlukem	sleep 5
432de962bdSlukemdone
442de962bdSlukem
452de962bdSlukemif test $RC != 0 ; then
462de962bdSlukem	echo "ldapsearch failed ($RC)!"
472de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
482de962bdSlukem	exit $RC
492de962bdSlukemfi
502de962bdSlukem
512de962bdSlukemcat /dev/null > $TESTOUT
522de962bdSlukemcat /dev/null > $SEARCHOUT
532de962bdSlukem
542de962bdSlukem# Add
552de962bdSlukemecho "Populating the database..."
562de962bdSlukemecho "# Populating the database..." >> $TESTOUT
57*e670fd5cSchristos$LDAPADD -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
582de962bdSlukem	>> $TESTOUT 2>&1 << EOMODS0
592de962bdSlukemdn: dc=example,dc=com
602de962bdSlukemobjectClass: organization
612de962bdSlukemobjectClass: dcObject
622de962bdSlukemo: Example, Inc.
632de962bdSlukemdc: example
642de962bdSlukem
652de962bdSlukemdn: ou=Parent,dc=example,dc=com
662de962bdSlukemobjectClass: organizationalUnit
672de962bdSlukemou: Parent
682de962bdSlukem
692de962bdSlukemdn: ou=Another parent,dc=example,dc=com
702de962bdSlukemobjectClass: organizationalUnit
712de962bdSlukemou: Another parent
722de962bdSlukem
732de962bdSlukemdn: ou=Child,ou=Parent,dc=example,dc=com
742de962bdSlukemobjectClass: organizationalUnit
752de962bdSlukemou: Child
762de962bdSlukem
772de962bdSlukemdn: ou=Grandchild,ou=Child,ou=Parent,dc=example,dc=com
782de962bdSlukemobjectClass: organizationalUnit
792de962bdSlukemou: Grandchild
802de962bdSlukemEOMODS0
812de962bdSlukemRC=$?
822de962bdSlukemif test $RC != 0 ; then
832de962bdSlukem	echo "ldapadd failed ($RC)!"
842de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
852de962bdSlukem	exit $RC
862de962bdSlukemfi
872de962bdSlukem
882de962bdSlukemecho "Searching all database..."
892de962bdSlukemecho "# Searching all database (after add)..." >> $SEARCHOUT
90*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
912de962bdSlukem	'(objectClass=*)' >> $SEARCHOUT 2>&1
922de962bdSlukemRC=$?
932de962bdSlukemif test $RC != 0 ; then
942de962bdSlukem	echo "ldapsearch failed ($RC)!"
952de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
962de962bdSlukem	exit $RC
972de962bdSlukemfi
982de962bdSlukem
992de962bdSlukem# Rename (PASS1)
1002de962bdSlukemecho "Renaming (PASS1)..."
1012de962bdSlukemecho "# Renaming (PASS1)..." >> $TESTOUT
102*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
1032de962bdSlukem	>> $TESTOUT 2>&1 << EOMODS1
1042de962bdSlukemdn: ou=Child,ou=Parent,dc=example,dc=com
1052de962bdSlukemchangetype: modrdn
1062de962bdSlukemnewrdn: ou=Renamed child
1072de962bdSlukemdeleteoldrdn: 0
1082de962bdSlukemEOMODS1
1092de962bdSlukemRC=$?
1102de962bdSlukemif test $RC != 0 ; then
1112de962bdSlukem	echo "ldapadd failed ($RC)!"
1122de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1132de962bdSlukem	exit $RC
1142de962bdSlukemfi
1152de962bdSlukem
1162de962bdSlukemecho "Searching all database..."
1172de962bdSlukemecho "# Searching all database (after PASS1)..." >> $SEARCHOUT
118*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1192de962bdSlukem	'(objectClass=*)' >> $SEARCHOUT 2>&1
1202de962bdSlukemRC=$?
1212de962bdSlukemif test $RC != 0 ; then
1222de962bdSlukem	echo "ldapsearch failed ($RC)!"
1232de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1242de962bdSlukem	exit $RC
1252de962bdSlukemfi
1262de962bdSlukem
1272de962bdSlukem# Rename (PASS2)
1282de962bdSlukemecho "Renaming (PASS2)..."
1292de962bdSlukemecho "# Renaming (PASS2)..." >> $TESTOUT
130*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
1312de962bdSlukem	>> $TESTOUT 2>&1 << EOMODS2
1322de962bdSlukemdn: ou=Parent,dc=example,dc=com
1332de962bdSlukemchangetype: modrdn
1342de962bdSlukemnewrdn: ou=Renamed parent
1352de962bdSlukemdeleteoldrdn: 0
1362de962bdSlukemEOMODS2
1372de962bdSlukemRC=$?
1382de962bdSlukemif test $RC != 0 ; then
1392de962bdSlukem	echo "ldapadd failed ($RC)!"
1402de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1412de962bdSlukem	exit $RC
1422de962bdSlukemfi
1432de962bdSlukem
1442de962bdSlukemecho "Searching all database..."
1452de962bdSlukemecho "# Searching all database (after PASS2)..." >> $SEARCHOUT
146*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1472de962bdSlukem	'(objectClass=*)' >> $SEARCHOUT 2>&1
1482de962bdSlukemRC=$?
1492de962bdSlukemif test $RC != 0 ; then
1502de962bdSlukem	echo "ldapsearch failed ($RC)!"
1512de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1522de962bdSlukem	exit $RC
1532de962bdSlukemfi
1542de962bdSlukem
1552de962bdSlukem# Rename (PASS3)
1562de962bdSlukemecho "Renaming (PASS3)..."
1572de962bdSlukemecho "# Renaming (PASS3)..." >> $TESTOUT
158*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD \
1592de962bdSlukem	>> $TESTOUT 2>&1 << EOMODS3
1602de962bdSlukemdn: ou=Renamed child,ou=Renamed parent,dc=example,dc=com
1612de962bdSlukemchangetype: modrdn
1622de962bdSlukemnewrdn: ou=Renamed child
1632de962bdSlukemdeleteoldrdn: 0
1642de962bdSlukemnewsuperior: ou=Another parent,dc=example,dc=com
1652de962bdSlukemEOMODS3
1662de962bdSlukemRC=$?
1672de962bdSlukemif test $RC != 0 ; then
1682de962bdSlukem	echo "ldapadd failed ($RC)!"
1692de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1702de962bdSlukem	exit $RC
1712de962bdSlukemfi
1722de962bdSlukem
1732de962bdSlukemecho "Searching all database..."
1742de962bdSlukemecho "# Searching all database (after PASS3)..." >> $SEARCHOUT
175*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1762de962bdSlukem	'(objectClass=*)' >> $SEARCHOUT 2>&1
1772de962bdSlukemRC=$?
1782de962bdSlukemif test $RC != 0 ; then
1792de962bdSlukem	echo "ldapsearch failed ($RC)!"
1802de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1812de962bdSlukem	exit $RC
1822de962bdSlukemfi
1832de962bdSlukem
1842de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
1852de962bdSlukem
1862de962bdSlukemLDIF=$SUBTREERENAMEOUT
1872de962bdSlukem
1882de962bdSlukemecho "Filtering ldapsearch results..."
189ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
1902de962bdSlukemecho "Filtering original ldif used to create database..."
191ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT
1922de962bdSlukemecho "Comparing filter output..."
1932de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
1942de962bdSlukem
1952de962bdSlukemif test $? != 0 ; then
1962de962bdSlukem	echo "Comparison failed"
1972de962bdSlukem	exit 1
1982de962bdSlukemfi
1992de962bdSlukem
2002de962bdSlukemecho ">>>>> Test succeeded"
2012de962bdSlukem
2022de962bdSlukemtest $KILLSERVERS != no && wait
2032de962bdSlukem
2042de962bdSlukemexit 0
205