1#! /bin/sh 2# OpenLDAP: pkg/ldap/tests/scripts/test025-limits,v 1.19.2.6 2009/01/22 00:01:19 kurt Exp 3## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4## 5## Copyright 1998-2009 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 18echo "running defines.sh" 19. $SRCDIR/scripts/defines.sh 20 21mkdir -p $TESTDIR $DBDIR1 22 23echo "Running slapadd to build slapd database..." 24. $CONFFILTER $BACKEND $MONITORDB < $LIMITSCONF > $ADDCONF 25$SLAPADD -f $ADDCONF -l $LDIFLIMITS 26RC=$? 27if test $RC != 0 ; then 28 echo "slapadd failed ($RC)!" 29 exit $RC 30fi 31 32echo "Running slapindex to index slapd database..." 33. $CONFFILTER $BACKEND $MONITORDB < $LIMITSCONF > $CONF1 34$SLAPINDEX -f $CONF1 35RC=$? 36if test $RC != 0 ; then 37 echo "warning: slapindex failed ($RC)" 38 echo " assuming no indexing support" 39fi 40 41echo "Starting slapd on TCP/IP port $PORT1..." 42$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & 43PID=$! 44if test $WAIT != 0 ; then 45 echo PID $PID 46 read foo 47fi 48KILLPIDS="$PID" 49 50sleep 1 51 52echo "Testing slapd searching..." 53for 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 62done 63 64if test $RC != 0 ; then 65 echo "ldapsearch failed ($RC)!" 66 test $KILLSERVERS != no && kill -HUP $KILLPIDS 67 exit $RC 68fi 69 70cat /dev/null > $SEARCHOUT 71 72echo "" 73echo "Testing regular search limits" 74echo "" 75 76echo "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 80RC=$? 81COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 82case $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 ;; 97esac 98 99echo "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 103RC=$? 104COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 105case $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 ;; 120esac 121 122SIZELIMIT=4 123echo "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 127RC=$? 128COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 129case $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 ;; 164esac 165 166SIZELIMIT=2 167echo "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 171RC=$? 172COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 173case $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 ;; 208esac 209 210TIMELIMIT=10 211echo "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 215RC=$? 216COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 217case $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 ;; 238esac 239 240echo "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 244RC=$? 245COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 246case $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 ;; 270esac 271 272SIZELIMIT=2 273echo "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 277RC=$? 278COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 279case $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 ;; 312esac 313 314SIZELIMIT=100 315echo "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 319RC=$? 320COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 321case $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 ;; 354esac 355 356SIZELIMIT=2 357echo "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 361RC=$? 362COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 363case $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 ;; 386esac 387 388SIZELIMIT=100 389echo "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 393RC=$? 394COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 395case $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 ;; 433esac 434 435SIZELIMIT=max 436echo "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 440RC=$? 441COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 442case $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 ;; 469esac 470 471echo "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 475RC=$? 476COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 477case $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 ;; 497esac 498 499case $BACKEND in bdb | hdb) 500 501echo "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 505RC=$? 506COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 507case $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 ;; 525esac 526 527echo "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 531RC=$? 532COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 533case $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 ;; 551esac 552;; 553*) echo "Skipping test for unchecked limit with $BACKEND backend." ;; 554esac 555 556echo "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 560RC=$? 561COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 562case $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 ;; 586esac 587 588echo "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 592RC=$? 593COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 594case $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 ;; 618esac 619 620echo "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 624RC=$? 625COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 626case $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 ;; 650esac 651 652echo "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 656RC=$? 657COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 658case $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 ;; 682esac 683 684echo "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 688RC=$? 689COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 690case $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 ;; 714esac 715 716echo "Testing no limit requested for limited anonymous..." 717$LDAPRSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \ 718 '(objectClass=*)' > $SEARCHOUT 2>&1 719RC=$? 720COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 721case $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 ;; 745esac 746 747case $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 ;; 757esac 758 759if 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 770else 771 PAGESIZE=5 772fi 773 774echo "" 775echo "Testing regular search limits with pagedResults control (page size $PAGESIZE)" 776echo "" 777 778echo "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 782RC=$? 783COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 784case $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 ;; 799esac 800 801SIZELIMIT=2 802echo "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 806RC=$? 807COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 808case $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 ;; 843esac 844 845TIMELIMIT=10 846echo "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 850RC=$? 851COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 852case $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 ;; 873esac 874 875echo "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 879RC=$? 880COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 881case $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 ;; 905esac 906 907SIZELIMIT=2 908echo "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 912RC=$? 913COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 914case $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 ;; 945esac 946 947SIZELIMIT=100 948echo "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 952RC=$? 953COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 954case $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 ;; 985esac 986 987SIZELIMIT=2 988echo "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 992RC=$? 993COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 994case $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 ;; 1029esac 1030 1031SIZELIMIT=100 1032echo "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 1036RC=$? 1037COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1038case $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 ;; 1076esac 1077 1078SIZELIMIT=max 1079echo "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 1083RC=$? 1084COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1085case $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 ;; 1112esac 1113 1114echo "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 1118RC=$? 1119COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1120case $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 ;; 1138esac 1139 1140echo "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 1144RC=$? 1145COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1146case $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 ;; 1164esac 1165 1166echo "" 1167echo "Testing specific search limits with pagedResults control" 1168echo "" 1169 1170echo "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 1174RC=$? 1175COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1176case $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 ;; 1200esac 1201 1202echo "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 1206RC=$? 1207COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1208case $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 ;; 1223esac 1224 1225echo "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 1229RC=$? 1230COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1231case $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 ;; 1246esac 1247 1248echo "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 1252RC=$? 1253COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1254case $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 ;; 1269esac 1270 1271SIZELIMIT=8 1272echo "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 1276RC=$? 1277COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1278case $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 ;; 1301esac 1302 1303SIZELIMIT=15 1304echo "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 1308RC=$? 1309COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1310case $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 ;; 1333esac 1334 1335SIZELIMIT=max 1336echo "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 1340RC=$? 1341COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1342case $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 ;; 1365esac 1366 1367# ITS#4479 1368PAGESIZE=1 1369SIZELIMIT=2 1370echo "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 1374RC=$? 1375COUNT=`awk '/^# numEntries:/ {print $3}' $SEARCHOUT` 1376case $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 ;; 1411esac 1412 1413test $KILLSERVERS != no && kill -HUP $KILLPIDS 1414 1415echo ">>>>> Test succeeded" 1416 1417test $KILLSERVERS != no && wait 1418 1419exit 0 1420