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