1#! /bin/sh 2# OpenLDAP: pkg/ldap/tests/scripts/test003-search,v 1.61.2.6 2010/04/19 19:14:32 quanah Exp 3## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4## 5## Copyright 1998-2010 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