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