1#! /bin/sh 2## This work is part of OpenLDAP Software <http://www.openldap.org/>. 3## 4## Copyright 2004-2008 The OpenLDAP Foundation. 5## All rights reserved. 6## 7## Redistribution and use in source and binary forms, with or without 8## modification, are permitted only as authorized by the OpenLDAP 9## Public License. 10## 11## A copy of this license is available in the file LICENSE in the 12## top-level directory of the distribution or, alternatively, at 13## <http://www.OpenLDAP.org/license.html>. 14 15echo "running defines.sh" 16. $SRCDIR/scripts/defines.sh 17 18mkdir -p $TESTDIR $DBDIR1 19 20. $CONFFILTER $BACKEND $MONITORDB < $DNCONF > $CONF1 21echo "Starting slapd on TCP/IP port $PORT1..." 22$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & 23PID=$! 24if test $WAIT != 0 ; then 25 echo PID $PID 26 read foo 27fi 28KILLPIDS="$PID" 29 30sleep 1 31 32echo "Testing slapd DN parsing..." 33for i in 0 1 2 3 4 5; do 34 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ 35 'objectclass=*' > /dev/null 2>&1 36 RC=$? 37 if test $RC = 0 ; then 38 break 39 fi 40 echo "Waiting 5 seconds for slapd to start..." 41 sleep 5 42done 43 44if test $RC != 0 ; then 45 echo "ldapsearch failed ($RC)!" 46 test $KILLSERVERS != no && kill -HUP $KILLPIDS 47 exit $RC 48fi 49 50echo "Loading database..." 51$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD -c -f $LDIFDN > \ 52 $TESTOUT 2>&1 53 54cat /dev/null > $SEARCHOUT 55 56echo "Searching database..." 57echo "# Searching database..." >> $SEARCHOUT 58$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 >> $SEARCHOUT 2>&1 59 60RC=$? 61if test $RC != 0 ; then 62 echo "ldapsearch failed ($RC)!" 63 test $KILLSERVERS != no && kill -HUP $KILLPIDS 64 exit $RC 65fi 66 67DN="OU=Sales+CN=J. Smith,DC=example,DC=net" 68echo "Searching database for DN=\"$DN\"..." 69echo "# Searching database for DN=\"$DN\"..." >> $SEARCHOUT 70$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 71 "(member=$DN)" >> $SEARCHOUT 2>&1 72 73RC=$? 74if test $RC != 0 ; then 75 echo "ldapsearch failed ($RC)!" 76 test $KILLSERVERS != no && kill -HUP $KILLPIDS 77 exit $RC 78fi 79 80DN="testUUID=597ae2f6-16a6-1027-98f4-ABCDEFabcdef,DC=Example" 81echo "Searching database for entryUUID-named DN=\"$DN\"..." 82echo "# Searching database for entryUUID-named DN=\"$DN\"..." >> $SEARCHOUT 83$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 84 "(member=$DN)" \ 85 >> $SEARCHOUT 2>&1 86 87RC=$? 88if test $RC != 0 ; then 89 echo "ldapsearch failed ($RC)!" 90 test $KILLSERVERS != no && kill -HUP $KILLPIDS 91 exit $RC 92fi 93 94DN="dc=example,dc=com" 95echo "Searching database for nameAndOptionalUID=\"$DN\"..." 96echo "# Searching database for nameAndOptionalUID=\"$DN\"..." >> $SEARCHOUT 97$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 98 "(uniqueMember=$DN)" >> $SEARCHOUT 2>&1 99 100RC=$? 101if test $RC != 0 ; then 102 echo "ldapsearch failed ($RC)!" 103 test $KILLSERVERS != no && kill -HUP $KILLPIDS 104 exit $RC 105fi 106 107DN="dc=example,dc=com#'001000'B" 108echo "Searching database for nameAndOptionalUID=\"$DN\"..." 109echo "# Searching database for nameAndOptionalUID=\"$DN\"..." >> $SEARCHOUT 110$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 111 "(uniqueMember=$DN)" >> $SEARCHOUT 2>&1 112 113RC=$? 114if test $RC != 0 ; then 115 echo "ldapsearch failed ($RC)!" 116 test $KILLSERVERS != no && kill -HUP $KILLPIDS 117 exit $RC 118fi 119 120DN="dc=example,dc=com" 121echo "Searching database for uniqueMember~=\"$DN\" (approx)..." 122echo "# Searching database for uniqueMember~=\"$DN\" (approx)..." >> $SEARCHOUT 123$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 124 "(uniqueMember~=)" >> $SEARCHOUT 2>&1 125 126RC=$? 127if test $RC != 0 ; then 128 echo "ldapsearch failed ($RC)!" 129 test $KILLSERVERS != no && kill -HUP $KILLPIDS 130 exit $RC 131fi 132 133DN="dc=example,dc=com#'001000'B" 134echo "Searching database for uniqueMember~=\"$DN\" (approx)..." 135echo "# Searching database for uniqueMember~=\"$DN\" (approx)..." >> $SEARCHOUT 136$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 137 "(uniqueMember~=$DN)" >> $SEARCHOUT 2>&1 138 139RC=$? 140if test $RC != 0 ; then 141 echo "ldapsearch failed ($RC)!" 142 test $KILLSERVERS != no && kill -HUP $KILLPIDS 143 exit $RC 144fi 145 146test $KILLSERVERS != no && kill -HUP $KILLPIDS 147 148echo "Filtering ldapsearch results..." 149. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT 150echo "Filtering original data..." 151. $LDIFFILTER < $DNOUT > $LDIFFLT 152echo "Comparing ldapsearch results against original..." 153$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 154 155if test $? != 0 ; then 156 echo "comparison failed - DN write operations did not complete correctly" 157 exit 1 158fi 159 160##### 161 162echo ">>>>> Test succeeded" 163 164test $KILLSERVERS != no && wait 165 166exit 0 167