]> git.sur5r.net Git - openldap/blob - tests/scripts/test025-limits
6f7beaa70cbb69aac875bc24fa7e0b61476b8e6c
[openldap] / tests / scripts / test025-limits
1 #! /bin/sh
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 1998-2004 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 mkdir -p $TESTDIR $DBDIR1
22
23 echo "Running slapadd to build slapd database..."
24 . $CONFFILTER $BACKEND $MONITORDB < $LIMITSCONF > $ADDCONF
25 $SLAPADD -f $ADDCONF -l $LDIFLIMITS
26 RC=$?
27 if test $RC != 0 ; then
28         echo "slapadd failed ($RC)!"
29         exit $RC
30 fi
31
32 echo "Running slapindex to index slapd database..."
33 . $CONFFILTER $BACKEND $MONITORDB < $LIMITSCONF > $CONF1
34 $SLAPINDEX -f $CONF1
35 RC=$?
36 if test $RC != 0 ; then
37         echo "warning: slapindex failed ($RC)"
38         echo "  assuming no indexing support"
39 fi
40
41 echo "Starting slapd on TCP/IP port $PORT1..."
42 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
43 PID=$!
44 if test $WAIT != 0 ; then
45     echo PID $PID
46     read foo
47 fi
48 KILLPIDS="$PID"
49
50 echo "Testing slapd searching..."
51 for i in 0 1 2 3 4 5; do
52         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
53                 '(objectclass=*)' > /dev/null 2>&1
54         RC=$?
55         if test $RC = 0 ; then
56                 break
57         fi
58         echo "Waiting 5 seconds for slapd to start..."
59         sleep 5
60 done
61
62 if test $RC != 0 ; then
63         echo "ldapsearch failed ($RC)!"
64         test $KILLSERVERS != no && kill -HUP $KILLPIDS
65         exit $RC
66 fi
67
68 cat /dev/null > $SEARCHOUT
69
70 echo ""
71 echo "Testing regular search limits"
72 echo ""
73
74 echo "Testing no limits requested for unlimited ID..."
75 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
76         -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
77         '(objectClass=*)' >$SEARCHOUT 2>&1
78 RC=$?
79 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
80 case $RC in
81         0)
82                 echo "...success (got $COUNT entries)"
83         ;;
84         *)
85                 echo "ldapsearch failed ($RC)!"
86                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
87                 exit $RC
88         ;;
89 esac
90
91 SIZELIMIT=2
92 echo "Testing size limit request ($SIZELIMIT) for unlimited ID..."
93 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
94         -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
95         '(objectClass=*)' > $SEARCHOUT 2>&1
96 RC=$?
97 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
98 case $RC in
99         0)
100                 echo "...success (got $COUNT entries)"
101         ;;
102         4)
103                 echo "...bumped into requested size limit ($SIZELIMIT)"
104         ;;
105         *)
106                 echo "ldapsearch failed ($RC)!"
107                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
108                 exit $RC
109         ;;
110 esac
111
112 TIMELIMIT=10
113 echo "Testing time limit request ($TIMELIMIT s) for unlimited ID..."
114 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -l $TIMELIMIT \
115         -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
116         '(objectClass=*)' > $SEARCHOUT 2>&1
117 RC=$?
118 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
119 case $RC in
120         0)
121                 echo "...success (got $COUNT entries)"
122         ;;
123         3)
124                 echo "...bumped into requested time limit ($TIMELIMIT s; $COUNT entries)"
125         ;;
126         *)
127                 echo "ldapsearch failed ($RC)!"
128                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
129                 exit $RC
130         ;;
131 esac
132
133 echo "Testing no limits requested for soft limited ID..."
134 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
135         -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
136         '(objectClass=*)' > $SEARCHOUT 2>&1
137 RC=$?
138 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
139 case $RC in
140         0)
141                 echo "...success; didn't bump into server-side size limit (got $COUNT entries)"
142         ;;
143         4)
144                 echo "...bumped into server-side size limit ($COUNT)"
145         ;;
146         *)
147                 echo "ldapsearch failed ($RC)!"
148                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
149                 exit $RC
150         ;;
151 esac
152
153 SIZELIMIT=2
154 echo "Testing lower than soft limit request ($SIZELIMIT) for soft limited ID..."
155 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
156         -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
157         '(objectClass=*)' > $SEARCHOUT 2>&1
158 RC=$?
159 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
160 case $RC in
161         0)
162                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
163         ;;
164         4)
165                 if test "x$COUNT" != "x" ; then
166                         if test "x$SIZELIMIT" = "x$COUNT" ; then
167                                 echo "...bumped into requested ($SIZELIMIT) size limit"
168                         else
169                                 echo "...bumped into server-side size limit ($COUNT)"
170                         fi
171                 else
172                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
173                 fi
174         ;;
175         *)
176                 echo "ldapsearch failed ($RC)!"
177                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
178                 exit $RC
179         ;;
180 esac
181
182 SIZELIMIT=100
183 echo "Testing higher than soft limit request ($SIZELIMIT) for soft limited ID..."
184 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
185         -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
186         '(objectClass=*)' > $SEARCHOUT 2>&1
187 RC=$?
188 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
189 case $RC in
190         0)
191                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
192         ;;
193         4)
194                 if test "x$COUNT" != "x" ; then
195                         if test "x$SIZELIMIT" = "x$COUNT" ; then
196                                 echo "...bumped into requested ($SIZELIMIT) size limit"
197                         else
198                                 echo "...bumped into server-side size limit ($COUNT)"
199                         fi
200                 else
201                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
202                 fi
203         ;;
204         *)
205                 echo "ldapsearch failed ($RC)!"
206                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
207                 exit $RC
208         ;;
209 esac
210
211 SIZELIMIT=2
212 echo "Testing lower than hard limit request ($SIZELIMIT) for hard limited ID..."
213 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
214         -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
215         '(objectClass=*)' > $SEARCHOUT 2>&1
216 RC=$?
217 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
218 case $RC in
219         0)
220                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
221         ;;
222         4)
223                 echo "...bumped into requested ($SIZELIMIT) size limit"
224         ;;
225         *)
226                 echo "ldapsearch failed ($RC)!"
227                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
228                 exit $RC
229         ;;
230 esac
231
232 SIZELIMIT=100
233 echo "Testing higher than hard limit request ($SIZELIMIT) for hard limited ID..."
234 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
235         -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
236         '(objectClass=*)' > $SEARCHOUT 2>&1
237 RC=$?
238 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
239 case $RC in
240         0)
241                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
242         ;;
243         4)
244                 echo "...bumped into requested ($SIZELIMIT) size limit"
245         ;;
246         11)
247                 echo "...bumped into server-side hard size administrative limit"
248         ;;
249         *)
250                 echo "ldapsearch failed ($RC)!"
251                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
252                 exit $RC
253         ;;
254 esac
255
256 SIZELIMIT=max
257 echo "Testing max limit request ($SIZELIMIT) for hard limited ID..."
258 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
259         -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
260         '(objectClass=*)' > $SEARCHOUT 2>&1
261 RC=$?
262 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
263 case $RC in
264         0)
265                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
266         ;;
267         4)
268                 echo "...bumped into requested ($SIZELIMIT=$COUNT) size limit"
269         ;;
270         11)
271                 echo "...bumped into server-side hard size administrative limit"
272         ;;
273         *)
274                 echo "ldapsearch failed ($RC)!"
275                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
276                 exit $RC
277         ;;
278 esac
279
280 echo "Testing lower than unchecked limit request for unchecked limited ID..."
281 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
282         -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
283         '(uid=uncheckedlimited)' > $SEARCHOUT 2>&1
284 RC=$?
285 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
286 case $RC in
287         0)
288                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
289         ;;
290         11)
291                 echo "...bumped into unchecked administrative limit"
292         ;;
293         *)
294                 echo "ldapsearch failed ($RC)!"
295                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
296                 exit $RC
297         ;;
298 esac
299
300 echo "Testing higher than unchecked limit requested for unchecked limited ID..."
301 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
302         -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
303         '(objectClass=*)' > $SEARCHOUT 2>&1
304 RC=$?
305 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
306 case $RC in
307         0)
308                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
309         ;;
310         11)
311                 echo "...bumped into unchecked administrative limit"
312         ;;
313         *)
314                 echo "ldapsearch failed ($RC)!"
315                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
316                 exit $RC
317         ;;
318 esac
319
320 echo "Testing no limits requested for unchecked limited group..."
321 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
322         -D 'cn=Unchecked Limited User 2,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                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
329         ;;
330         11)
331                 echo "...bumped into unchecked administrative limit"
332         ;;
333         *)
334                 echo "ldapsearch failed ($RC)!"
335                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
336                 exit $RC
337         ;;
338 esac
339
340 echo "Testing no limits requested for limited regex..."
341 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
342         -D 'cn=Foo User,ou=People,dc=example,dc=com' \
343         '(objectClass=*)' > $SEARCHOUT 2>&1
344 RC=$?
345 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
346 case $RC in
347         0)
348                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
349         ;;
350         4)
351                 if test "x$COUNT" != "x" ; then
352                         if test "x$SIZELIMIT" = "x$COUNT" ; then
353                                 echo "...bumped into requested ($SIZELIMIT) size limit"
354                         else
355                                 echo "...bumped into server-side size limit ($COUNT)"
356                         fi
357                 else
358                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
359                 fi
360         ;;
361         *)
362                 echo "ldapsearch failed ($RC)!"
363                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
364                 exit $RC
365         ;;
366 esac
367
368 echo "Testing no limits requested for limited onelevel..."
369 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
370         -D 'cn=Bar User,ou=People,dc=example,dc=com' \
371         '(objectClass=*)' > $SEARCHOUT 2>&1
372 RC=$?
373 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
374 case $RC in
375         0)
376                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
377         ;;
378         4)
379                 if test "x$COUNT" != "x" ; then
380                         if test "x$SIZELIMIT" = "x$COUNT" ; then
381                                 echo "...bumped into requested ($SIZELIMIT) size limit"
382                         else
383                                 echo "...bumped into server-side size limit ($COUNT)"
384                         fi
385                 else
386                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
387                 fi
388         ;;
389         *)
390                 echo "ldapsearch failed ($RC)!"
391                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
392                 exit $RC
393         ;;
394 esac
395
396 echo "Testing no limit requested for limited children..."
397 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
398         -D 'cn=Unchecked Limited Users,ou=Groups,dc=example,dc=com' \
399         '(objectClass=*)' > $SEARCHOUT 2>&1
400 RC=$?
401 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
402 case $RC in
403         0)
404                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
405         ;;
406         4)
407                 if test "x$COUNT" != "x" ; then
408                         if test "x$SIZELIMIT" = "x$COUNT" ; then
409                                 echo "...bumped into requested ($SIZELIMIT) size limit"
410                         else
411                                 echo "...bumped into server-side size limit ($COUNT)"
412                         fi
413                 else
414                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
415                 fi
416         ;;
417         *)
418                 echo "ldapsearch failed ($RC)!"
419                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
420                 exit $RC
421         ;;
422 esac
423
424 echo "Testing no limit requested for limited subtree..."
425 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
426         -D 'cn=Unchecked Limited User 3,ou=Admin,dc=example,dc=com' \
427         '(objectClass=*)' > $SEARCHOUT 2>&1
428 RC=$?
429 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
430 case $RC in
431         0)
432                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
433         ;;
434         4)
435                 if test "x$COUNT" != "x" ; then
436                         if test "x$SIZELIMIT" = "x$COUNT" ; then
437                                 echo "...bumped into requested ($SIZELIMIT) size limit"
438                         else
439                                 echo "...bumped into server-side size limit ($COUNT)"
440                         fi
441                 else
442                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
443                 fi
444         ;;
445         *)
446                 echo "ldapsearch failed ($RC)!"
447                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
448                 exit $RC
449         ;;
450 esac
451
452 echo "Testing no limit requested for limited users..."
453 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
454         -D 'cn=Special User,dc=example,dc=com' \
455         '(objectClass=*)' > $SEARCHOUT 2>&1
456 RC=$?
457 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
458 case $RC in
459         0)
460                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
461         ;;
462         4)
463                 if test "x$COUNT" != "x" ; then
464                         if test "x$SIZELIMIT" = "x$COUNT" ; then
465                                 echo "...bumped into requested ($SIZELIMIT) size limit"
466                         else
467                                 echo "...bumped into server-side size limit ($COUNT)"
468                         fi
469                 else
470                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
471                 fi
472         ;;
473         *)
474                 echo "ldapsearch failed ($RC)!"
475                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
476                 exit $RC
477         ;;
478 esac
479
480 echo "Testing no limit requested for limited anonymous..."
481 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
482         '(objectClass=*)' > $SEARCHOUT 2>&1
483 RC=$?
484 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
485 case $RC in
486         0)
487                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
488         ;;
489         4)
490                 if test "x$COUNT" != "x" ; then
491                         if test "x$SIZELIMIT" = "x$COUNT" ; then
492                                 echo "...bumped into requested ($SIZELIMIT) size limit"
493                         else
494                                 echo "...bumped into server-side size limit ($COUNT)"
495                         fi
496                 else
497                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
498                 fi
499         ;;
500         *)
501                 echo "ldapsearch failed ($RC)!"
502                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
503                 exit $RC
504         ;;
505 esac
506
507 case $BACKEND in
508         bdb | hdb)
509                 # only bdb|hdb currently supports pagedResults control
510                 ;;
511         *)
512                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
513
514                 echo ">>>>> Test succeeded"
515                 exit 0
516         ;;
517 esac
518
519 echo ""
520 echo "Testing regular search limits with pagedResults control"
521 echo ""
522
523 PAGESIZE=5
524 echo "Testing no limits requested for unlimited ID..."
525 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
526         -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
527         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' >$SEARCHOUT 2>&1
528 RC=$?
529 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
530 case $RC in
531         0)
532                 echo "...success (got $COUNT entries)"
533         ;;
534         *)
535                 echo "ldapsearch failed ($RC)!"
536                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
537                 exit $RC
538         ;;
539 esac
540
541 SIZELIMIT=2
542 echo "Testing size limit request ($SIZELIMIT) for unlimited ID..."
543 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
544         -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
545         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
546 RC=$?
547 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
548 case $RC in
549         0)
550                 echo "...success (got $COUNT entries)"
551         ;;
552         4)
553                 echo "...bumped into requested size limit ($SIZELIMIT)"
554         ;;
555         *)
556                 echo "ldapsearch failed ($RC)!"
557                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
558                 exit $RC
559         ;;
560 esac
561
562 TIMELIMIT=10
563 echo "Testing time limit request ($TIMELIMIT s) for unlimited ID..."
564 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -l $TIMELIMIT \
565         -D 'cn=Unlimited User,ou=People,dc=example,dc=com' \
566         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
567 RC=$?
568 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
569 case $RC in
570         0)
571                 echo "...success (got $COUNT entries)"
572         ;;
573         3)
574                 echo "...bumped into requested time limit ($TIMELIMIT s; $COUNT entries)"
575         ;;
576         *)
577                 echo "ldapsearch failed ($RC)!"
578                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
579                 exit $RC
580         ;;
581 esac
582
583 echo "Testing no limits requested for soft limited ID..."
584 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
585         -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
586         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
587 RC=$?
588 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
589 case $RC in
590         0)
591                 echo "...success; didn't bump into server-side size limit (got $COUNT entries)"
592         ;;
593         4)
594                 echo "...bumped into server-side size limit ($COUNT)"
595         ;;
596         *)
597                 echo "ldapsearch failed ($RC)!"
598                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
599                 exit $RC
600         ;;
601 esac
602
603 SIZELIMIT=2
604 echo "Testing lower than soft limit request ($SIZELIMIT) for soft limited ID..."
605 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
606         -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
607         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
608 RC=$?
609 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
610 case $RC in
611         0)
612                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
613         ;;
614         4)
615                 if test "x$COUNT" != "x" ; then
616                         if test "x$SIZELIMIT" = "x$COUNT" ; then
617                                 echo "...bumped into requested ($SIZELIMIT) size limit"
618                         else
619                                 echo "...bumped into server-side size limit ($COUNT)"
620                         fi
621                 else
622                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
623                 fi
624         ;;
625         *)
626                 echo "ldapsearch failed ($RC)!"
627                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
628                 exit $RC
629         ;;
630 esac
631
632 SIZELIMIT=100
633 echo "Testing higher than soft limit request ($SIZELIMIT) for soft limited ID..."
634 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
635         -D 'cn=Soft Limited User,ou=People,dc=example,dc=com' \
636         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
637 RC=$?
638 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
639 case $RC in
640         0)
641                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
642         ;;
643         4)
644                 if test "x$COUNT" != "x" ; then
645                         if test "x$SIZELIMIT" = "x$COUNT" ; then
646                                 echo "...bumped into requested ($SIZELIMIT) size limit"
647                         else
648                                 echo "...bumped into server-side size limit ($COUNT)"
649                         fi
650                 else
651                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
652                 fi
653         ;;
654         *)
655                 echo "ldapsearch failed ($RC)!"
656                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
657                 exit $RC
658         ;;
659 esac
660
661 SIZELIMIT=2
662 echo "Testing lower than hard limit request ($SIZELIMIT) for hard limited ID..."
663 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
664         -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
665         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
666 RC=$?
667 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
668 case $RC in
669         0)
670                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
671         ;;
672         4)
673                 echo "...bumped into requested ($SIZELIMIT) size limit"
674         ;;
675         *)
676                 echo "ldapsearch failed ($RC)!"
677                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
678                 exit $RC
679         ;;
680 esac
681
682 SIZELIMIT=100
683 echo "Testing higher than hard limit request ($SIZELIMIT) for hard limited ID..."
684 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
685         -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
686         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
687 RC=$?
688 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
689 case $RC in
690         0)
691                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
692         ;;
693         4)
694                 echo "...bumped into requested ($SIZELIMIT) size limit"
695         ;;
696         11)
697                 echo "...bumped into hard size administrative limit"
698         ;;
699         *)
700                 echo "ldapsearch failed ($RC)!"
701                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
702                 exit $RC
703         ;;
704 esac
705
706 SIZELIMIT=max
707 echo "Testing max limit request ($SIZELIMIT) for hard limited ID..."
708 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret -z $SIZELIMIT \
709         -D 'cn=Hard Limited User,ou=People,dc=example,dc=com' \
710         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
711 RC=$?
712 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
713 case $RC in
714         0)
715                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side size limit (got $COUNT entries)"
716         ;;
717         4)
718                 echo "...bumped into requested ($SIZELIMIT=$COUNT) size limit"
719         ;;
720         11)
721                 echo "...bumped into hard size administrative limit"
722         ;;
723         *)
724                 echo "ldapsearch failed ($RC)!"
725                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
726                 exit $RC
727         ;;
728 esac
729
730 echo "Testing lower than unchecked limit request for unchecked limited ID..."
731 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
732         -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
733         -E '!pr='$PAGESIZE'/noprompt' '(uid=uncheckedlimited)' > $SEARCHOUT 2>&1
734 RC=$?
735 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
736 case $RC in
737         0)
738                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
739         ;;
740         11)
741                 echo "...bumped into unchecked administrative limit"
742         ;;
743         *)
744                 echo "ldapsearch failed ($RC)!"
745                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
746                 exit $RC
747         ;;
748 esac
749
750 echo "Testing higher than unchecked limit requested for unchecked limited ID..."
751 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
752         -D 'cn=Unchecked Limited User,ou=People,dc=example,dc=com' \
753         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
754 RC=$?
755 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
756 case $RC in
757         0)
758                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
759         ;;
760         11)
761                 echo "...bumped into unchecked administrative limit"
762         ;;
763         *)
764                 echo "ldapsearch failed ($RC)!"
765                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
766                 exit $RC
767         ;;
768 esac
769
770 echo ""
771 echo "Testing specific search limits with pagedResults control"
772 echo ""
773
774 echo "Testing no limit requested for unlimited page size ID..."
775 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
776         -D 'cn=Unlimited User,ou=Paged Results Users,dc=example,dc=com' \
777         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
778 RC=$?
779 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
780 case $RC in
781         0)
782                 echo "...success; didn't bump into server-side size limit (got $COUNT entries)"
783         ;;
784         4)
785                 echo "...bumped into server-side size limit ($COUNT)"
786         ;;
787         *)
788                 echo "ldapsearch failed ($RC)!"
789                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
790                 exit $RC
791         ;;
792 esac
793
794 echo "Testing no limit requested for limited page size ID..."
795 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
796         -D 'cn=Page Size Limited User,ou=Paged Results Users,dc=example,dc=com' \
797         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
798 RC=$?
799 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
800 case $RC in
801         0)
802                 echo "...success; didn't bump into server-side page size limit (got $COUNT entries)"
803         ;;
804         4)
805                 echo "...bumped into page size limit ($COUNT)"
806         ;;
807         11)
808                 echo "...bumped into page size administrative limit"
809         ;;
810         *)
811                 echo "ldapsearch failed ($RC)!"
812                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
813                 exit $RC
814         ;;
815 esac
816
817 echo "Testing no limit requested for pagedResults disabled ID..."
818 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
819         -D 'cn=Paged Results Disabled User,ou=Paged Results Users,dc=example,dc=com' \
820         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
821 RC=$?
822 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
823 case $RC in
824         0)
825                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
826         ;;
827         4)
828                 echo "...bumped into server-side size limit ($COUNT)"
829         ;;
830         11)
831                 echo "...bumped into pagedResults disabled administrative limit"
832         ;;
833         *)
834                 echo "ldapsearch failed ($RC)!"
835                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
836                 exit $RC
837         ;;
838 esac
839
840 echo "Testing no limit requested for pagedResults total count limited ID..."
841 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
842         -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
843         -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
844 RC=$?
845 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
846 case $RC in
847         0)
848                 echo "...success; didn't bump into server-side unchecked limit (got $COUNT entries)"
849         ;;
850         4)
851                 echo "...bumped into server-side size limit ($COUNT)"
852         ;;
853         11)
854                 echo "...bumped into pagedResults total count administrative limit"
855         ;;
856         *)
857                 echo "ldapsearch failed ($RC)!"
858                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
859                 exit $RC
860         ;;
861 esac
862
863 SIZELIMIT=8
864 echo "Testing higher than hard but lower then total count limit requested for pagedResults total count limited ID..."
865 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
866         -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
867         -z $SIZELIMIT -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
868 RC=$?
869 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
870 case $RC in
871         0)
872                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side unchecked limit (got $COUNT entries)"
873         ;;
874         4)
875                 if test "x$COUNT" != "x" ; then
876                         if test "x$SIZELIMIT" = "x$COUNT" ; then
877                                 echo "...bumped into requested ($SIZELIMIT) size limit"
878                         else
879                                 echo "...bumped into server-side size limit ($COUNT)"
880                         fi
881                 else
882                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
883                 fi
884         ;;
885         11)
886                 echo "...bumped into either hard size or pagedResults total count administrative limit"
887         ;;
888         *)
889                 echo "ldapsearch failed ($RC)!"
890                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
891                 exit $RC
892         ;;
893 esac
894
895 SIZELIMIT=15
896 echo "Testing higher than total count limit requested for pagedResults total count limited ID..."
897 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
898         -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
899         -z $SIZELIMIT -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
900 RC=$?
901 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
902 case $RC in
903         0)
904                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side unchecked limit (got $COUNT entries)"
905         ;;
906         4)
907                 if test "x$COUNT" != "x" ; then
908                         if test "x$SIZELIMIT" = "x$COUNT" ; then
909                                 echo "...bumped into requested ($SIZELIMIT) size limit"
910                         else
911                                 echo "...bumped into server-side size limit ($COUNT)"
912                         fi
913                 else
914                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
915                 fi
916         ;;
917         11)
918                 echo "...bumped into pagedResults total count administrative limit"
919         ;;
920         *)
921                 echo "ldapsearch failed ($RC)!"
922                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
923                 exit $RC
924         ;;
925 esac
926
927 SIZELIMIT=max
928 echo "Testing max limit requested for pagedResults total count limited ID..."
929 $LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 -w secret \
930         -D 'cn=Paged Results Limited User,ou=Paged Results Users,dc=example,dc=com' \
931         -z $SIZELIMIT -E '!pr='$PAGESIZE'/noprompt' '(objectClass=*)' > $SEARCHOUT 2>&1
932 RC=$?
933 COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT`
934 case $RC in
935         0)
936                 echo "...success; didn't bump into either requested ($SIZELIMIT) or server-side unchecked limit (got $COUNT entries)"
937         ;;
938         4)
939                 if test "x$COUNT" != "x" ; then
940                         if test "x$SIZELIMIT" = "x$COUNT" ; then
941                                 echo "...bumped into requested ($SIZELIMIT) size limit"
942                         else
943                                 echo "...bumped into server-side size limit ($COUNT)"
944                         fi
945                 else
946                         echo "...bumped into either requested ($SIZELIMIT) or server-side size limit"
947                 fi
948         ;;
949         11)
950                 echo "...bumped into pagedResults total count administrative limit"
951         ;;
952         *)
953                 echo "ldapsearch failed ($RC)!"
954                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
955                 exit $RC
956         ;;
957 esac
958
959 test $KILLSERVERS != no && kill -HUP $KILLPIDS
960
961 echo ">>>>> Test succeeded"
962 exit 0