xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test035-meta (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
192de962bdSlukemecho ""
202de962bdSlukem
212de962bdSlukemif test $BACKMETA = metano ; then
222de962bdSlukem	echo "meta backend not available, test skipped"
232de962bdSlukem	exit 0
242de962bdSlukemfi
252de962bdSlukem
26bb30016cSlukemif test $BACKLDAP = ldapno ; then
27bb30016cSlukem	echo "ldap backend not available, test skipped"
28bb30016cSlukem	exit 0
29bb30016cSlukemfi
30bb30016cSlukem
312de962bdSlukemrm -rf $TESTDIR
322de962bdSlukem
332de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2
342de962bdSlukem
352de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
36*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF1 > $CONF1
37*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
382de962bdSlukemPID=$!
392de962bdSlukemif test $WAIT != 0 ; then
402de962bdSlukem    echo PID $PID
412de962bdSlukem    read foo
422de962bdSlukemfi
432de962bdSlukemKILLPIDS="$PID"
442de962bdSlukem
452de962bdSlukemsleep 1
462de962bdSlukem
472de962bdSlukemecho "Using ldapsearch to check that slapd is running..."
482de962bdSlukemfor i in 0 1 2 3 4 5; do
49*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
502de962bdSlukem		'objectclass=*' > /dev/null 2>&1
512de962bdSlukem	RC=$?
522de962bdSlukem	if test $RC = 0 ; then
532de962bdSlukem		break
542de962bdSlukem	fi
552de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
562de962bdSlukem	sleep 5
572de962bdSlukemdone
582de962bdSlukemif test $RC != 0 ; then
592de962bdSlukem	echo "ldapsearch failed ($RC)!"
602de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
612de962bdSlukem	exit $RC
622de962bdSlukemfi
632de962bdSlukem
642de962bdSlukemecho "Using ldapadd to populate the database..."
65*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
662de962bdSlukem	$LDIFORDERED > $TESTOUT 2>&1
672de962bdSlukemRC=$?
682de962bdSlukemif test $RC != 0 ; then
692de962bdSlukem	echo "ldapadd failed ($RC)!"
702de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
712de962bdSlukem	exit $RC
722de962bdSlukemfi
732de962bdSlukem
742de962bdSlukemecho "Starting slapd on TCP/IP port $PORT2..."
75*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF2 > $CONF2
76*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
772de962bdSlukemPID=$!
782de962bdSlukemif test $WAIT != 0 ; then
792de962bdSlukem    echo PID $PID
802de962bdSlukem    read foo
812de962bdSlukemfi
822de962bdSlukemKILLPIDS="$KILLPIDS $PID"
832de962bdSlukem
842de962bdSlukemsleep 1
852de962bdSlukem
862de962bdSlukemecho "Using ldapsearch to check that slapd is running..."
872de962bdSlukemfor i in 0 1 2 3 4 5; do
88*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
892de962bdSlukem		'objectclass=*' > /dev/null 2>&1
902de962bdSlukem	RC=$?
912de962bdSlukem	if test $RC = 0 ; then
922de962bdSlukem		break
932de962bdSlukem	fi
942de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
952de962bdSlukem	sleep 5
962de962bdSlukemdone
972de962bdSlukemif test $RC != 0 ; then
982de962bdSlukem	echo "ldapsearch failed ($RC)!"
992de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1002de962bdSlukem	exit $RC
1012de962bdSlukemfi
1022de962bdSlukem
1032de962bdSlukemecho "Using ldapadd to populate the database..."
104*e670fd5cSchristos$LDAPADD -D "$METAMANAGERDN" -H $URI2 -w $PASSWD < \
1052de962bdSlukem	$LDIFMETA >> $TESTOUT 2>&1
1062de962bdSlukemRC=$?
1072de962bdSlukemif test $RC != 0 ; then
1082de962bdSlukem	echo "ldapadd failed ($RC)!"
1092de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1102de962bdSlukem	exit $RC
1112de962bdSlukemfi
1122de962bdSlukem
1132de962bdSlukemecho "Starting slapd on TCP/IP port $PORT3..."
114*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF > $CONF3
115*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 &
1162de962bdSlukemPID=$!
1172de962bdSlukemif test $WAIT != 0 ; then
1182de962bdSlukem    echo PID $PID
1192de962bdSlukem    read foo
1202de962bdSlukemfi
1212de962bdSlukemKILLPIDS="$KILLPIDS $PID"
1222de962bdSlukem
1232de962bdSlukemsleep 1
1242de962bdSlukem
1252de962bdSlukemecho "Using ldapsearch to check that slapd is running..."
1262de962bdSlukemfor i in 0 1 2 3 4 5; do
127*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \
1282de962bdSlukem		'objectclass=*' > /dev/null 2>&1
1292de962bdSlukem	RC=$?
1302de962bdSlukem	if test $RC = 0 ; then
1312de962bdSlukem		break
1322de962bdSlukem	fi
1332de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
1342de962bdSlukem	sleep 5
1352de962bdSlukemdone
1362de962bdSlukemif test $RC != 0 ; then
1372de962bdSlukem	echo "ldapsearch failed ($RC)!"
1382de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1392de962bdSlukem	exit $RC
1402de962bdSlukemfi
1412de962bdSlukem
1422de962bdSlukemcat /dev/null > $SEARCHOUT
1432de962bdSlukem
1442de962bdSlukemBASEDN="o=Example,c=US"
1452de962bdSlukemecho "Searching base=\"$BASEDN\"..."
1462de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
147*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
1482de962bdSlukemRC=$?
1492de962bdSlukem#if test $RC != 0 ; then
1502de962bdSlukem#	echo "Search failed ($RC)!"
1512de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1522de962bdSlukem#	exit $RC
1532de962bdSlukem#fi
1542de962bdSlukemcase $RC in
1552de962bdSlukem	0)
1562de962bdSlukem	;;
1572de962bdSlukem	51)
1582de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
1592de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
1602de962bdSlukem		exit 0
1612de962bdSlukem	;;
1622de962bdSlukem	*)
1632de962bdSlukem		echo "Search failed ($RC)!"
1642de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
1652de962bdSlukem		exit $RC
1662de962bdSlukem	;;
1672de962bdSlukemesac
1682de962bdSlukem
1692de962bdSlukem# ITS#4195: spurious matchedDN when the search scopes the main target,
1702de962bdSlukem# and the searchBase is not present, so that target returns noSuchObject
1712de962bdSlukemBASEDN="ou=Meta,o=Example,c=US"
1722de962bdSlukemecho "Searching base=\"$BASEDN\"..."
1732de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
174*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
1752de962bdSlukemRC=$?
1762de962bdSlukem#if test $RC != 0 ; then
1772de962bdSlukem#	echo "Search failed ($RC)!"
1782de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1792de962bdSlukem#	exit $RC
1802de962bdSlukem#fi
1812de962bdSlukemcase $RC in
1822de962bdSlukem	0)
1832de962bdSlukem	;;
1842de962bdSlukem	51)
1852de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
1862de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
1872de962bdSlukem		exit 0
1882de962bdSlukem	;;
1892de962bdSlukem	*)
1902de962bdSlukem		echo "Search failed ($RC)!"
1912de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
1922de962bdSlukem		exit $RC
1932de962bdSlukem	;;
1942de962bdSlukemesac
1952de962bdSlukem
1962de962bdSlukem#
1972de962bdSlukem# Do some modifications
1982de962bdSlukem#
1992de962bdSlukem
2002de962bdSlukemBASEDN="o=Example,c=US"
2012de962bdSlukemecho "Modifying database \"$BASEDN\"..."
202*e670fd5cSchristos$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI3 -w $PASSWD \
2032de962bdSlukem	-M >> $TESTOUT 2>&1 << EOMODS
2042de962bdSlukem# These operations (updates with objectClass mapping) triggered ITS#3499
2052de962bdSlukemdn: cn=Added Group,ou=Groups,$BASEDN
2062de962bdSlukemchangetype: add
2072de962bdSlukemobjectClass: groupOfNames
2082de962bdSlukemobjectClass: uidObject
2092de962bdSlukemcn: Added Group
2102de962bdSlukemmember: cn=Added Group,ou=Groups,$BASEDN
2112de962bdSlukemuid: added
2122de962bdSlukem
2132de962bdSlukemdn: cn=Another Added Group,ou=Groups,$BASEDN
2142de962bdSlukemchangetype: add
2152de962bdSlukemobjectClass: groupOfNames
2162de962bdSlukemcn: Another Added Group
2172de962bdSlukemmember: cn=Added Group,ou=Groups,$BASEDN
2182de962bdSlukemmember: cn=Another Added Group,ou=Groups,$BASEDN
2192de962bdSlukem
2202de962bdSlukemdn: cn=Another Added Group,ou=Groups,$BASEDN
2212de962bdSlukemchangetype: modify
2222de962bdSlukemadd: objectClass
2232de962bdSlukemobjectClass: uidObject
2242de962bdSlukem-
2252de962bdSlukemadd: uid
2262de962bdSlukemuid: added
2272de962bdSlukem-
2282de962bdSlukem
2292de962bdSlukemdn: cn=Added Group,ou=Groups,$BASEDN
2302de962bdSlukemchangetype: modify
2312de962bdSlukemdelete: objectClass
2322de962bdSlukemobjectClass: uidObject
2332de962bdSlukem-
2342de962bdSlukemdelete: uid
2352de962bdSlukem-
2362de962bdSlukem
2372de962bdSlukemdn: ou=Meta,$BASEDN
2382de962bdSlukemchangetype: modify
2392de962bdSlukemadd: description
2402de962bdSlukemdescription: added to "ou=Meta,$BASEDN"
2412de962bdSlukem-
2422de962bdSlukem
2432de962bdSlukemdn: ou=Who's going to handle this?,$BASEDN
2442de962bdSlukemchangetype: add
2452de962bdSlukemobjectClass: organizationalUnit
2462de962bdSlukemou: Who's going to handle this?
2472de962bdSlukemdescription: added
2482de962bdSlukemdescription: will be deleted
2492de962bdSlukem
2502de962bdSlukemdn: ou=Same as above,$BASEDN
2512de962bdSlukemchangetype: add
2522de962bdSlukemobjectClass: organizationalUnit
2532de962bdSlukemou: Same as above
2542de962bdSlukemdescription: added right after "Who's going to handle this?"
2552de962bdSlukemdescription: will be preserved
2562de962bdSlukem
2572de962bdSlukemdn: ou=Who's going to handle this?,$BASEDN
2582de962bdSlukemchangetype: delete
2592de962bdSlukem
2602de962bdSlukemdn: ou=Who's going to handle this?,ou=Meta,$BASEDN
2612de962bdSlukemchangetype: add
2622de962bdSlukemobjectClass: organizationalUnit
2632de962bdSlukemou: Who's going to handle this?
2642de962bdSlukemdescription: added
2652de962bdSlukemdescription: will be deleted
2662de962bdSlukem
2672de962bdSlukemdn: ou=Same as above,ou=Meta,$BASEDN
2682de962bdSlukemchangetype: add
2692de962bdSlukemobjectClass: organizationalUnit
2702de962bdSlukemou: Same as above
2712de962bdSlukemdescription: added right after "Who's going to handle this?"
2722de962bdSlukemdescription: will be preserved
2732de962bdSlukem
2742de962bdSlukemdn: cn=Added User,ou=Same as above,ou=Meta,$BASEDN
2752de962bdSlukemchangetype: add
2762de962bdSlukemobjectClass: inetOrgPerson
2772de962bdSlukemcn: Added User
2782de962bdSlukemsn: User
2792de962bdSlukemuserPassword: secret
2802de962bdSlukem
2812de962bdSlukemdn: ou=Who's going to handle this?,ou=Meta,$BASEDN
2822de962bdSlukemchangetype: delete
2832de962bdSlukemEOMODS
2842de962bdSlukem
2852de962bdSlukemRC=$?
2862de962bdSlukem#if test $RC != 0 ; then
2872de962bdSlukem#	echo "Modify failed ($RC)!"
2882de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
2892de962bdSlukem#	exit $RC
2902de962bdSlukem#fi
2912de962bdSlukemcase $RC in
2922de962bdSlukem	0)
2932de962bdSlukem	;;
2942de962bdSlukem	51)
2952de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
2962de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
2972de962bdSlukem		exit 0
2982de962bdSlukem	;;
2992de962bdSlukem	*)
3002de962bdSlukem		echo "Modify failed ($RC)!"
3012de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3022de962bdSlukem		exit $RC
3032de962bdSlukem	;;
3042de962bdSlukemesac
3052de962bdSlukem
3062de962bdSlukemecho "Searching base=\"$BASEDN\"..."
3072de962bdSlukemecho "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
308*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
3092de962bdSlukemRC=$?
3102de962bdSlukem#if test $RC != 0 ; then
3112de962bdSlukem#	echo "Search failed ($RC)!"
3122de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3132de962bdSlukem#	exit $RC
3142de962bdSlukem#fi
3152de962bdSlukemcase $RC in
3162de962bdSlukem	0)
3172de962bdSlukem	;;
3182de962bdSlukem	51)
3192de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
3202de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3212de962bdSlukem		exit 0
3222de962bdSlukem	;;
3232de962bdSlukem	*)
3242de962bdSlukem		echo "Search failed ($RC)!"
3252de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3262de962bdSlukem		exit $RC
3272de962bdSlukem	;;
3282de962bdSlukemesac
3292de962bdSlukem
3302de962bdSlukemBASEDN="o=Example,c=US"
3312de962bdSlukemecho "	base=\"$BASEDN\"..."
3322de962bdSlukemecho "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
333*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" -M "$FILTER" '*' ref \
3342de962bdSlukem	>> $SEARCHOUT 2>&1
3352de962bdSlukemRC=$?
3362de962bdSlukem#if test $RC != 0 ; then
3372de962bdSlukem#	echo "Search failed ($RC)!"
3382de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3392de962bdSlukem#	exit $RC
3402de962bdSlukem#fi
3412de962bdSlukemcase $RC in
3422de962bdSlukem	0)
3432de962bdSlukem	;;
3442de962bdSlukem	51)
3452de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
3462de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3472de962bdSlukem		exit 0
3482de962bdSlukem	;;
3492de962bdSlukem	*)
3502de962bdSlukem		echo "Search failed ($RC)!"
3512de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3522de962bdSlukem		exit $RC
3532de962bdSlukem	;;
3542de962bdSlukemesac
3552de962bdSlukem
3562de962bdSlukemBASEDN="o=Example,c=US"
3572de962bdSlukemFILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
3582de962bdSlukemecho "Searching filter=\"$FILTER\""
3592de962bdSlukemecho "	attrs=\"seeAlso\""
3602de962bdSlukemecho "	base=\"$BASEDN\"..."
3612de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT
3622de962bdSlukemecho "# 	attrs=\"seeAlso\"" >> $SEARCHOUT
3632de962bdSlukemecho "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
364*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" seeAlso \
3652de962bdSlukem	>> $SEARCHOUT 2>&1
3662de962bdSlukemRC=$?
3672de962bdSlukem#if test $RC != 0 ; then
3682de962bdSlukem#	echo "Search failed ($RC)!"
3692de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
3702de962bdSlukem#	exit $RC
3712de962bdSlukem#fi
3722de962bdSlukemcase $RC in
3732de962bdSlukem	0)
3742de962bdSlukem	;;
3752de962bdSlukem	51)
3762de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
3772de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3782de962bdSlukem		exit 0
3792de962bdSlukem	;;
3802de962bdSlukem	*)
3812de962bdSlukem		echo "Search failed ($RC)!"
3822de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
3832de962bdSlukem		exit $RC
3842de962bdSlukem	;;
3852de962bdSlukemesac
3862de962bdSlukem
3872de962bdSlukemFILTER="(uid=example)"
3882de962bdSlukemecho "Searching filter=\"$FILTER\""
3892de962bdSlukemecho "	attrs=\"uid\""
3902de962bdSlukemecho "	base=\"$BASEDN\"..."
3912de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT
3922de962bdSlukemecho "# 	attrs=\"uid\"" >> $SEARCHOUT
3932de962bdSlukemecho "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
394*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" uid \
3952de962bdSlukem	>> $SEARCHOUT 2>&1
3962de962bdSlukemRC=$?
3972de962bdSlukem#if test $RC != 0 ; then
3982de962bdSlukem#	echo "Search failed ($RC)!"
3992de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4002de962bdSlukem#	exit $RC
4012de962bdSlukem#fi
4022de962bdSlukemcase $RC in
4032de962bdSlukem	0)
4042de962bdSlukem	;;
4052de962bdSlukem	51)
4062de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
4072de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4082de962bdSlukem		exit 0
4092de962bdSlukem	;;
4102de962bdSlukem	*)
4112de962bdSlukem		echo "Search failed ($RC)!"
4122de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4132de962bdSlukem		exit $RC
4142de962bdSlukem	;;
4152de962bdSlukemesac
4162de962bdSlukem
4172de962bdSlukemFILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)"
4182de962bdSlukemecho "Searching filter=\"$FILTER\""
4192de962bdSlukemecho "	attrs=\"member\""
4202de962bdSlukemecho "	base=\"$BASEDN\"..."
4212de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT
4222de962bdSlukemecho "# 	attrs=\"member\"" >> $SEARCHOUT
4232de962bdSlukemecho "# 	base=\"$BASEDN\"..." >> $SEARCHOUT
424*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" member \
4252de962bdSlukem	>> $SEARCHOUT 2>&1
4262de962bdSlukemRC=$?
4272de962bdSlukem#if test $RC != 0 ; then
4282de962bdSlukem#	echo "Search failed ($RC)!"
4292de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4302de962bdSlukem#	exit $RC
4312de962bdSlukem#fi
4322de962bdSlukemcase $RC in
4332de962bdSlukem	0)
4342de962bdSlukem	;;
4352de962bdSlukem	51)
4362de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
4372de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4382de962bdSlukem		exit 0
4392de962bdSlukem	;;
4402de962bdSlukem	*)
4412de962bdSlukem		echo "Search failed ($RC)!"
4422de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4432de962bdSlukem		exit $RC
4442de962bdSlukem	;;
4452de962bdSlukemesac
4462de962bdSlukem
4472de962bdSlukemecho "Waiting 10 seconds for cached connections to timeout..."
4482de962bdSlukemsleep 10
4492de962bdSlukem
4502de962bdSlukemecho "Searching with a timed out connection..."
4512de962bdSlukemecho "# searching filter=\"$FILTER\"" >> $SEARCHOUT
4522de962bdSlukemecho "# 	attrs=\"member\"" >> $SEARCHOUT
4532de962bdSlukemecho "# 	base=\"$BASEDN\"" >> $SEARCHOUT
4542de962bdSlukemecho "# 	with a timed out connection..." >> $SEARCHOUT
455*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
4562de962bdSlukem	-b "$BASEDN" "$FILTER" member \
4572de962bdSlukem	>> $SEARCHOUT 2>&1
4582de962bdSlukemRC=$?
4592de962bdSlukem#if test $RC != 0 ; then
4602de962bdSlukem#	echo "Search failed ($RC)!"
4612de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
4622de962bdSlukem#	exit $RC
4632de962bdSlukem#fi
4642de962bdSlukemcase $RC in
4652de962bdSlukem	0)
4662de962bdSlukem	;;
4672de962bdSlukem	51)
4682de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
4692de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4702de962bdSlukem		exit 0
4712de962bdSlukem	;;
4722de962bdSlukem	*)
4732de962bdSlukem		echo "Search failed ($RC)!"
4742de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4752de962bdSlukem		exit $RC
4762de962bdSlukem	;;
4772de962bdSlukemesac
4782de962bdSlukem
4792de962bdSlukem# NOTE: cannot send to $SEARCHOUT because the returned entries
4802de962bdSlukem# are not predictable...
4812de962bdSlukemecho "Checking server-enforced size limit..."
4822de962bdSlukemecho "# Checking server-enforced size limit..." >> $SEARCHOUT
483*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 \
4842de962bdSlukem	-D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
4852de962bdSlukem	-b "$BASEDN" "(objectClass=*)" 1.1 \
4862de962bdSlukem	>> $TESTOUT 2>&1
4872de962bdSlukemRC=$?
488ef2f90d3Sadamcase $RC,$BACKEND in
489ef2f90d3Sadam	4,* | 0,null)
490ef2f90d3Sadam	;;
491ef2f90d3Sadam	0,*)
4922de962bdSlukem		echo "Search should have failed ($RC)!"
4932de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4942de962bdSlukem		exit -1
4952de962bdSlukem	;;
4962de962bdSlukem	*)
4972de962bdSlukem		echo "Search failed ($RC)!"
4982de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
4992de962bdSlukem		exit $RC
5002de962bdSlukem	;;
5012de962bdSlukemesac
5022de962bdSlukem
5032de962bdSlukem# NOTE: cannot send to $SEARCHOUT because the returned entries
5042de962bdSlukem# are not predictable...
5052de962bdSlukemecho "Checking client-requested size limit..."
5062de962bdSlukemecho "# Checking client-requested size limit..." >> $SEARCHOUT
507*e670fd5cSchristos$LDAPSEARCH -S "" -H $URI3 \
5082de962bdSlukem	-D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
5092de962bdSlukem	-b "$BASEDN" -z 2 "(objectClass=*)" 1.1 \
5102de962bdSlukem	>> $TESTOUT 2>&1
5112de962bdSlukemRC=$?
512ef2f90d3Sadamcase $RC,$BACKEND in
513ef2f90d3Sadam	4,* | 0,null)
514ef2f90d3Sadam	;;
515ef2f90d3Sadam	0,*)
5162de962bdSlukem		echo "Search should have failed ($RC)!"
5172de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5182de962bdSlukem		exit -1
5192de962bdSlukem	;;
5202de962bdSlukem	*)
5212de962bdSlukem		echo "Search failed ($RC)!"
5222de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5232de962bdSlukem		exit $RC
5242de962bdSlukem	;;
5252de962bdSlukemesac
5262de962bdSlukem
5272de962bdSlukemecho "Filtering ldapsearch results..."
528ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
5292de962bdSlukemecho "Filtering original ldif used to create database..."
530ef2f90d3Sadam$LDIFFILTER < $METAOUT > $LDIFFLT
5312de962bdSlukemecho "Comparing filter output..."
5322de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
5332de962bdSlukem
5342de962bdSlukemif test $? != 0 ; then
5352de962bdSlukem	echo "comparison failed - meta search/modification didn't succeed"
5362de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5372de962bdSlukem	exit 1
5382de962bdSlukemfi
5392de962bdSlukem
5402de962bdSlukemBASEDN="o=Example,c=US"
5412de962bdSlukemecho "Changing password to database \"$BASEDN\"..."
542*e670fd5cSchristos$LDAPPASSWD -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
5432de962bdSlukem	-s $PASSWD "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
5442de962bdSlukem	>> $TESTOUT 2>&1
5452de962bdSlukemRC=$?
5462de962bdSlukem#if test $RC != 0 ; then
5472de962bdSlukem#	echo "Passwd ExOp failed ($RC)!"
5482de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5492de962bdSlukem#	exit $RC
5502de962bdSlukem#fi
5512de962bdSlukemcase $RC in
5522de962bdSlukem	0)
5532de962bdSlukem	;;
5542de962bdSlukem	51)
5552de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
5562de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5572de962bdSlukem		exit 0
5582de962bdSlukem	;;
5592de962bdSlukem	*)
5602de962bdSlukem		echo "Passwd ExOp failed ($RC)!"
5612de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5622de962bdSlukem		exit $RC
5632de962bdSlukem	;;
5642de962bdSlukemesac
5652de962bdSlukem
5662de962bdSlukemecho "Binding with newly changed password to database \"$BASEDN\"..."
567*e670fd5cSchristos$LDAPWHOAMI -H $URI3 \
5682de962bdSlukem	-D "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
5692de962bdSlukem	-w $PASSWD >> $TESTOUT 2>&1
5702de962bdSlukemRC=$?
5712de962bdSlukem#if test $RC != 0 ; then
5722de962bdSlukem#	echo "WhoAmI failed ($RC)!"
5732de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5742de962bdSlukem#	exit $RC
5752de962bdSlukem#fi
5762de962bdSlukemcase $RC in
5772de962bdSlukem	0)
5782de962bdSlukem	;;
5792de962bdSlukem	51)
5802de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
5812de962bdSlukem	;;
5822de962bdSlukem	*)
5832de962bdSlukem		echo "WhoAmI failed ($RC)!"
5842de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
5852de962bdSlukem		exit $RC
5862de962bdSlukem	;;
5872de962bdSlukemesac
5882de962bdSlukem
5892de962bdSlukemecho "Binding as newly added user to database \"$BASEDN\"..."
590*e670fd5cSchristos$LDAPWHOAMI -H $URI3 \
5912de962bdSlukem	-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
5922de962bdSlukem	-w $PASSWD >> $TESTOUT 2>&1
5932de962bdSlukemRC=$?
5942de962bdSlukem#if test $RC != 0 ; then
5952de962bdSlukem#	echo "WhoAmI failed ($RC)!"
5962de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
5972de962bdSlukem#	exit $RC
5982de962bdSlukem#fi
5992de962bdSlukemcase $RC in
6002de962bdSlukem	0)
6012de962bdSlukem	;;
6022de962bdSlukem	51)
6032de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
6042de962bdSlukem	;;
6052de962bdSlukem	*)
6062de962bdSlukem		echo "WhoAmI failed ($RC)!"
6072de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6082de962bdSlukem		exit $RC
6092de962bdSlukem	;;
6102de962bdSlukemesac
6112de962bdSlukem
6122de962bdSlukemecho "Changing password to database \"$BASEDN\"..."
613*e670fd5cSchristos$LDAPPASSWD -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
6142de962bdSlukem	-s meta "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
6152de962bdSlukem	>> $TESTOUT 2>&1
6162de962bdSlukemRC=$?
6172de962bdSlukem#if test $RC != 0 ; then
6182de962bdSlukem#	echo "Passwd ExOp failed ($RC)!"
6192de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6202de962bdSlukem#	exit $RC
6212de962bdSlukem#fi
6222de962bdSlukemcase $RC in
6232de962bdSlukem	0)
6242de962bdSlukem	;;
6252de962bdSlukem	51)
6262de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
6272de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6282de962bdSlukem		exit 0
6292de962bdSlukem	;;
6302de962bdSlukem	*)
6312de962bdSlukem		echo "Passwd ExOp failed ($RC)!"
6322de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6332de962bdSlukem		exit $RC
6342de962bdSlukem	;;
6352de962bdSlukemesac
6362de962bdSlukem
6372de962bdSlukemecho "Binding with newly changed password to database \"$BASEDN\"..."
638*e670fd5cSchristos$LDAPWHOAMI -H $URI3 \
6392de962bdSlukem	-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
6402de962bdSlukem	-w meta >> $TESTOUT 2>&1
6412de962bdSlukemRC=$?
6422de962bdSlukem#if test $RC != 0 ; then
6432de962bdSlukem#	echo "WhoAmI failed ($RC)!"
6442de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6452de962bdSlukem#	exit $RC
6462de962bdSlukem#fi
6472de962bdSlukemcase $RC in
6482de962bdSlukem	0)
6492de962bdSlukem	;;
6502de962bdSlukem	51)
6512de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
6522de962bdSlukem	;;
6532de962bdSlukem	*)
6542de962bdSlukem		echo "WhoAmI failed ($RC)!"
6552de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6562de962bdSlukem		exit $RC
6572de962bdSlukem	;;
6582de962bdSlukemesac
6592de962bdSlukem
6602de962bdSlukemecho "Binding with incorrect password to database \"$BASEDN\"..."
661*e670fd5cSchristos$LDAPWHOAMI -H $URI3 \
6622de962bdSlukem	-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
6632de962bdSlukem	-w bogus >> $TESTOUT 2>&1
6642de962bdSlukemRC=$?
6652de962bdSlukem#if test $RC != 0 ; then
6662de962bdSlukem#	echo "WhoAmI failed ($RC)!"
6672de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6682de962bdSlukem#	exit $RC
6692de962bdSlukem#fi
670ef2f90d3Sadamcase $RC,$BACKEND in
671ef2f90d3Sadam	0,null)
672ef2f90d3Sadam	;;
673ef2f90d3Sadam	0,*)
6742de962bdSlukem		echo "WhoAmI should have failed ($RC)!"
6752de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
6762de962bdSlukem		exit -1
6772de962bdSlukem	;;
678ef2f90d3Sadam	51,*)
6792de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
6802de962bdSlukem	;;
6812de962bdSlukem	*)
6822de962bdSlukem	;;
6832de962bdSlukemesac
6842de962bdSlukem
6852de962bdSlukemecho "Binding with non-existing user to database \"$BASEDN\"..."
686*e670fd5cSchristos$LDAPWHOAMI -H $URI3 \
6872de962bdSlukem	-D "cn=Non-existing User,ou=Same as above,ou=Meta,$BASEDN" \
6882de962bdSlukem	-w bogus >> $TESTOUT 2>&1
6892de962bdSlukemRC=$?
6902de962bdSlukem#if test $RC != 0 ; then
6912de962bdSlukem#	echo "WhoAmI failed ($RC)!"
6922de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
6932de962bdSlukem#	exit $RC
6942de962bdSlukem#fi
695ef2f90d3Sadamcase $RC,$BACKEND in
696ef2f90d3Sadam	0,null)
697ef2f90d3Sadam	;;
698ef2f90d3Sadam	0,*)
6992de962bdSlukem		echo "WhoAmI should have failed ($RC)!"
7002de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
7012de962bdSlukem		exit -1
7022de962bdSlukem	;;
703ef2f90d3Sadam	51,*)
7042de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
7052de962bdSlukem	;;
7062de962bdSlukem	*)
7072de962bdSlukem	;;
7082de962bdSlukemesac
7092de962bdSlukem
7102de962bdSlukemecho "Comparing to database \"$BASEDN\"..."
711*e670fd5cSchristos$LDAPCOMPARE -H $URI3 \
7122de962bdSlukem	"cn=Another Added Group,ou=Groups,$BASEDN" \
7132de962bdSlukem	"member:cn=Added Group,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
7142de962bdSlukemRC=$?
7152de962bdSlukem#if test $RC != 6 ; then
7162de962bdSlukem#	echo "Compare failed ($RC)!"
7172de962bdSlukem#	test $KILLSERVERS != no && kill -HUP $KILLPIDS
7182de962bdSlukem#	exit -1
7192de962bdSlukem#fi
720ef2f90d3Sadamcase $RC,$BACKEND in
721ef2f90d3Sadam	6,* | 5,null)
7222de962bdSlukem	;;
723ef2f90d3Sadam	51,*)
7242de962bdSlukem		echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
7252de962bdSlukem	;;
7262de962bdSlukem	*)
7272de962bdSlukem		echo "Compare failed ($RC)!"
7282de962bdSlukem		test $KILLSERVERS != no && kill -HUP $KILLPIDS
729ef2f90d3Sadam		exit 1
7302de962bdSlukem	;;
7312de962bdSlukemesac
7322de962bdSlukem
7332de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
7342de962bdSlukem
7352de962bdSlukemecho ">>>>> Test succeeded"
7362de962bdSlukem
7372de962bdSlukemtest $KILLSERVERS != no && wait
7382de962bdSlukem
7392de962bdSlukemexit 0
740