test025-limits revision 1.1.1.6.6.1 1 #! /bin/sh
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 1998-2019 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 ## FIXME: need to exclude legal but wrong results...
17
18 echo "running defines.sh"
19 . $SRCDIR/scripts/defines.sh
20
21 if test $BACKEND = null; then
22 echo "Limits irrelevant to $BACKEND backend, test skipped"
23 exit 0
24 fi
25
26 mkdir -p $TESTDIR $DBDIR1
27
28 echo "Running slapadd to build slapd database..."
29 . $CONFFILTER $BACKEND $MONITORDB < $LIMITSCONF > $ADDCONF
30 $SLAPADD -f $ADDCONF -l $LDIFLIMITS
31 RC=$?
32 if test $RC != 0 ; then
33 echo "slapadd failed ($RC)!"
34 exit $RC
35 fi
36
37 echo "Running slapindex to index slapd database..."
38 . $CONFFILTER $BACKEND $MONITORDB < $LIMITSCONF > $CONF1
39 $SLAPINDEX -f $CONF1
40 RC=$?
41 if test $RC != 0 ; then
42 echo "warning: slapindex failed ($RC)"
43 echo " assuming no indexing support"
44 fi
45
46 echo "Starting slapd on TCP/IP port $PORT1..."
47 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
48 PID=$!
49 if test $WAIT != 0 ; then
50 echo PID $PID
51 read foo
52 fi
53 KILLPIDS="$PID"
54
55 sleep 1
56
57 echo "Testing slapd searching..."
58 for i in 0 1 2 3 4 5; do
59 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
60 '(objectclass=*)' > /dev/null 2>&1
61 RC=$?
62 if test $RC = 0 ; then
63 break
64 fi
65 echo "Waiting 5 seconds for slapd to start..."
66 sleep 5
67 done
68
69 if test $RC != 0 ; then
70 echo "ldapsearch failed ($RC)!"
71 test $KILLSERVERS != no && kill -HUP $KILLPIDS
72 exit $RC
73 fi
74
75 cat /dev/null > $SEARCHOUT
76
77 echo ""
78 echo "Testing regular search limits"
79 echo ""
80
81 echo "Testing no limits requested for unlimited ID..."
82 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
83 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
84 '(objectClass=*)' >$SEARCHOUT 2>&1
85 RC=$?
86 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
87 case $RC in
88 0)
89 if test x"$COUNT" != x ; then
90 echo "...success (got $COUNT entries)"
91 else
92 echo "...error: did not expect ldapsearch success ($RC)!"
93 test $KILLSERVERS != no && kill -HUP $KILLPIDS
94 exit 1
95 fi
96 ;;
97 *)
98 echo "ldapsearch failed ($RC)!"
99 test $KILLSERVERS != no && kill -HUP $KILLPIDS
100 exit $RC
101 ;;
102 esac
103
104 echo "Testing no limits requested for rootdn=$MANAGERDN..."
105 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
106 -D "$MANAGERDN" \
107 '(objectClass=*)' >$SEARCHOUT 2>&1
108 RC=$?
109 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
110 case $RC in
111 0)
112 if test x"$COUNT" != x ; then
113 echo "...success (got $COUNT entries)"
114 else
115 echo "...error: did not expect ldapsearch success ($RC)!"
116 test $KILLSERVERS != no && kill -HUP $KILLPIDS
117 exit 1
118 fi
119 ;;
120 *)
121 echo "ldapsearch failed ($RC)!"
122 test $KILLSERVERS != no && kill -HUP $KILLPIDS
123 exit $RC
124 ;;
125 esac
126
127 SIZELIMIT=4
128 echo "Testing limit requested for rootdn=$MANAGERDN..."
129 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
130 -D "$MANAGERDN" \
131 '(objectClass=*)' >$SEARCHOUT 2>&1
132 RC=$?
133 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
134 case $RC in
135 0)
136 if test x"$COUNT" != x ; then
137 if test "$COUNT" -gt "$SIZELIMIT" ; then
138 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
139 test $KILLSERVERS != no && kill -HUP $KILLPIDS
140 exit 1
141 fi
142 echo "...didn't bump into the requested size limit ($SIZELIMIT; got $COUNT entries)"
143 else
144 echo "...error: did not expect ldapsearch success ($RC)!"
145 test $KILLSERVERS != no && kill -HUP $KILLPIDS
146 exit 1
147 fi
148 ;;
149 4)
150 if test x"$COUNT" != x ; then
151 if test "$COUNT" = "$SIZELIMIT" ; then
152 echo "...bumped into requested size limit ($SIZELIMIT)"
153 else
154 echo "...error: got $COUNT entries with a requested sizelimit of $SIZELIMIT"
155 test $KILLSERVERS != no && kill -HUP $KILLPIDS
156 exit $RC
157 fi
158 else
159 echo "...error: bumped into server-side size limit, but got no entries!"
160 test $KILLSERVERS != no && kill -HUP $KILLPIDS
161 exit $RC
162 fi
163 ;;
164 *)
165 echo "ldapsearch failed ($RC)!"
166 test $KILLSERVERS != no && kill -HUP $KILLPIDS
167 exit $RC
168 ;;
169 esac
170
171 SIZELIMIT=2
172 echo "Testing size limit request ($SIZELIMIT) for unlimited ID..."
173 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
174 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
175 '(objectClass=*)' > $SEARCHOUT 2>&1
176 RC=$?
177 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
178 case $RC in
179 0)
180 if test x"$COUNT" != x ; then
181 if test "$COUNT" -gt "$SIZELIMIT" ; then
182 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
183 test $KILLSERVERS != no && kill -HUP $KILLPIDS
184 exit 1
185 fi
186 echo "...didn't bump into the requested size limit ($SIZELIMIT; got $COUNT entries)"
187 else
188 echo "...error: did not expect ldapsearch success ($RC)!"
189 test $KILLSERVERS != no && kill -HUP $KILLPIDS
190 exit 1
191 fi
192 ;;
193 4)
194 if test x"$COUNT" != x ; then
195 if test "$COUNT" = "$SIZELIMIT" ; then
196 echo "...bumped into requested size limit ($SIZELIMIT)"
197 else
198 echo "...error: got $COUNT entries with a requested sizelimit of $SIZELIMIT"
199 test $KILLSERVERS != no && kill -HUP $KILLPIDS
200 exit $RC
201 fi
202 else
203 echo "...error: bumped into server-side size limit, but got no entries!"
204 test $KILLSERVERS != no && kill -HUP $KILLPIDS
205 exit $RC
206 fi
207 ;;
208 *)
209 echo "ldapsearch failed ($RC)!"
210 test $KILLSERVERS != no && kill -HUP $KILLPIDS
211 exit $RC
212 ;;
213 esac
214
215 TIMELIMIT=10
216 echo "Testing time limit request ($TIMELIMIT s) for unlimited ID..."
217 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -l $TIMELIMIT \
218 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
219 '(objectClass=*)' > $SEARCHOUT 2>&1
220 RC=$?
221 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
222 case $RC in
223 0)
224 if test x"$COUNT" != x ; then
225 echo "...didn't bump into the requested time limit ($TIMELIMIT s; got $COUNT entries)"
226 else
227 echo "...error: did not expect ldapsearch success ($RC)!"
228 test $KILLSERVERS != no && kill -HUP $KILLPIDS
229 exit 1
230 fi
231 ;;
232 3)
233 if test x"$COUNT" != x ; then
234 COUNT=0
235 fi
236 echo "...bumped into requested time limit ($TIMELIMIT s; got $COUNT entries)"
237 ;;
238 *)
239 echo "ldapsearch failed ($RC)!"
240 test $KILLSERVERS != no && kill -HUP $KILLPIDS
241 exit $RC
242 ;;
243 esac
244
245 echo "Testing no limits requested for soft limited ID..."
246 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
247 -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
248 '(objectClass=*)' > $SEARCHOUT 2>&1
249 RC=$?
250 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
251 case $RC in
252 0)
253 if test x"$COUNT" != x ; then
254 echo "...didn't bump into server-side size limit (got $COUNT entries)"
255 else
256 echo "...error: did not expect ldapsearch success ($RC)!"
257 test $KILLSERVERS != no && kill -HUP $KILLPIDS
258 exit 1
259 fi
260 ;;
261 4)
262 if test x"$COUNT" != x ; then
263 echo "...bumped into server-side size limit (got $COUNT entries)"
264 else
265 echo "...error: bumped into server-side size limit, but got no entries!"
266 test $KILLSERVERS != no && kill -HUP $KILLPIDS
267 exit $RC
268 fi
269 ;;
270 *)
271 echo "ldapsearch failed ($RC)!"
272 test $KILLSERVERS != no && kill -HUP $KILLPIDS
273 exit $RC
274 ;;
275 esac
276
277 SIZELIMIT=2
278 echo "Testing lower than soft limit request ($SIZELIMIT) for soft limited ID..."
279 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
280 -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
281 '(objectClass=*)' > $SEARCHOUT 2>&1
282 RC=$?
283 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
284 case $RC in
285 0)
286 if test x"$COUNT" != x ; then
287 if test "$COUNT" -gt "$SIZELIMIT" ; then
288 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
289 test $KILLSERVERS != no && kill -HUP $KILLPIDS
290 exit 1
291 fi
292 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
293 else
294 echo "...error: did not expect ldapsearch success ($RC)!"
295 test $KILLSERVERS != no && kill -HUP $KILLPIDS
296 exit 1
297 fi
298 ;;
299 4)
300 if test "x$COUNT" != "x" ; then
301 if test "x$SIZELIMIT" = "x$COUNT" ; then
302 echo "...bumped into requested ($SIZELIMIT) size limit"
303 else
304 echo "...bumped into server-side size limit ($COUNT)"
305 fi
306 else
307 echo "...error: bumped into server-side size limit, but got no entries!"
308 test $KILLSERVERS != no && kill -HUP $KILLPIDS
309 exit $RC
310 fi
311 ;;
312 *)
313 echo "ldapsearch failed ($RC)!"
314 test $KILLSERVERS != no && kill -HUP $KILLPIDS
315 exit $RC
316 ;;
317 esac
318
319 SIZELIMIT=100
320 echo "Testing higher than soft limit request ($SIZELIMIT) for soft limited ID..."
321 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
322 -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
323 '(objectClass=*)' > $SEARCHOUT 2>&1
324 RC=$?
325 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
326 case $RC in
327 0)
328 if test x"$COUNT" != x ; then
329 if test "$COUNT" -gt "$SIZELIMIT" ; then
330 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
331 test $KILLSERVERS != no && kill -HUP $KILLPIDS
332 exit 1
333 fi
334 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
335 else
336 echo "...error: did not expect ldapsearch success ($RC)!"
337 test $KILLSERVERS != no && kill -HUP $KILLPIDS
338 exit 1
339 fi
340 ;;
341 4)
342 if test "x$COUNT" != "x" ; then
343 if test "x$SIZELIMIT" = "x$COUNT" ; then
344 echo "...bumped into requested ($SIZELIMIT) size limit"
345 else
346 echo "...bumped into server-side size limit ($COUNT)"
347 fi
348 else
349 echo "...error: bumped into server-side size limit, but got no entries!"
350 test $KILLSERVERS != no && kill -HUP $KILLPIDS
351 exit $RC
352 fi
353 ;;
354 *)
355 echo "ldapsearch failed ($RC)!"
356 test $KILLSERVERS != no && kill -HUP $KILLPIDS
357 exit $RC
358 ;;
359 esac
360
361 SIZELIMIT=2
362 echo "Testing lower than hard limit request ($SIZELIMIT) for hard limited ID..."
363 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
364 -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
365 '(objectClass=*)' > $SEARCHOUT 2>&1
366 RC=$?
367 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
368 case $RC in
369 0)
370 if test x"$COUNT" != x ; then
371 if test "$COUNT" -gt "$SIZELIMIT" ; then
372 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
373 test $KILLSERVERS != no && kill -HUP $KILLPIDS
374 exit 1
375 fi
376 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
377 else
378 echo "...error: did not expect ldapsearch success ($RC)!"
379 test $KILLSERVERS != no && kill -HUP $KILLPIDS
380 exit 1
381 fi
382 ;;
383 4)
384 echo "...bumped into requested ($SIZELIMIT) size limit"
385 ;;
386 *)
387 echo "ldapsearch failed ($RC)!"
388 test $KILLSERVERS != no && kill -HUP $KILLPIDS
389 exit $RC
390 ;;
391 esac
392
393 SIZELIMIT=100
394 echo "Testing higher than hard limit request ($SIZELIMIT) for hard limited ID..."
395 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
396 -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
397 '(objectClass=*)' > $SEARCHOUT 2>&1
398 RC=$?
399 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
400 case $RC in
401 0)
402 if test x"$COUNT" != x ; then
403 if test "$COUNT" -gt "$SIZELIMIT" ; then
404 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
405 test $KILLSERVERS != no && kill -HUP $KILLPIDS
406 exit 1
407 fi
408 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
409 else
410 echo "...error: did not expect ldapsearch success ($RC)!"
411 test $KILLSERVERS != no && kill -HUP $KILLPIDS
412 exit 1
413 fi
414 ;;
415 4)
416 if test x"$COUNT" != x ; then
417 if test "$COUNT" = "$SIZELIMIT" ; then
418 echo "...error: bumped into requested ($SIZELIMIT) size limit"
419 test $KILLSERVERS != no && kill -HUP $KILLPIDS
420 exit $RC
421 else
422 echo "...got size limit $COUNT instead of requested $SIZELIMIT entries"
423 fi
424 else
425 echo "...error: bumped into server-side size limit, but got no entries!"
426 test $KILLSERVERS != no && kill -HUP $KILLPIDS
427 exit $RC
428 fi
429 ;;
430 # 11)
431 # echo "...bumped into server-side hard size administrative limit"
432 # ;;
433 *)
434 echo "ldapsearch failed ($RC)!"
435 test $KILLSERVERS != no && kill -HUP $KILLPIDS
436 exit $RC
437 ;;
438 esac
439
440 SIZELIMIT=max
441 echo "Testing max limit request ($SIZELIMIT) for hard limited ID..."
442 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
443 -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
444 '(objectClass=*)' > $SEARCHOUT 2>&1
445 RC=$?
446 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
447 case $RC in
448 0)
449 if test x"$COUNT" != x ; then
450 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
451 else
452 echo "...error: did not expect ldapsearch success ($RC)!"
453 test $KILLSERVERS != no && kill -HUP $KILLPIDS
454 exit 1
455 fi
456 ;;
457 4)
458 if test x"$COUNT" != x ; then
459 echo "...bumped into requested ($SIZELIMIT=$COUNT) size limit"
460 else
461 echo "...error: bumped into server-side size limit, but got no entries!"
462 test $KILLSERVERS != no && kill -HUP $KILLPIDS
463 exit $RC
464 fi
465 ;;
466 # 11)
467 # echo "...bumped into server-side hard size administrative limit"
468 # ;;
469 *)
470 echo "ldapsearch failed ($RC)!"
471 test $KILLSERVERS != no && kill -HUP $KILLPIDS
472 exit $RC
473 ;;
474 esac
475
476 echo "Testing lower than unchecked limit request for unchecked limited ID..."
477 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
478 -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
479 '(uid=uncheckedlimited)' > $SEARCHOUT 2>&1
480 RC=$?
481 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
482 case $RC in
483 0)
484 if test x"$COUNT" != x ; then
485 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
486 else
487 echo "...error: did not expect ldapsearch success ($RC)!"
488 test $KILLSERVERS != no && kill -HUP $KILLPIDS
489 exit 1
490 fi
491 ;;
492 11)
493 echo "...error: bumped into unchecked administrative limit"
494 test $KILLSERVERS != no && kill -HUP $KILLPIDS
495 exit $RC
496 ;;
497 *)
498 echo "ldapsearch failed ($RC)!"
499 test $KILLSERVERS != no && kill -HUP $KILLPIDS
500 exit $RC
501 ;;
502 esac
503
504 if test $INDEXDB = indexdb ; then
505
506 echo "Testing higher than unchecked limit requested for unchecked limited ID..."
507 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
508 -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
509 '(objectClass=*)' > $SEARCHOUT 2>&1
510 RC=$?
511 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
512 case $RC in
513 0)
514 if test x"$COUNT" != x ; then
515 echo "...error: didn't bump into server-side unchecked limit (got $COUNT entries)"
516 else
517 echo "...error: did not expect ldapsearch success ($RC)!"
518 fi
519 test $KILLSERVERS != no && kill -HUP $KILLPIDS
520 exit 1
521 ;;
522 11)
523 echo "...bumped into unchecked administrative limit"
524 ;;
525 *)
526 echo "ldapsearch failed ($RC)!"
527 test $KILLSERVERS != no && kill -HUP $KILLPIDS
528 exit $RC
529 ;;
530 esac
531
532 echo "Testing no limits requested for unchecked limited group..."
533 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
534 -D 'cn=Unchecked Limited User 2,ou=People,dc=example,dc=com' \
535 '(objectClass=*)' > $SEARCHOUT 2>&1
536 RC=$?
537 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
538 case $RC in
539 0)
540 if test x"$COUNT" != x ; then
541 echo "...error: didn't bump into server-side unchecked limit (got $COUNT entries)"
542 else
543 echo "...error: did not expect ldapsearch success ($RC)!"
544 fi
545 test $KILLSERVERS != no && kill -HUP $KILLPIDS
546 exit 1
547 ;;
548 11)
549 echo "...bumped into unchecked administrative limit"
550 ;;
551 *)
552 echo "ldapsearch failed ($RC)!"
553 test $KILLSERVERS != no && kill -HUP $KILLPIDS
554 exit $RC
555 ;;
556 esac
557 else
558 echo "Skipping test for unchecked limit with $BACKEND backend."
559 fi
560
561 echo "Testing no limits requested for limited regex..."
562 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
563 -D 'cn=Foo User,ou=People,dc=example,dc=com' \
564 '(objectClass=*)' > $SEARCHOUT 2>&1
565 RC=$?
566 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
567 case $RC in
568 0)
569 if test x"$COUNT" != x ; then
570 echo "...didn't bump into server-side size limit (got $COUNT entries)"
571 else
572 echo "...error: did not expect ldapsearch success ($RC)!"
573 test $KILLSERVERS != no && kill -HUP $KILLPIDS
574 exit 1
575 fi
576 ;;
577 4)
578 if test "x$COUNT" != "x" ; then
579 echo "...bumped into server-side size limit ($COUNT)"
580 else
581 echo "...error: bumped into server-side size limit, but got no entries!"
582 test $KILLSERVERS != no && kill -HUP $KILLPIDS
583 exit $RC
584 fi
585 ;;
586 *)
587 echo "ldapsearch failed ($RC)!"
588 test $KILLSERVERS != no && kill -HUP $KILLPIDS
589 exit $RC
590 ;;
591 esac
592
593 echo "Testing no limits requested for limited onelevel..."
594 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
595 -D 'cn=Bar User,ou=People,dc=example,dc=com' \
596 '(objectClass=*)' > $SEARCHOUT 2>&1
597 RC=$?
598 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
599 case $RC in
600 0)
601 if test x"$COUNT" != x ; then
602 echo "...didn't bump into server-side size limit (got $COUNT entries)"
603 else
604 echo "...error: did not expect ldapsearch success ($RC)!"
605 test $KILLSERVERS != no && kill -HUP $KILLPIDS
606 exit 1
607 fi
608 ;;
609 4)
610 if test "x$COUNT" != "x" ; then
611 echo "...bumped into server-side size limit ($COUNT)"
612 else
613 echo "...error: bumped into server-side size limit, but got no entries!"
614 test $KILLSERVERS != no && kill -HUP $KILLPIDS
615 exit $RC
616 fi
617 ;;
618 *)
619 echo "ldapsearch failed ($RC)!"
620 test $KILLSERVERS != no && kill -HUP $KILLPIDS
621 exit $RC
622 ;;
623 esac
624
625 echo "Testing no limit requested for limited children..."
626 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
627 -D 'cn=Unchecked Limited Users,ou=Groups,dc=example,dc=com' \
628 '(objectClass=*)' > $SEARCHOUT 2>&1
629 RC=$?
630 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
631 case $RC in
632 0)
633 if test x"$COUNT" != x ; then
634 echo "...didn't bump into server-side size limit (got $COUNT entries)"
635 else
636 echo "...error: did not expect ldapsearch success ($RC)!"
637 test $KILLSERVERS != no && kill -HUP $KILLPIDS
638 exit 1
639 fi
640 ;;
641 4)
642 if test "x$COUNT" != "x" ; then
643 echo "...bumped into server-side size limit ($COUNT)"
644 else
645 echo "...error: bumped into server-side size limit, but got no entries!"
646 test $KILLSERVERS != no && kill -HUP $KILLPIDS
647 exit $RC
648 fi
649 ;;
650 *)
651 echo "ldapsearch failed ($RC)!"
652 test $KILLSERVERS != no && kill -HUP $KILLPIDS
653 exit $RC
654 ;;
655 esac
656
657 echo "Testing no limit requested for limited subtree..."
658 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
659 -D 'cn=Unchecked Limited User 3,ou=Admin,dc=example,dc=com' \
660 '(objectClass=*)' > $SEARCHOUT 2>&1
661 RC=$?
662 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
663 case $RC in
664 0)
665 if test x"$COUNT" != x ; then
666 echo "...didn't bump into server-side size limit (got $COUNT entries)"
667 else
668 echo "...error: did not expect ldapsearch success ($RC)!"
669 test $KILLSERVERS != no && kill -HUP $KILLPIDS
670 exit 1
671 fi
672 ;;
673 4)
674 if test "x$COUNT" != "x" ; then
675 echo "...bumped into server-side size limit ($COUNT)"
676 else
677 echo "...error: bumped into server-side size limit, but got no entries!"
678 test $KILLSERVERS != no && kill -HUP $KILLPIDS
679 exit $RC
680 fi
681 ;;
682 *)
683 echo "ldapsearch failed ($RC)!"
684 test $KILLSERVERS != no && kill -HUP $KILLPIDS
685 exit $RC
686 ;;
687 esac
688
689 echo "Testing no limit requested for limited users..."
690 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
691 -D 'cn=Special User,dc=example,dc=com' \
692 '(objectClass=*)' > $SEARCHOUT 2>&1
693 RC=$?
694 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
695 case $RC in
696 0)
697 if test x"$COUNT" != x ; then
698 echo "...didn't bump into server-side size limit (got $COUNT entries)"
699 else
700 echo "...error: did not expect ldapsearch success ($RC)!"
701 test $KILLSERVERS != no && kill -HUP $KILLPIDS
702 exit 1
703 fi
704 ;;
705 4)
706 if test "x$COUNT" != "x" ; then
707 echo "...bumped into server-side size limit ($COUNT)"
708 else
709 echo "...error: bumped into server-side size limit, but got no entries!"
710 test $KILLSERVERS != no && kill -HUP $KILLPIDS
711 exit $RC
712 fi
713 ;;
714 *)
715 echo "ldapsearch failed ($RC)!"
716 test $KILLSERVERS != no && kill -HUP $KILLPIDS
717 exit $RC
718 ;;
719 esac
720
721 echo "Testing no limit requested for limited anonymous..."
722 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
723 '(objectClass=*)' > $SEARCHOUT 2>&1
724 RC=$?
725 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
726 case $RC in
727 0)
728 if test x"$COUNT" != x ; then
729 echo "...didn't bump into server-side size limit (got $COUNT entries)"
730 else
731 echo "...error: did not expect ldapsearch success ($RC)!"
732 test $KILLSERVERS != no && kill -HUP $KILLPIDS
733 exit 1
734 fi
735 ;;
736 4)
737 if test "x$COUNT" != "x" ; then
738 echo "...bumped into server-side size limit ($COUNT)"
739 else
740 echo "...error: bumped into server-side size limit, but got no entries!"
741 test $KILLSERVERS != no && kill -HUP $KILLPIDS
742 exit $RC
743 fi
744 ;;
745 *)
746 echo "ldapsearch failed ($RC)!"
747 test $KILLSERVERS != no && kill -HUP $KILLPIDS
748 exit $RC
749 ;;
750 esac
751
752 if test $MAINDB != maindb ; then
753 # only bdb|hdb|mdb currently supports pagedResults control
754 test $KILLSERVERS != no && kill -HUP $KILLPIDS
755
756 echo ">>>>> Test succeeded"
757 exit 0
758 fi
759
760 if test x"$SLAPD_PAGE_SIZE" != x ; then
761 PAGESIZE="$SLAPD_PAGE_SIZE"
762 if test "$PAGESIZE" -le 0 ; then
763 test $KILLSERVERS != no && kill -HUP $KILLPIDS
764
765 echo ""
766 echo "Testing with pagedResults control disabled"
767 echo ""
768 echo ">>>>> Test succeeded"
769 exit 0
770 fi
771 else
772 PAGESIZE=5
773 fi
774
775 echo ""
776 echo "Testing regular search limits with pagedResults control (page size $PAGESIZE)"
777 echo ""
778
779 echo "Testing no limits requested for unlimited ID..."
780 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
781 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
782 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' >$SEARCHOUT 2>&1
783 RC=$?
784 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
785 case $RC in
786 0)
787 if test x"$COUNT" != x ; then
788 echo "...success (got $COUNT entries)"
789 else
790 echo "...error: did not expect ldapsearch success ($RC)!"
791 test $KILLSERVERS != no && kill -HUP $KILLPIDS
792 exit 1
793 fi
794 ;;
795 *)
796 echo "ldapsearch failed ($RC)!"
797 test $KILLSERVERS != no && kill -HUP $KILLPIDS
798 exit $RC
799 ;;
800 esac
801
802 SIZELIMIT=2
803 echo "Testing size limit request ($SIZELIMIT) for unlimited ID..."
804 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
805 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
806 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
807 RC=$?
808 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
809 case $RC in
810 0)
811 if test x"$COUNT" != x ; then
812 if test "$COUNT" -gt "$SIZELIMIT" ; then
813 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
814 test $KILLSERVERS != no && kill -HUP $KILLPIDS
815 exit 1
816 fi
817 echo "...didn't bump into the requested size limit ($SIZELIMIT; got $COUNT entries)"
818 else
819 echo "...error: did not expect ldapsearch success ($RC)!"
820 test $KILLSERVERS != no && kill -HUP $KILLPIDS
821 exit 1
822 fi
823 ;;
824 4)
825 if test x"$COUNT" != x ; then
826 if test $COUNT = $SIZELIMIT ; then
827 echo "...bumped into requested size limit ($SIZELIMIT)"
828 else
829 echo "...error: got $COUNT entries while requesting $SIZELIMIT..."
830 test $KILLSERVERS != no && kill -HUP $KILLPIDS
831 exit $RC
832 fi
833 else
834 echo "...error: bumped into server-side size limit, but got no entries!"
835 test $KILLSERVERS != no && kill -HUP $KILLPIDS
836 exit $RC
837 fi
838 ;;
839 *)
840 echo "ldapsearch failed ($RC)!"
841 test $KILLSERVERS != no && kill -HUP $KILLPIDS
842 exit $RC
843 ;;
844 esac
845
846 TIMELIMIT=10
847 echo "Testing time limit request ($TIMELIMIT s) for unlimited ID..."
848 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -l $TIMELIMIT \
849 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
850 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
851 RC=$?
852 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
853 case $RC in
854 0)
855 if test x"$COUNT" != x ; then
856 echo "...didn't bump into the requested time limit ($TIMELIMIT s; got $COUNT entries)"
857 else
858 echo "...error: did not expect ldapsearch success ($RC)!"
859 test $KILLSERVERS != no && kill -HUP $KILLPIDS
860 exit 1
861 fi
862 ;;
863 3)
864 if test x"$COUNT" = x ; then
865 COUNT=0
866 fi
867 echo "...bumped into requested time limit ($TIMELIMIT s; got $COUNT entries)"
868 ;;
869 *)
870 echo "ldapsearch failed ($RC)!"
871 test $KILLSERVERS != no && kill -HUP $KILLPIDS
872 exit $RC
873 ;;
874 esac
875
876 echo "Testing no limits requested for soft limited ID..."
877 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
878 -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
879 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
880 RC=$?
881 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
882 case $RC in
883 0)
884 if test x"$COUNT" != x ; then
885 echo "...didn't bump into server-side size limit (got $COUNT entries)"
886 else
887 echo "...error: did not expect ldapsearch success ($RC)!"
888 test $KILLSERVERS != no && kill -HUP $KILLPIDS
889 exit 1
890 fi
891 ;;
892 4)
893 if test x"$COUNT" != x ; then
894 echo "...bumped into server-side size limit (got $COUNT entries)"
895 else
896 echo "...error: bumped into server-side size limit, but got no entries!"
897 test $KILLSERVERS != no && kill -HUP $KILLPIDS
898 exit $RC
899 fi
900 ;;
901 *)
902 echo "ldapsearch failed ($RC)!"
903 test $KILLSERVERS != no && kill -HUP $KILLPIDS
904 exit $RC
905 ;;
906 esac
907
908 SIZELIMIT=2
909 echo "Testing lower than soft limit request ($SIZELIMIT) for soft limited ID..."
910 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
911 -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
912 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
913 RC=$?
914 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
915 case $RC in
916 0)
917 if test x"$COUNT" != x ; then
918 if test "$COUNT" -gt "$SIZELIMIT" ; then
919 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
920 test $KILLSERVERS != no && kill -HUP $KILLPIDS
921 exit 1
922 fi
923 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
924 else
925 echo "...error: did not expect ldapsearch success ($RC)!"
926 test $KILLSERVERS != no && kill -HUP $KILLPIDS
927 exit 1
928 fi
929 ;;
930 4)
931 if test "x$COUNT" != "x" ; then
932 if test "x$SIZELIMIT" = "x$COUNT" ; then
933 echo "...bumped into requested ($SIZELIMIT) size limit"
934 else
935 echo "...bumped into server-side size limit ($COUNT)"
936 fi
937 else
938 echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
939 fi
940 ;;
941 *)
942 echo "ldapsearch failed ($RC)!"
943 test $KILLSERVERS != no && kill -HUP $KILLPIDS
944 exit $RC
945 ;;
946 esac
947
948 SIZELIMIT=100
949 echo "Testing higher than soft limit request ($SIZELIMIT) for soft limited ID..."
950 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
951 -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
952 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
953 RC=$?
954 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
955 case $RC in
956 0)
957 if test x"$COUNT" != x ; then
958 if test "$COUNT" -gt "$SIZELIMIT" ; then
959 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
960 test $KILLSERVERS != no && kill -HUP $KILLPIDS
961 exit 1
962 fi
963 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
964 else
965 echo "...error: did not expect ldapsearch success ($RC)!"
966 test $KILLSERVERS != no && kill -HUP $KILLPIDS
967 exit 1
968 fi
969 ;;
970 4)
971 if test "x$COUNT" != "x" ; then
972 if test "x$SIZELIMIT" = "x$COUNT" ; then
973 echo "...bumped into requested ($SIZELIMIT) size limit"
974 else
975 echo "...bumped into server-side size limit ($COUNT)"
976 fi
977 else
978 echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
979 fi
980 ;;
981 *)
982 echo "ldapsearch failed ($RC)!"
983 test $KILLSERVERS != no && kill -HUP $KILLPIDS
984 exit $RC
985 ;;
986 esac
987
988 SIZELIMIT=2
989 echo "Testing lower than hard limit request ($SIZELIMIT) for hard limited ID..."
990 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
991 -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
992 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
993 RC=$?
994 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
995 case $RC in
996 0)
997 if test x"$COUNT" != x ; then
998 if test "$COUNT" -gt "$SIZELIMIT" ; then
999 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
1000 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1001 exit 1
1002 fi
1003 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
1004 else
1005 echo "...error: did not expect ldapsearch success ($RC)!"
1006 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1007 exit 1
1008 fi
1009 ;;
1010 4)
1011 if test x"$COUNT" != x ; then
1012 if test "$COUNT" = "$SIZELIMIT" ; then
1013 echo "...bumped into requested ($SIZELIMIT) size limit"
1014 else
1015 echo "...error: got size limit $SIZELIMIT but $COUNT entries"
1016 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1017 exit $RC
1018 fi
1019 else
1020 echo "...error: bumped into server-side size limit, but got no entries!"
1021 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1022 exit $RC
1023 fi
1024 ;;
1025 *)
1026 echo "ldapsearch failed ($RC)!"
1027 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1028 exit $RC
1029 ;;
1030 esac
1031
1032 SIZELIMIT=100
1033 echo "Testing higher than hard limit request ($SIZELIMIT) for hard limited ID..."
1034 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
1035 -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
1036 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1037 RC=$?
1038 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1039 case $RC in
1040 0)
1041 if test x"$COUNT" != x ; then
1042 if test "$COUNT" -gt "$SIZELIMIT" ; then
1043 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
1044 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1045 exit 1
1046 fi
1047 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
1048 else
1049 echo "...error: did not expect ldapsearch success ($RC)!"
1050 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1051 exit 1
1052 fi
1053 ;;
1054 4)
1055 if test x"$COUNT" != x ; then
1056 if test "$COUNT" = "$SIZELIMIT" ; then
1057 echo "...error: bumped into requested ($SIZELIMIT) size limit"
1058 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1059 exit $RC
1060 else
1061 echo "...got size limit $COUNT instead of requested $SIZELIMIT entries"
1062 fi
1063 else
1064 echo "...error: bumped into server-side size limit, but got no entries!"
1065 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1066 exit $RC
1067 fi
1068 ;;
1069 # 11)
1070 # echo "...bumped into hard size administrative limit"
1071 # ;;
1072 *)
1073 echo "ldapsearch failed ($RC)!"
1074 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1075 exit $RC
1076 ;;
1077 esac
1078
1079 SIZELIMIT=max
1080 echo "Testing max limit request ($SIZELIMIT) for hard limited ID..."
1081 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
1082 -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
1083 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1084 RC=$?
1085 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1086 case $RC in
1087 0)
1088 if test x"$COUNT" != x ; then
1089 echo "...didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
1090 else
1091 echo "...error: did not expect ldapsearch success ($RC)!"
1092 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1093 exit 1
1094 fi
1095 ;;
1096 4)
1097 if test x"$COUNT" != x ; then
1098 echo "...bumped into requested ($SIZELIMIT=$COUNT) size limit"
1099 else
1100 echo "...error: bumped into size limit but got no entries!"
1101 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1102 exit $RC
1103 fi
1104 ;;
1105 # 11)
1106 # echo "...bumped into hard size administrative limit"
1107 # ;;
1108 *)
1109 echo "ldapsearch failed ($RC)!"
1110 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1111 exit $RC
1112 ;;
1113 esac
1114
1115 echo "Testing lower than unchecked limit request for unchecked limited ID..."
1116 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1117 -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
1118 -E '!pr='$PAGESIZE'/noprompt' '(uid=uncheckedlimited)' > $SEARCHOUT 2>&1
1119 RC=$?
1120 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1121 case $RC in
1122 0)
1123 if test x"$COUNT" != x ; then
1124 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
1125 else
1126 echo "...error: did not expect ldapsearch success ($RC)!"
1127 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1128 exit 1
1129 fi
1130 ;;
1131 # 11)
1132 # echo "...bumped into unchecked administrative limit"
1133 # ;;
1134 *)
1135 echo "ldapsearch failed ($RC)!"
1136 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1137 exit $RC
1138 ;;
1139 esac
1140
1141 echo "Testing higher than unchecked limit requested for unchecked limited ID..."
1142 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1143 -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
1144 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1145 RC=$?
1146 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1147 case $RC in
1148 0)
1149 if test x"$COUNT" != x ; then
1150 echo "...error: didn't bump into server-side unchecked limit (got $COUNT entries)"
1151 else
1152 echo "...error: did not expect ldapsearch success ($RC)!"
1153 fi
1154 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1155 exit 1
1156 ;;
1157 11)
1158 echo "...bumped into unchecked administrative limit"
1159 ;;
1160 *)
1161 echo "ldapsearch failed ($RC)!"
1162 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1163 exit $RC
1164 ;;
1165 esac
1166
1167 echo ""
1168 echo "Testing specific search limits with pagedResults control"
1169 echo ""
1170
1171 echo "Testing no limit requested for unlimited page size ID..."
1172 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1173 -D 'cn=Unlimited User,ou=Paged Results Users,dc=example,dc=com' \
1174 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1175 RC=$?
1176 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1177 case $RC in
1178 0)
1179 if test x"$COUNT" != x ; then
1180 echo "...success; didn't bump into server-side size limit (got $COUNT entries)"
1181 else
1182 echo "...error: did not expect ldapsearch success ($RC)!"
1183 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1184 exit 1
1185 fi
1186 ;;
1187 4)
1188 if test x"$COUNT" != x ; then
1189 echo "...bumped into server-side size limit (got $COUNT entries)"
1190 else
1191 echo "...error: bumped into server-side size limit, but got no entries!"
1192 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1193 exit $RC
1194 fi
1195 ;;
1196 *)
1197 echo "ldapsearch failed ($RC)!"
1198 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1199 exit $RC
1200 ;;
1201 esac
1202
1203 echo "Testing no limit requested for limited page size ID..."
1204 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1205 -D 'cn=Page Size Limited User,ou=Paged Results Users,dc=example,dc=com' \
1206 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1207 RC=$?
1208 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1209 case $RC in
1210 0)
1211 echo "...success; didn't bump into server-side page size limit (got $COUNT entries)"
1212 ;;
1213 4)
1214 echo "...bumped into page size limit ($COUNT)"
1215 ;;
1216 11)
1217 echo "...bumped into page size administrative limit"
1218 ;;
1219 *)
1220 echo "ldapsearch failed ($RC)!"
1221 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1222 exit $RC
1223 ;;
1224 esac
1225
1226 echo "Testing no limit requested for pagedResults disabled ID..."
1227 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1228 -D 'cn=Paged Results Disabled User,ou=Paged Results Users,dc=example,dc=com' \
1229 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1230 RC=$?
1231 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1232 case $RC in
1233 0)
1234 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
1235 ;;
1236 4)
1237 echo "...bumped into server-side size limit ($COUNT)"
1238 ;;
1239 11)
1240 echo "...bumped into pagedResults disabled administrative limit"
1241 ;;
1242 *)
1243 echo "ldapsearch failed ($RC)!"
1244 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1245 exit $RC
1246 ;;
1247 esac
1248
1249 echo "Testing no limit requested for pagedResults total count limited ID..."
1250 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1251 -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
1252 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1253 RC=$?
1254 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1255 case $RC in
1256 0)
1257 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
1258 ;;
1259 4)
1260 echo "...bumped into server-side size limit ($COUNT)"
1261 ;;
1262 11)
1263 echo "...bumped into pagedResults total count administrative limit"
1264 ;;
1265 *)
1266 echo "ldapsearch failed ($RC)!"
1267 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1268 exit $RC
1269 ;;
1270 esac
1271
1272 SIZELIMIT=8
1273 echo "Testing higher than hard but lower then total count limit requested for pagedResults total count limited ID..."
1274 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1275 -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
1276 -z $SIZELIMIT -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1277 RC=$?
1278 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1279 case $RC in
1280 0)
1281 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side unchecked limit (got $COUNT entries)"
1282 ;;
1283 4)
1284 if test "x$COUNT" != "x" ; then
1285 if test "x$SIZELIMIT" = "x$COUNT" ; then
1286 echo "...bumped into requested ($SIZELIMIT) size limit"
1287 else
1288 echo "...bumped into server-side size limit ($COUNT)"
1289 fi
1290 else
1291 echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
1292 fi
1293 ;;
1294 11)
1295 echo "...bumped into either hard size or pagedResults total count administrative limit"
1296 ;;
1297 *)
1298 echo "ldapsearch failed ($RC)!"
1299 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1300 exit $RC
1301 ;;
1302 esac
1303
1304 SIZELIMIT=15
1305 echo "Testing higher than total count limit requested for pagedResults total count limited ID..."
1306 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1307 -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
1308 -z $SIZELIMIT -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1309 RC=$?
1310 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1311 case $RC in
1312 0)
1313 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side unchecked limit (got $COUNT entries)"
1314 ;;
1315 4)
1316 if test "x$COUNT" != "x" ; then
1317 if test "x$SIZELIMIT" = "x$COUNT" ; then
1318 echo "...bumped into requested ($SIZELIMIT) size limit"
1319 else
1320 echo "...bumped into server-side size limit ($COUNT)"
1321 fi
1322 else
1323 echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
1324 fi
1325 ;;
1326 11)
1327 echo "...bumped into pagedResults total count administrative limit"
1328 ;;
1329 *)
1330 echo "ldapsearch failed ($RC)!"
1331 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1332 exit $RC
1333 ;;
1334 esac
1335
1336 SIZELIMIT=max
1337 echo "Testing max limit requested for pagedResults total count limited ID..."
1338 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
1339 -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
1340 -z $SIZELIMIT -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1341 RC=$?
1342 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1343 case $RC in
1344 0)
1345 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side unchecked limit (got $COUNT entries)"
1346 ;;
1347 4)
1348 if test "x$COUNT" != "x" ; then
1349 if test "x$SIZELIMIT" = "x$COUNT" ; then
1350 echo "...bumped into requested ($SIZELIMIT) size limit"
1351 else
1352 echo "...bumped into server-side size limit ($COUNT)"
1353 fi
1354 else
1355 echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
1356 fi
1357 ;;
1358 11)
1359 echo "...bumped into pagedResults total count administrative limit"
1360 ;;
1361 *)
1362 echo "ldapsearch failed ($RC)!"
1363 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1364 exit $RC
1365 ;;
1366 esac
1367
1368 # ITS#4479
1369 PAGESIZE=1
1370 SIZELIMIT=2
1371 echo "Testing size limit request ($SIZELIMIT) for unlimited ID and pagesize=$PAGESIZE..."
1372 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
1373 -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
1374 -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
1375 RC=$?
1376 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
1377 case $RC in
1378 0)
1379 if test x"$COUNT" != x ; then
1380 if test "$COUNT" -gt "$SIZELIMIT" ; then
1381 echo "...error: got $COUNT entries instead of the requested $SIZELIMIT"
1382 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1383 exit 1
1384 fi
1385 echo "...didn't bump into the requested size limit ($SIZELIMIT; got $COUNT entries)"
1386 else
1387 echo "...error: did not expect ldapsearch success ($RC)!"
1388 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1389 exit 1
1390 fi
1391 ;;
1392 4)
1393 if test x"$COUNT" != x ; then
1394 if test $COUNT = $SIZELIMIT ; then
1395 echo "...bumped into requested size limit ($SIZELIMIT)"
1396 else
1397 echo "...error: got $COUNT entries while requesting $SIZELIMIT..."
1398 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1399 exit $RC
1400 fi
1401 else
1402 echo "...error: bumped into server-side size limit, but got no entries!"
1403 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1404 exit $RC
1405 fi
1406 ;;
1407 *)
1408 echo "ldapsearch failed ($RC)!"
1409 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1410 exit $RC
1411 ;;
1412 esac
1413
1414 test $KILLSERVERS != no && kill -HUP $KILLPIDS
1415
1416 echo ">>>>> Test succeeded"
1417
1418 test $KILLSERVERS != no && wait
1419
1420 exit 0
1421