xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test009-referral (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
192de962bdSlukem#
202de962bdSlukem# Test default referral
212de962bdSlukem#
222de962bdSlukem
232de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2
242de962bdSlukem
252de962bdSlukemecho "Running slapadd to build slapd database..."
26*e670fd5cSchristos. $CONFFILTER $BACKEND < $CONF > $CONF1
272de962bdSlukem$SLAPADD -f $CONF1 -l $LDIFORDERED
282de962bdSlukemRC=$?
292de962bdSlukemif test $RC != 0 ; then
302de962bdSlukem	echo "slapadd failed ($RC)!"
312de962bdSlukem	exit $RC
322de962bdSlukemfi
332de962bdSlukem
34*e670fd5cSchristosecho "Starting provider slapd on TCP/IP port $PORT1..."
35*e670fd5cSchristos$SLAPD -n provider -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
362de962bdSlukemPID=$!
372de962bdSlukemif test $WAIT != 0 ; then
382de962bdSlukem    echo PID $PID
392de962bdSlukem    read foo
402de962bdSlukemfi
412de962bdSlukem
42*e670fd5cSchristosecho "Starting consumer slapd on TCP/IP port $PORT2..."
43*e670fd5cSchristos. $CONFFILTER $BACKEND < $REFCONSUMERCONF > $CONF2
44*e670fd5cSchristos$SLAPD -n consumer -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
45*e670fd5cSchristosCONSUMERPID=$!
462de962bdSlukemif test $WAIT != 0 ; then
47*e670fd5cSchristos    echo CONSUMERPID $CONSUMERPID
482de962bdSlukem    read foo
492de962bdSlukemfi
502de962bdSlukem
51*e670fd5cSchristosKILLPIDS="$PID $CONSUMERPID"
522de962bdSlukem
532de962bdSlukemsleep 1
542de962bdSlukem
55*e670fd5cSchristosecho "Testing for provider slapd..."
562de962bdSlukemfor i in 0 1 2 3 4 5; do
57*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
582de962bdSlukem		'objectclass=*' > /dev/null 2>&1
592de962bdSlukem	RC=$?
602de962bdSlukem	if test $RC = 0 ; then
612de962bdSlukem		break
622de962bdSlukem	fi
63*e670fd5cSchristos	echo "Waiting 5 seconds for provider slapd to start..."
642de962bdSlukem	sleep 5
652de962bdSlukemdone
662de962bdSlukem
672de962bdSlukemif test $RC != 0 ; then
682de962bdSlukem	echo "ldapsearch failed ($RC)!"
692de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
702de962bdSlukem	exit $RC
712de962bdSlukemfi
722de962bdSlukem
73*e670fd5cSchristosecho "Testing for consumer slapd..."
742de962bdSlukemfor i in 0 1 2 3 4 5; do
75*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
762de962bdSlukem		'objectclass=*' > /dev/null 2>&1
772de962bdSlukem	RC=$?
782de962bdSlukem	if test $RC = 0 ; then
792de962bdSlukem		break
802de962bdSlukem	fi
81*e670fd5cSchristos	echo "Waiting 5 seconds for consumer slapd to start..."
822de962bdSlukem	sleep 5
832de962bdSlukemdone
842de962bdSlukem
852de962bdSlukemcat /dev/null > $SEARCHOUT
862de962bdSlukem
872de962bdSlukemecho "Testing exact searching..."
88*e670fd5cSchristos$LDAPSEARCH -C -S "" -b "$BASEDN" -H $URI2 \
892de962bdSlukem	'sn=jensen' >> $SEARCHOUT 2>&1
902de962bdSlukemRC=$?
912de962bdSlukemif test $RC != 0 ; then
922de962bdSlukem	echo "ldapsearch failed ($RC)!"
932de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
942de962bdSlukem	exit $RC
952de962bdSlukemfi
962de962bdSlukem
972de962bdSlukemecho "Testing approximate searching..."
98*e670fd5cSchristos$LDAPSEARCH -C -S "" -b "$BASEDN" -H $URI2 \
992de962bdSlukem	'(sn=jENSEN)' name >> $SEARCHOUT 2>&1
1002de962bdSlukemRC=$?
1012de962bdSlukemif test $RC != 0 ; then
1022de962bdSlukem	echo "ldapsearch failed ($RC)!"
1032de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1042de962bdSlukem	exit $RC
1052de962bdSlukemfi
1062de962bdSlukem
1072de962bdSlukemecho "Testing OR searching..."
108*e670fd5cSchristos$LDAPSEARCH -C -S "" -b "$BASEDN" -H $URI2 \
1092de962bdSlukem	'(|(objectclass=groupofnames)(objectClass=groupofuniquenames)(sn=jones))' >> $SEARCHOUT 2>&1
1102de962bdSlukemRC=$?
1112de962bdSlukemif test $RC != 0 ; then
1122de962bdSlukem	echo "ldapsearch failed ($RC)!"
1132de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1142de962bdSlukem	exit $RC
1152de962bdSlukemfi
1162de962bdSlukem
1172de962bdSlukemecho "Testing AND matching and ends-with searching..."
118*e670fd5cSchristos$LDAPSEARCH -C -S "" -b "ou=groups,$BASEDN" -s one -H $URI2 \
1192de962bdSlukem	'(&(objectclass=groupofnames)(cn=A*))' >> $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
1272de962bdSlukemecho "Testing NOT searching..."
128*e670fd5cSchristos$LDAPSEARCH -C -S "" -b "$BASEDN" -H $URI2 \
1292de962bdSlukem	'(!(objectclass=pilotPerson))' >> $SEARCHOUT 2>&1
1302de962bdSlukemRC=$?
1312de962bdSlukemif test $RC != 0 ; then
1322de962bdSlukem	echo "ldapsearch failed ($RC)!"
1332de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1342de962bdSlukem	exit $RC
1352de962bdSlukemfi
1362de962bdSlukem
1372de962bdSlukemecho "Testing objectClass/attributeType inheritance ..."
138*e670fd5cSchristos$LDAPSEARCH -M -a never -S "" -b "$BASEDN" -H $URI1 \
1392de962bdSlukem	'(&(objectClass=inetorgperson)(userid=uham))' \
1402de962bdSlukem	"2.5.4.0" "userid" >> $SEARCHOUT 2>&1
1412de962bdSlukemRC=$?
1422de962bdSlukemif test $RC != 0 ; then
1432de962bdSlukem	echo "ldapsearch failed ($RC)!"
1442de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1452de962bdSlukem	exit $RC
1462de962bdSlukemfi
1472de962bdSlukem
1482de962bdSlukemecho "Testing dontUseCopy control..."
149*e670fd5cSchristos$LDAPSEARCH -C -S "" -b "$BASEDN" -H $URI2 \
1502de962bdSlukem	-E \!dontUseCopy \
1512de962bdSlukem	'sn=jensen' >> $SEARCHOUT
1522de962bdSlukemRC=$?
1532de962bdSlukemif test $RC = 10 ; then
1542de962bdSlukem	echo "ldapsearch failed as expected ($RC)"
1552de962bdSlukemelse
1562de962bdSlukem	echo "ldapsearch did not error as expected ($RC)!"
1572de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1582de962bdSlukem	exit $RC
1592de962bdSlukemfi
1602de962bdSlukem
1612de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
1622de962bdSlukem
163*e670fd5cSchristosLDIF=$SEARCHOUTPROVIDER
1642de962bdSlukem
1652de962bdSlukemecho "Filtering ldapsearch results..."
166ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
1672de962bdSlukemecho "Filtering original ldif used to create database..."
168ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT
1692de962bdSlukemecho "Comparing filter output..."
1702de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
1712de962bdSlukem
1722de962bdSlukemif test $? != 0 ; then
1732de962bdSlukem	echo "Comparison failed"
1742de962bdSlukem	exit 1
1752de962bdSlukemfi
1762de962bdSlukem
1772de962bdSlukemecho ">>>>> Test succeeded"
1782de962bdSlukem
1792de962bdSlukemtest $KILLSERVERS != no && wait
1802de962bdSlukem
1812de962bdSlukemexit 0
182