xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test003-search (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 "Running slapadd to build slapd database..."
22*e670fd5cSchristos. $CONFFILTER $BACKEND < $MCONF > $ADDCONF
232de962bdSlukem$SLAPADD -f $ADDCONF -l $LDIFORDERED
242de962bdSlukemRC=$?
252de962bdSlukemif test $RC != 0 ; then
262de962bdSlukem	echo "slapadd failed ($RC)!"
272de962bdSlukem	exit $RC
282de962bdSlukemfi
292de962bdSlukem
302de962bdSlukemecho "Running slapindex to index slapd database..."
31*e670fd5cSchristos. $CONFFILTER $BACKEND < $CONF > $CONF1
322de962bdSlukem$SLAPINDEX -f $CONF1
332de962bdSlukemRC=$?
342de962bdSlukemif test $RC != 0 ; then
352de962bdSlukem	echo "warning: slapindex failed ($RC)"
362de962bdSlukem	echo "  assuming no indexing support"
372de962bdSlukemfi
382de962bdSlukem
392de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
40*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
412de962bdSlukemPID=$!
422de962bdSlukemif test $WAIT != 0 ; then
432de962bdSlukem    echo PID $PID
442de962bdSlukem    read foo
452de962bdSlukemfi
462de962bdSlukemKILLPIDS="$PID"
472de962bdSlukem
482de962bdSlukemsleep 1
492de962bdSlukem
502de962bdSlukemecho "Testing slapd searching..."
512de962bdSlukemfor i in 0 1 2 3 4 5; do
52*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
532de962bdSlukem		'(objectclass=*)' > /dev/null 2>&1
542de962bdSlukem	RC=$?
552de962bdSlukem	if test $RC = 0 ; then
562de962bdSlukem		break
572de962bdSlukem	fi
582de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
592de962bdSlukem	sleep 5
602de962bdSlukemdone
612de962bdSlukem
622de962bdSlukemif test $RC != 0 ; then
632de962bdSlukem	echo "ldapsearch failed ($RC)!"
642de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
652de962bdSlukem	exit $RC
662de962bdSlukemfi
672de962bdSlukem
682de962bdSlukemecho "Testing exact searching..."
69d11b170bStronecho "# Testing exact searching..." > $SEARCHOUT
70*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
712de962bdSlukem	'(sn=jENSEN)' >> $SEARCHOUT 2>&1
722de962bdSlukemRC=$?
732de962bdSlukemif test $RC != 0 ; then
742de962bdSlukem	echo "ldapsearch failed ($RC)!"
752de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
762de962bdSlukem	exit $RC
772de962bdSlukemfi
782de962bdSlukem
792de962bdSlukemecho "Testing approximate searching..."
80d11b170bStronecho "# Testing approximate searching..." >> $SEARCHOUT
81*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
822de962bdSlukem	'(sn~=jENSEN)' name >> $SEARCHOUT 2>&1
832de962bdSlukemRC=$?
842de962bdSlukemif test $RC != 0 ; then
852de962bdSlukem	echo "ldapsearch failed ($RC)!"
862de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
872de962bdSlukem	exit $RC
882de962bdSlukemfi
892de962bdSlukem
902de962bdSlukemecho "Testing OR searching..."
91d11b170bStronecho "# Testing OR searching..." >> $SEARCHOUT
92*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
932de962bdSlukem	'(|(givenname=Xx*yY*Z)(cn=)(undef=*)(objectclass=groupofnames)(sn=jones)(member=cn=Manager,dc=example,dc=com)(uniqueMember=cn=Manager,dc=example,dc=com))' >> $SEARCHOUT 2>&1
942de962bdSlukemRC=$?
952de962bdSlukemif test $RC != 0 ; then
962de962bdSlukem	echo "ldapsearch failed ($RC)!"
972de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
982de962bdSlukem	exit $RC
992de962bdSlukemfi
1002de962bdSlukem
1012de962bdSlukemecho "Testing AND matching and ends-with searching..."
102d11b170bStronecho "# Testing AND matching and ends-with searching..." >> $SEARCHOUT
103*e670fd5cSchristos$LDAPSEARCH -S "" -b "ou=groups,$BASEDN" -s one -H $URI1 \
1042de962bdSlukem	'(&(objectclass=groupofnames)(cn=A*)(member=cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com))' >> $SEARCHOUT 2>&1
1052de962bdSlukemRC=$?
1062de962bdSlukemif test $RC != 0 ; then
1072de962bdSlukem	echo "ldapsearch failed ($RC)!"
1082de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1092de962bdSlukem	exit $RC
1102de962bdSlukemfi
1112de962bdSlukem
1122de962bdSlukemecho "Testing NOT searching..."
113d11b170bStronecho "# Testing NOT searching..." >> $SEARCHOUT
114*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1152de962bdSlukem	'(!(objectclass=pilotPerson))' >> $SEARCHOUT 2>&1
1162de962bdSlukemRC=$?
1172de962bdSlukemif test $RC != 0 ; then
1182de962bdSlukem	echo "ldapsearch failed ($RC)!"
1192de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1202de962bdSlukem	exit $RC
1212de962bdSlukemfi
1222de962bdSlukem
1232de962bdSlukemecho "Testing objectClass/attributeType inheritance ..."
124d11b170bStronecho "# Testing objectClass/attributeType inheritance ..." >> $SEARCHOUT
125*e670fd5cSchristos$LDAPSEARCH -M -a never -S "" -b "$BASEDN" -H $URI1 \
1262de962bdSlukem	'(&(objectClass=inetorgperson)(userid=uham))' \
1272de962bdSlukem	"2.5.4.0" "userid" >> $SEARCHOUT 2>&1
1282de962bdSlukemRC=$?
1292de962bdSlukemif test $RC != 0 ; then
1302de962bdSlukem	echo "ldapsearch failed ($RC)!"
1312de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1322de962bdSlukem	exit $RC
1332de962bdSlukemfi
1342de962bdSlukem
1352de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
1362de962bdSlukem
137*e670fd5cSchristosLDIF=$SEARCHOUTPROVIDER
1382de962bdSlukem
1392de962bdSlukemecho "Filtering ldapsearch results..."
140ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
1412de962bdSlukemecho "Filtering original ldif used to create database..."
142ef2f90d3Sadam$LDIFFILTER < $LDIF > $LDIFFLT
1432de962bdSlukemecho "Comparing filter output..."
1442de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
1452de962bdSlukem
1462de962bdSlukemif test $? != 0 ; then
1472de962bdSlukem	echo "Comparison failed"
1482de962bdSlukem	exit 1
1492de962bdSlukemfi
1502de962bdSlukem
1512de962bdSlukemecho ">>>>> Test succeeded"
1522de962bdSlukem
1532de962bdSlukemtest $KILLSERVERS != no && wait
1542de962bdSlukem
1552de962bdSlukemexit 0
156