1#! /bin/sh 2# OpenLDAP: pkg/ldap/tests/scripts/test040-subtree-rename,v 1.4.2.7 2010/04/19 19:14:35 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 19if test $BACKEND = bdb ; then 20 echo "subtree rename not supported by back-$BACKEND" 21 exit 0 22fi 23 24mkdir -p $TESTDIR $DBDIR1 25 26echo "Starting slapd on TCP/IP port $PORT1..." 27. $CONFFILTER $BACKEND $MONITORDB < $CONF > $CONF1 28$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & 29PID=$! 30if test $WAIT != 0 ; then 31 echo PID $PID 32 read foo 33fi 34KILLPIDS="$PID" 35 36sleep 1 37 38echo "Testing slapd searching..." 39for i in 0 1 2 3 4 5; do 40 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ 41 '(objectclass=*)' > /dev/null 2>&1 42 RC=$? 43 if test $RC = 0 ; then 44 break 45 fi 46 echo "Waiting 5 seconds for slapd to start..." 47 sleep 5 48done 49 50if test $RC != 0 ; then 51 echo "ldapsearch failed ($RC)!" 52 test $KILLSERVERS != no && kill -HUP $KILLPIDS 53 exit $RC 54fi 55 56cat /dev/null > $TESTOUT 57cat /dev/null > $SEARCHOUT 58 59# Add 60echo "Populating the database..." 61echo "# Populating the database..." >> $TESTOUT 62$LDAPADD -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \ 63 >> $TESTOUT 2>&1 << EOMODS0 64dn: dc=example,dc=com 65objectClass: organization 66objectClass: dcObject 67o: Example, Inc. 68dc: example 69 70dn: ou=Parent,dc=example,dc=com 71objectClass: organizationalUnit 72ou: Parent 73 74dn: ou=Another parent,dc=example,dc=com 75objectClass: organizationalUnit 76ou: Another parent 77 78dn: ou=Child,ou=Parent,dc=example,dc=com 79objectClass: organizationalUnit 80ou: Child 81 82dn: ou=Grandchild,ou=Child,ou=Parent,dc=example,dc=com 83objectClass: organizationalUnit 84ou: Grandchild 85EOMODS0 86RC=$? 87if test $RC != 0 ; then 88 echo "ldapadd failed ($RC)!" 89 test $KILLSERVERS != no && kill -HUP $KILLPIDS 90 exit $RC 91fi 92 93echo "Searching all database..." 94echo "# Searching all database (after add)..." >> $SEARCHOUT 95$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 96 '(objectClass=*)' >> $SEARCHOUT 2>&1 97RC=$? 98if test $RC != 0 ; then 99 echo "ldapsearch failed ($RC)!" 100 test $KILLSERVERS != no && kill -HUP $KILLPIDS 101 exit $RC 102fi 103 104# Rename (PASS1) 105echo "Renaming (PASS1)..." 106echo "# Renaming (PASS1)..." >> $TESTOUT 107$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \ 108 >> $TESTOUT 2>&1 << EOMODS1 109dn: ou=Child,ou=Parent,dc=example,dc=com 110changetype: modrdn 111newrdn: ou=Renamed child 112deleteoldrdn: 0 113EOMODS1 114RC=$? 115if test $RC != 0 ; then 116 echo "ldapadd failed ($RC)!" 117 test $KILLSERVERS != no && kill -HUP $KILLPIDS 118 exit $RC 119fi 120 121echo "Searching all database..." 122echo "# Searching all database (after PASS1)..." >> $SEARCHOUT 123$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 124 '(objectClass=*)' >> $SEARCHOUT 2>&1 125RC=$? 126if test $RC != 0 ; then 127 echo "ldapsearch failed ($RC)!" 128 test $KILLSERVERS != no && kill -HUP $KILLPIDS 129 exit $RC 130fi 131 132# Rename (PASS2) 133echo "Renaming (PASS2)..." 134echo "# Renaming (PASS2)..." >> $TESTOUT 135$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \ 136 >> $TESTOUT 2>&1 << EOMODS2 137dn: ou=Parent,dc=example,dc=com 138changetype: modrdn 139newrdn: ou=Renamed parent 140deleteoldrdn: 0 141EOMODS2 142RC=$? 143if test $RC != 0 ; then 144 echo "ldapadd failed ($RC)!" 145 test $KILLSERVERS != no && kill -HUP $KILLPIDS 146 exit $RC 147fi 148 149echo "Searching all database..." 150echo "# Searching all database (after PASS2)..." >> $SEARCHOUT 151$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 152 '(objectClass=*)' >> $SEARCHOUT 2>&1 153RC=$? 154if test $RC != 0 ; then 155 echo "ldapsearch failed ($RC)!" 156 test $KILLSERVERS != no && kill -HUP $KILLPIDS 157 exit $RC 158fi 159 160# Rename (PASS3) 161echo "Renaming (PASS3)..." 162echo "# Renaming (PASS3)..." >> $TESTOUT 163$LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \ 164 >> $TESTOUT 2>&1 << EOMODS3 165dn: ou=Renamed child,ou=Renamed parent,dc=example,dc=com 166changetype: modrdn 167newrdn: ou=Renamed child 168deleteoldrdn: 0 169newsuperior: ou=Another parent,dc=example,dc=com 170EOMODS3 171RC=$? 172if test $RC != 0 ; then 173 echo "ldapadd failed ($RC)!" 174 test $KILLSERVERS != no && kill -HUP $KILLPIDS 175 exit $RC 176fi 177 178echo "Searching all database..." 179echo "# Searching all database (after PASS3)..." >> $SEARCHOUT 180$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 181 '(objectClass=*)' >> $SEARCHOUT 2>&1 182RC=$? 183if test $RC != 0 ; then 184 echo "ldapsearch failed ($RC)!" 185 test $KILLSERVERS != no && kill -HUP $KILLPIDS 186 exit $RC 187fi 188 189test $KILLSERVERS != no && kill -HUP $KILLPIDS 190 191LDIF=$SUBTREERENAMEOUT 192 193echo "Filtering ldapsearch results..." 194$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 195echo "Filtering original ldif used to create database..." 196$LDIFFILTER < $LDIF > $LDIFFLT 197echo "Comparing filter output..." 198$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 199 200if test $? != 0 ; then 201 echo "Comparison failed" 202 exit 1 203fi 204 205echo ">>>>> Test succeeded" 206 207test $KILLSERVERS != no && wait 208 209exit 0 210