test073-asyncmeta revision 1.1 1 1.1 christos #! /bin/sh
2 1.1 christos # $OpenLDAP$
3 1.1 christos ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 1.1 christos ##
5 1.1 christos ## Copyright 1998-2021 The OpenLDAP Foundation.
6 1.1 christos ## All rights reserved.
7 1.1 christos ##
8 1.1 christos ## Redistribution and use in source and binary forms, with or without
9 1.1 christos ## modification, are permitted only as authorized by the OpenLDAP
10 1.1 christos ## Public License.
11 1.1 christos ##
12 1.1 christos ## A copy of this license is available in the file LICENSE in the
13 1.1 christos ## top-level directory of the distribution or, alternatively, at
14 1.1 christos ## <http://www.OpenLDAP.org/license.html>.
15 1.1 christos
16 1.1 christos echo "running defines.sh"
17 1.1 christos . $SRCDIR/scripts/defines.sh
18 1.1 christos
19 1.1 christos echo ""
20 1.1 christos
21 1.1 christos if test $BACKASYNCMETA = asyncmetano ; then
22 1.1 christos echo "asyncmeta backend not available, test skipped"
23 1.1 christos exit 0
24 1.1 christos fi
25 1.1 christos
26 1.1 christos if test $BACKLDAP = ldapno ; then
27 1.1 christos echo "ldap backend not available, test skipped"
28 1.1 christos exit 0
29 1.1 christos fi
30 1.1 christos
31 1.1 christos rm -rf $TESTDIR
32 1.1 christos
33 1.1 christos mkdir -p $TESTDIR $DBDIR1 $DBDIR2
34 1.1 christos
35 1.1 christos echo "Starting slapd on TCP/IP port $PORT1..."
36 1.1 christos . $CONFFILTER $BACKEND < $METACONF1 > $CONF1
37 1.1 christos $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
38 1.1 christos PID=$!
39 1.1 christos if test $WAIT != 0 ; then
40 1.1 christos echo PID $PID
41 1.1 christos read foo
42 1.1 christos fi
43 1.1 christos KILLPIDS="$PID"
44 1.1 christos
45 1.1 christos sleep 1
46 1.1 christos
47 1.1 christos echo "Using ldapsearch to check that slapd is running..."
48 1.1 christos for i in 0 1 2 3 4 5; do
49 1.1 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
50 1.1 christos 'objectclass=*' > /dev/null 2>&1
51 1.1 christos RC=$?
52 1.1 christos if test $RC = 0 ; then
53 1.1 christos break
54 1.1 christos fi
55 1.1 christos echo "Waiting 5 seconds for slapd to start..."
56 1.1 christos sleep 5
57 1.1 christos done
58 1.1 christos if test $RC != 0 ; then
59 1.1 christos echo "ldapsearch failed ($RC)!"
60 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
61 1.1 christos exit $RC
62 1.1 christos fi
63 1.1 christos
64 1.1 christos echo "Using ldapadd to populate the database..."
65 1.1 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
66 1.1 christos $LDIFORDERED > $TESTOUT 2>&1
67 1.1 christos RC=$?
68 1.1 christos if test $RC != 0 ; then
69 1.1 christos echo "ldapadd failed ($RC)!"
70 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
71 1.1 christos exit $RC
72 1.1 christos fi
73 1.1 christos
74 1.1 christos echo "Starting slapd on TCP/IP port $PORT2..."
75 1.1 christos . $CONFFILTER $BACKEND < $METACONF2 > $CONF2
76 1.1 christos $SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
77 1.1 christos PID=$!
78 1.1 christos if test $WAIT != 0 ; then
79 1.1 christos echo PID $PID
80 1.1 christos read foo
81 1.1 christos fi
82 1.1 christos KILLPIDS="$KILLPIDS $PID"
83 1.1 christos
84 1.1 christos sleep 1
85 1.1 christos
86 1.1 christos echo "Using ldapsearch to check that slapd is running..."
87 1.1 christos for i in 0 1 2 3 4 5; do
88 1.1 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
89 1.1 christos 'objectclass=*' > /dev/null 2>&1
90 1.1 christos RC=$?
91 1.1 christos if test $RC = 0 ; then
92 1.1 christos break
93 1.1 christos fi
94 1.1 christos echo "Waiting 5 seconds for slapd to start..."
95 1.1 christos sleep 5
96 1.1 christos done
97 1.1 christos if test $RC != 0 ; then
98 1.1 christos echo "ldapsearch failed ($RC)!"
99 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
100 1.1 christos exit $RC
101 1.1 christos fi
102 1.1 christos
103 1.1 christos echo "Using ldapadd to populate the database..."
104 1.1 christos $LDAPADD -D "$METAMANAGERDN" -H $URI2 -w $PASSWD < \
105 1.1 christos $LDIFMETA >> $TESTOUT 2>&1
106 1.1 christos RC=$?
107 1.1 christos if test $RC != 0 ; then
108 1.1 christos echo "ldapadd failed ($RC)!"
109 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
110 1.1 christos exit $RC
111 1.1 christos fi
112 1.1 christos
113 1.1 christos echo "Starting slapd on TCP/IP port $PORT3..."
114 1.1 christos . $CONFFILTER $BACKEND < $ASYNCMETACONF > $CONF3
115 1.1 christos $SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 &
116 1.1 christos PID=$!
117 1.1 christos if test $WAIT != 0 ; then
118 1.1 christos echo PID $PID
119 1.1 christos read foo
120 1.1 christos fi
121 1.1 christos KILLPIDS="$KILLPIDS $PID"
122 1.1 christos
123 1.1 christos sleep 1
124 1.1 christos
125 1.1 christos echo "Using ldapsearch to check that slapd is running..."
126 1.1 christos for i in 0 1 2 3 4 5; do
127 1.1 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \
128 1.1 christos 'objectclass=*' > /dev/null 2>&1
129 1.1 christos RC=$?
130 1.1 christos if test $RC = 0 ; then
131 1.1 christos break
132 1.1 christos fi
133 1.1 christos echo "Waiting 5 seconds for slapd to start..."
134 1.1 christos sleep 5
135 1.1 christos done
136 1.1 christos if test $RC != 0 ; then
137 1.1 christos echo "ldapsearch failed ($RC)!"
138 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
139 1.1 christos exit $RC
140 1.1 christos fi
141 1.1 christos
142 1.1 christos cat /dev/null > $SEARCHOUT
143 1.1 christos
144 1.1 christos BASEDN="o=Example,c=US"
145 1.1 christos echo "Searching base=\"$BASEDN\"..."
146 1.1 christos echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
147 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
148 1.1 christos RC=$?
149 1.1 christos #if test $RC != 0 ; then
150 1.1 christos # echo "Search failed ($RC)!"
151 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
152 1.1 christos # exit $RC
153 1.1 christos #fi
154 1.1 christos case $RC in
155 1.1 christos 0)
156 1.1 christos ;;
157 1.1 christos 51)
158 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
159 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
160 1.1 christos exit 0
161 1.1 christos ;;
162 1.1 christos *)
163 1.1 christos echo "Search failed ($RC)!"
164 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
165 1.1 christos exit $RC
166 1.1 christos ;;
167 1.1 christos esac
168 1.1 christos
169 1.1 christos # ITS#4195: spurious matchedDN when the search scopes the main target,
170 1.1 christos # and the searchBase is not present, so that target returns noSuchObject
171 1.1 christos BASEDN="ou=Meta,o=Example,c=US"
172 1.1 christos echo "Searching base=\"$BASEDN\"..."
173 1.1 christos echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
174 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
175 1.1 christos RC=$?
176 1.1 christos #if test $RC != 0 ; then
177 1.1 christos # echo "Search failed ($RC)!"
178 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
179 1.1 christos # exit $RC
180 1.1 christos #fi
181 1.1 christos case $RC in
182 1.1 christos 0)
183 1.1 christos ;;
184 1.1 christos 51)
185 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
186 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
187 1.1 christos exit 0
188 1.1 christos ;;
189 1.1 christos *)
190 1.1 christos echo "Search failed ($RC)!"
191 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
192 1.1 christos exit $RC
193 1.1 christos ;;
194 1.1 christos esac
195 1.1 christos
196 1.1 christos #
197 1.1 christos # Do some modifications
198 1.1 christos #
199 1.1 christos
200 1.1 christos BASEDN="o=Example,c=US"
201 1.1 christos echo "Modifying database \"$BASEDN\"..."
202 1.1 christos $LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI3 -w $PASSWD \
203 1.1 christos -M >> $TESTOUT 2>&1 << EOMODS
204 1.1 christos # These operations (updates with objectClass mapping) triggered ITS#3499
205 1.1 christos dn: cn=Added Group,ou=Groups,$BASEDN
206 1.1 christos changetype: add
207 1.1 christos objectClass: groupOfNames
208 1.1 christos objectClass: uidObject
209 1.1 christos cn: Added Group
210 1.1 christos member: cn=Added Group,ou=Groups,$BASEDN
211 1.1 christos uid: added
212 1.1 christos
213 1.1 christos dn: cn=Another Added Group,ou=Groups,$BASEDN
214 1.1 christos changetype: add
215 1.1 christos objectClass: groupOfNames
216 1.1 christos cn: Another Added Group
217 1.1 christos member: cn=Added Group,ou=Groups,$BASEDN
218 1.1 christos member: cn=Another Added Group,ou=Groups,$BASEDN
219 1.1 christos
220 1.1 christos dn: cn=Another Added Group,ou=Groups,$BASEDN
221 1.1 christos changetype: modify
222 1.1 christos add: objectClass
223 1.1 christos objectClass: uidObject
224 1.1 christos -
225 1.1 christos add: uid
226 1.1 christos uid: added
227 1.1 christos -
228 1.1 christos
229 1.1 christos dn: cn=Added Group,ou=Groups,$BASEDN
230 1.1 christos changetype: modify
231 1.1 christos delete: objectClass
232 1.1 christos objectClass: uidObject
233 1.1 christos -
234 1.1 christos delete: uid
235 1.1 christos -
236 1.1 christos
237 1.1 christos dn: ou=Meta,$BASEDN
238 1.1 christos changetype: modify
239 1.1 christos add: description
240 1.1 christos description: added to "ou=Meta,$BASEDN"
241 1.1 christos -
242 1.1 christos
243 1.1 christos dn: ou=Who's going to handle this?,$BASEDN
244 1.1 christos changetype: add
245 1.1 christos objectClass: organizationalUnit
246 1.1 christos ou: Who's going to handle this?
247 1.1 christos description: added
248 1.1 christos description: will be deleted
249 1.1 christos
250 1.1 christos dn: ou=Same as above,$BASEDN
251 1.1 christos changetype: add
252 1.1 christos objectClass: organizationalUnit
253 1.1 christos ou: Same as above
254 1.1 christos description: added right after "Who's going to handle this?"
255 1.1 christos description: will be preserved
256 1.1 christos
257 1.1 christos dn: ou=Who's going to handle this?,$BASEDN
258 1.1 christos changetype: delete
259 1.1 christos
260 1.1 christos dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
261 1.1 christos changetype: add
262 1.1 christos objectClass: organizationalUnit
263 1.1 christos ou: Who's going to handle this?
264 1.1 christos description: added
265 1.1 christos description: will be deleted
266 1.1 christos
267 1.1 christos dn: ou=Same as above,ou=Meta,$BASEDN
268 1.1 christos changetype: add
269 1.1 christos objectClass: organizationalUnit
270 1.1 christos ou: Same as above
271 1.1 christos description: added right after "Who's going to handle this?"
272 1.1 christos description: will be preserved
273 1.1 christos
274 1.1 christos dn: cn=Added User,ou=Same as above,ou=Meta,$BASEDN
275 1.1 christos changetype: add
276 1.1 christos objectClass: inetOrgPerson
277 1.1 christos cn: Added User
278 1.1 christos sn: User
279 1.1 christos userPassword: secret
280 1.1 christos
281 1.1 christos dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
282 1.1 christos changetype: delete
283 1.1 christos EOMODS
284 1.1 christos
285 1.1 christos RC=$?
286 1.1 christos #if test $RC != 0 ; then
287 1.1 christos # echo "Modify failed ($RC)!"
288 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
289 1.1 christos # exit $RC
290 1.1 christos #fi
291 1.1 christos case $RC in
292 1.1 christos 0)
293 1.1 christos ;;
294 1.1 christos 51)
295 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
296 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
297 1.1 christos exit 0
298 1.1 christos ;;
299 1.1 christos *)
300 1.1 christos echo "Modify failed ($RC)!"
301 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
302 1.1 christos exit $RC
303 1.1 christos ;;
304 1.1 christos esac
305 1.1 christos
306 1.1 christos echo "Searching base=\"$BASEDN\"..."
307 1.1 christos echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
308 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
309 1.1 christos RC=$?
310 1.1 christos #if test $RC != 0 ; then
311 1.1 christos # echo "Search failed ($RC)!"
312 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
313 1.1 christos # exit $RC
314 1.1 christos #fi
315 1.1 christos case $RC in
316 1.1 christos 0)
317 1.1 christos ;;
318 1.1 christos 51)
319 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
320 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
321 1.1 christos exit 0
322 1.1 christos ;;
323 1.1 christos *)
324 1.1 christos echo "Search failed ($RC)!"
325 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
326 1.1 christos exit $RC
327 1.1 christos ;;
328 1.1 christos esac
329 1.1 christos
330 1.1 christos BASEDN="o=Example,c=US"
331 1.1 christos echo " base=\"$BASEDN\"..."
332 1.1 christos echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
333 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" -M "$FILTER" '*' ref \
334 1.1 christos >> $SEARCHOUT 2>&1
335 1.1 christos RC=$?
336 1.1 christos #if test $RC != 0 ; then
337 1.1 christos # echo "Search failed ($RC)!"
338 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
339 1.1 christos # exit $RC
340 1.1 christos #fi
341 1.1 christos case $RC in
342 1.1 christos 0)
343 1.1 christos ;;
344 1.1 christos 51)
345 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
346 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
347 1.1 christos exit 0
348 1.1 christos ;;
349 1.1 christos *)
350 1.1 christos echo "Search failed ($RC)!"
351 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
352 1.1 christos exit $RC
353 1.1 christos ;;
354 1.1 christos esac
355 1.1 christos
356 1.1 christos BASEDN="o=Example,c=US"
357 1.1 christos FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
358 1.1 christos echo "Searching filter=\"$FILTER\""
359 1.1 christos echo " attrs=\"seeAlso\""
360 1.1 christos echo " base=\"$BASEDN\"..."
361 1.1 christos echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
362 1.1 christos echo "# attrs=\"seeAlso\"" >> $SEARCHOUT
363 1.1 christos echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
364 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" seeAlso \
365 1.1 christos >> $SEARCHOUT 2>&1
366 1.1 christos RC=$?
367 1.1 christos #if test $RC != 0 ; then
368 1.1 christos # echo "Search failed ($RC)!"
369 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
370 1.1 christos # exit $RC
371 1.1 christos #fi
372 1.1 christos case $RC in
373 1.1 christos 0)
374 1.1 christos ;;
375 1.1 christos 51)
376 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
377 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
378 1.1 christos exit 0
379 1.1 christos ;;
380 1.1 christos *)
381 1.1 christos echo "Search failed ($RC)!"
382 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
383 1.1 christos exit $RC
384 1.1 christos ;;
385 1.1 christos esac
386 1.1 christos
387 1.1 christos FILTER="(uid=example)"
388 1.1 christos echo "Searching filter=\"$FILTER\""
389 1.1 christos echo " attrs=\"uid\""
390 1.1 christos echo " base=\"$BASEDN\"..."
391 1.1 christos echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
392 1.1 christos echo "# attrs=\"uid\"" >> $SEARCHOUT
393 1.1 christos echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
394 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" uid \
395 1.1 christos >> $SEARCHOUT 2>&1
396 1.1 christos RC=$?
397 1.1 christos #if test $RC != 0 ; then
398 1.1 christos # echo "Search failed ($RC)!"
399 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
400 1.1 christos # exit $RC
401 1.1 christos #fi
402 1.1 christos case $RC in
403 1.1 christos 0)
404 1.1 christos ;;
405 1.1 christos 51)
406 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
407 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
408 1.1 christos exit 0
409 1.1 christos ;;
410 1.1 christos *)
411 1.1 christos echo "Search failed ($RC)!"
412 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
413 1.1 christos exit $RC
414 1.1 christos ;;
415 1.1 christos esac
416 1.1 christos
417 1.1 christos FILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)"
418 1.1 christos echo "Searching filter=\"$FILTER\""
419 1.1 christos echo " attrs=\"member\""
420 1.1 christos echo " base=\"$BASEDN\"..."
421 1.1 christos echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
422 1.1 christos echo "# attrs=\"member\"" >> $SEARCHOUT
423 1.1 christos echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
424 1.1 christos $LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" member \
425 1.1 christos >> $SEARCHOUT 2>&1
426 1.1 christos RC=$?
427 1.1 christos #if test $RC != 0 ; then
428 1.1 christos # echo "Search failed ($RC)!"
429 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
430 1.1 christos # exit $RC
431 1.1 christos #fi
432 1.1 christos case $RC in
433 1.1 christos 0)
434 1.1 christos ;;
435 1.1 christos 51)
436 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
437 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
438 1.1 christos exit 0
439 1.1 christos ;;
440 1.1 christos *)
441 1.1 christos echo "Search failed ($RC)!"
442 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
443 1.1 christos exit $RC
444 1.1 christos ;;
445 1.1 christos esac
446 1.1 christos
447 1.1 christos echo "Waiting 10 seconds for cached connections to timeout..."
448 1.1 christos sleep 10
449 1.1 christos
450 1.1 christos echo "Searching with a timed out connection..."
451 1.1 christos echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
452 1.1 christos echo "# attrs=\"member\"" >> $SEARCHOUT
453 1.1 christos echo "# base=\"$BASEDN\"" >> $SEARCHOUT
454 1.1 christos echo "# with a timed out connection..." >> $SEARCHOUT
455 1.1 christos $LDAPSEARCH -S "" -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
456 1.1 christos -b "$BASEDN" "$FILTER" member \
457 1.1 christos >> $SEARCHOUT 2>&1
458 1.1 christos RC=$?
459 1.1 christos #if test $RC != 0 ; then
460 1.1 christos # echo "Search failed ($RC)!"
461 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
462 1.1 christos # exit $RC
463 1.1 christos #fi
464 1.1 christos case $RC in
465 1.1 christos 0)
466 1.1 christos ;;
467 1.1 christos 51)
468 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
469 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
470 1.1 christos exit 0
471 1.1 christos ;;
472 1.1 christos *)
473 1.1 christos echo "Search failed ($RC)!"
474 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
475 1.1 christos exit $RC
476 1.1 christos ;;
477 1.1 christos esac
478 1.1 christos
479 1.1 christos # NOTE: cannot send to $SEARCHOUT because the returned entries
480 1.1 christos # are not predictable...
481 1.1 christos echo "Checking server-enforced size limit..."
482 1.1 christos echo "# Checking server-enforced size limit..." >> $SEARCHOUT
483 1.1 christos $LDAPSEARCH -S "" -H $URI3 \
484 1.1 christos -D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
485 1.1 christos -b "$BASEDN" "(objectClass=*)" 1.1 \
486 1.1 christos >> $TESTOUT 2>&1
487 1.1 christos RC=$?
488 1.1 christos case $RC,$BACKEND in
489 1.1 christos 4,* | 0,null)
490 1.1 christos ;;
491 1.1 christos 0,*)
492 1.1 christos echo "Search should have failed ($RC)!"
493 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
494 1.1 christos exit -1
495 1.1 christos ;;
496 1.1 christos *)
497 1.1 christos echo "Search failed ($RC)!"
498 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
499 1.1 christos exit $RC
500 1.1 christos ;;
501 1.1 christos esac
502 1.1 christos
503 1.1 christos # NOTE: cannot send to $SEARCHOUT because the returned entries
504 1.1 christos # are not predictable...
505 1.1 christos echo "Checking client-requested size limit..."
506 1.1 christos echo "# Checking client-requested size limit..." >> $SEARCHOUT
507 1.1 christos $LDAPSEARCH -S "" -H $URI3 \
508 1.1 christos -D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
509 1.1 christos -b "$BASEDN" -z 2 "(objectClass=*)" 1.1 \
510 1.1 christos >> $TESTOUT 2>&1
511 1.1 christos RC=$?
512 1.1 christos case $RC,$BACKEND in
513 1.1 christos 4,* | 0,null)
514 1.1 christos ;;
515 1.1 christos 0,*)
516 1.1 christos echo "Search should have failed ($RC)!"
517 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
518 1.1 christos exit -1
519 1.1 christos ;;
520 1.1 christos *)
521 1.1 christos echo "Search failed ($RC)!"
522 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
523 1.1 christos exit $RC
524 1.1 christos ;;
525 1.1 christos esac
526 1.1 christos
527 1.1 christos echo "Filtering ldapsearch results..."
528 1.1 christos $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
529 1.1 christos echo "Filtering original ldif used to create database..."
530 1.1 christos $LDIFFILTER < $METAOUT > $LDIFFLT
531 1.1 christos echo "Comparing filter output..."
532 1.1 christos $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
533 1.1 christos
534 1.1 christos if test $? != 0 ; then
535 1.1 christos echo "comparison failed - meta search/modification didn't succeed"
536 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
537 1.1 christos exit 1
538 1.1 christos fi
539 1.1 christos
540 1.1 christos echo "Binding as newly added user to database \"$BASEDN\"..."
541 1.1 christos $LDAPWHOAMI -H $URI3 \
542 1.1 christos -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
543 1.1 christos -w $PASSWD >> $TESTOUT 2>&1
544 1.1 christos RC=$?
545 1.1 christos #if test $RC != 0 ; then
546 1.1 christos # echo "WhoAmI failed ($RC)!"
547 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
548 1.1 christos # exit $RC
549 1.1 christos #fi
550 1.1 christos case $RC in
551 1.1 christos 0)
552 1.1 christos ;;
553 1.1 christos 51)
554 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
555 1.1 christos ;;
556 1.1 christos *)
557 1.1 christos echo "WhoAmI failed ($RC)!"
558 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
559 1.1 christos exit $RC
560 1.1 christos ;;
561 1.1 christos esac
562 1.1 christos
563 1.1 christos
564 1.1 christos echo "Binding with incorrect password to database \"$BASEDN\"..."
565 1.1 christos $LDAPWHOAMI -H $URI3 \
566 1.1 christos -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
567 1.1 christos -w bogus >> $TESTOUT 2>&1
568 1.1 christos RC=$?
569 1.1 christos #if test $RC != 0 ; then
570 1.1 christos # echo "WhoAmI failed ($RC)!"
571 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
572 1.1 christos # exit $RC
573 1.1 christos #fi
574 1.1 christos case $RC,$BACKEND in
575 1.1 christos 0,null)
576 1.1 christos ;;
577 1.1 christos 0,*)
578 1.1 christos echo "WhoAmI should have failed ($RC)!"
579 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
580 1.1 christos exit -1
581 1.1 christos ;;
582 1.1 christos 51,*)
583 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
584 1.1 christos ;;
585 1.1 christos *)
586 1.1 christos ;;
587 1.1 christos esac
588 1.1 christos
589 1.1 christos echo "Binding with non-existing user to database \"$BASEDN\"..."
590 1.1 christos $LDAPWHOAMI -H $URI3 \
591 1.1 christos -D "cn=Non-existing User,ou=Same as above,ou=Meta,$BASEDN" \
592 1.1 christos -w bogus >> $TESTOUT 2>&1
593 1.1 christos RC=$?
594 1.1 christos #if test $RC != 0 ; then
595 1.1 christos # echo "WhoAmI failed ($RC)!"
596 1.1 christos # test $KILLSERVERS != no && kill -HUP $KILLPIDS
597 1.1 christos # exit $RC
598 1.1 christos #fi
599 1.1 christos case $RC,$BACKEND in
600 1.1 christos 0,null)
601 1.1 christos ;;
602 1.1 christos 0,*)
603 1.1 christos echo "WhoAmI should have failed ($RC)!"
604 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
605 1.1 christos exit -1
606 1.1 christos ;;
607 1.1 christos 51,*)
608 1.1 christos echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
609 1.1 christos ;;
610 1.1 christos *)
611 1.1 christos ;;
612 1.1 christos esac
613 1.1 christos
614 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
615 1.1 christos
616 1.1 christos echo ">>>>> Test succeeded"
617 1.1 christos
618 1.1 christos test $KILLSERVERS != no && wait
619 1.1 christos
620 1.1 christos exit 0
621