xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test003-search (revision b1c86f5f087524e68db12794ee9c3e3da1ab17a0)
1#! /bin/sh
2# OpenLDAP: pkg/ldap/tests/scripts/test003-search,v 1.61.2.4 2009/01/22 00:01:18 kurt Exp
3## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4##
5## Copyright 1998-2009 The OpenLDAP Foundation.
6## All rights reserved.
7##
8## Redistribution and use in source and binary forms, with or without
9## modification, are permitted only as authorized by the OpenLDAP
10## Public License.
11##
12## A copy of this license is available in the file LICENSE in the
13## top-level directory of the distribution or, alternatively, at
14## <http://www.OpenLDAP.org/license.html>.
15
16echo "running defines.sh"
17. $SRCDIR/scripts/defines.sh
18
19mkdir -p $TESTDIR $DBDIR1
20
21echo "Running slapadd to build slapd database..."
22. $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF
23$SLAPADD -f $ADDCONF -l $LDIFORDERED
24RC=$?
25if test $RC != 0 ; then
26	echo "slapadd failed ($RC)!"
27	exit $RC
28fi
29
30echo "Running slapindex to index slapd database..."
31. $CONFFILTER $BACKEND $MONITORDB < $CONF > $CONF1
32$SLAPINDEX -f $CONF1
33RC=$?
34if test $RC != 0 ; then
35	echo "warning: slapindex failed ($RC)"
36	echo "  assuming no indexing support"
37fi
38
39echo "Starting slapd on TCP/IP port $PORT1..."
40$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
41PID=$!
42if test $WAIT != 0 ; then
43    echo PID $PID
44    read foo
45fi
46KILLPIDS="$PID"
47
48sleep 1
49
50echo "Testing slapd searching..."
51for i in 0 1 2 3 4 5; do
52	$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
53		'(objectclass=*)' > /dev/null 2>&1
54	RC=$?
55	if test $RC = 0 ; then
56		break
57	fi
58	echo "Waiting 5 seconds for slapd to start..."
59	sleep 5
60done
61
62if test $RC != 0 ; then
63	echo "ldapsearch failed ($RC)!"
64	test $KILLSERVERS != no && kill -HUP $KILLPIDS
65	exit $RC
66fi
67
68cat /dev/null > $SEARCHOUT
69
70echo "Testing exact searching..."
71$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
72	'(sn=jENSEN)' >> $SEARCHOUT 2>&1
73RC=$?
74if test $RC != 0 ; then
75	echo "ldapsearch failed ($RC)!"
76	test $KILLSERVERS != no && kill -HUP $KILLPIDS
77	exit $RC
78fi
79
80echo "Testing approximate searching..."
81$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
82	'(sn~=jENSEN)' name >> $SEARCHOUT 2>&1
83RC=$?
84if test $RC != 0 ; then
85	echo "ldapsearch failed ($RC)!"
86	test $KILLSERVERS != no && kill -HUP $KILLPIDS
87	exit $RC
88fi
89
90echo "Testing OR searching..."
91$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
92	'(|(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
93RC=$?
94if test $RC != 0 ; then
95	echo "ldapsearch failed ($RC)!"
96	test $KILLSERVERS != no && kill -HUP $KILLPIDS
97	exit $RC
98fi
99
100echo "Testing AND matching and ends-with searching..."
101$LDAPSEARCH -S "" -b "ou=groups,$BASEDN" -s one -h $LOCALHOST -p $PORT1 \
102	'(&(objectclass=groupofnames)(cn=A*)(member=cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com))' >> $SEARCHOUT 2>&1
103RC=$?
104if test $RC != 0 ; then
105	echo "ldapsearch failed ($RC)!"
106	test $KILLSERVERS != no && kill -HUP $KILLPIDS
107	exit $RC
108fi
109
110echo "Testing NOT searching..."
111$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
112	'(!(objectclass=pilotPerson))' >> $SEARCHOUT 2>&1
113RC=$?
114if test $RC != 0 ; then
115	echo "ldapsearch failed ($RC)!"
116	test $KILLSERVERS != no && kill -HUP $KILLPIDS
117	exit $RC
118fi
119
120echo "Testing objectClass/attributeType inheritance ..."
121$LDAPSEARCH -M -a never -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
122	'(&(objectClass=inetorgperson)(userid=uham))' \
123	"2.5.4.0" "userid" >> $SEARCHOUT 2>&1
124RC=$?
125if test $RC != 0 ; then
126	echo "ldapsearch failed ($RC)!"
127	test $KILLSERVERS != no && kill -HUP $KILLPIDS
128	exit $RC
129fi
130
131test $KILLSERVERS != no && kill -HUP $KILLPIDS
132
133LDIF=$SEARCHOUTMASTER
134
135echo "Filtering ldapsearch results..."
136. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
137echo "Filtering original ldif used to create database..."
138. $LDIFFILTER < $LDIF > $LDIFFLT
139echo "Comparing filter output..."
140$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
141
142if test $? != 0 ; then
143	echo "Comparison failed"
144	exit 1
145fi
146
147echo ">>>>> Test succeeded"
148
149test $KILLSERVERS != no && wait
150
151exit 0
152