test020-proxycache revision 1.1.1.8
1#! /bin/sh 2# $OpenLDAP$ 3## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4## 5## Copyright 1998-2020 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 16PCACHETTL=${PCACHETTL-"1m"} 17PCACHENTTL=${PCACHENTTL-"1m"} 18PCACHESTTL=${PCACHESTTL-"1m"} 19PCACHE_ENTRY_LIMIT=${PCACHE_ENTRY_LIMIT-"6"} 20PCACHE_CCPERIOD=${PCACHE_CCPERIOD-"2"} 21PCACHETTR=${PCACHETTR-"2"} 22PCACHEBTTR=${PCACHEBTTR-"5"} 23 24. $SRCDIR/scripts/defines.sh 25 26if test $PROXYCACHE = pcacheno; then 27 echo "Proxy cache overlay not available, test skipped" 28 exit 0 29fi 30 31if test $BACKLDAP = "ldapno" ; then 32 echo "LDAP backend not available, test skipped" 33 exit 0 34fi 35 36if test $BACKEND = ldif ; then 37 # The (mail=example.com*) queries hit a sizelimit, so which 38 # entry is returned depends on the ordering in the backend. 39 echo "Test does not support $BACKEND backend, test skipped" 40 exit 0 41fi 42 43mkdir -p $TESTDIR $DBDIR1 $DBDIR2 44 45# Test proxy caching: 46# - start master 47# - start proxy cache 48# - populate master 49# - perform first set of searches at the proxy 50# - verify cacheability 51# - perform second set of searches at the proxy 52# - verify answerability 53 54echo "Starting master slapd on TCP/IP port $PORT1..." 55. $CONFFILTER < $CACHEMASTERCONF > $CONF1 56$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 57PID=$! 58if test $WAIT != 0 ; then 59 echo PID $PID 60 read foo 61fi 62KILLPIDS="$PID" 63 64sleep 1 65 66echo "Using ldapsearch to check that master slapd is running..." 67for i in 0 1 2 3 4 5; do 68 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ 69 'objectclass=*' > /dev/null 2>&1 70 RC=$? 71 if test $RC = 0 ; then 72 break 73 fi 74 echo "Waiting 5 seconds for slapd to start..." 75 sleep 5 76done 77 78if test $RC != 0 ; then 79 echo "ldapsearch failed ($RC)!" 80 test $KILLSERVERS != no && kill -HUP $KILLPIDS 81 exit $RC 82fi 83 84echo "Using ldapadd to populate the master directory..." 85$LDAPADD -x -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \ 86 $LDIFORDERED > /dev/null 2>&1 87RC=$? 88if test $RC != 0 ; then 89 echo "ldapadd failed ($RC)!" 90 test $KILLSERVERS != no && kill -HUP $KILLPIDS 91 exit $RC 92fi 93 94echo "Starting proxy cache on TCP/IP port $PORT2..." 95. $CONFFILTER < $PROXYCACHECONF | sed \ 96 -e "s/@TTL@/${PCACHETTL}/" \ 97 -e "s/@NTTL@/${PCACHENTTL}/" \ 98 -e "s/@STTL@/${PCACHENTTL}/" \ 99 -e "s/@TTR@/${PCACHETTR}/" \ 100 -e "s/@ENTRY_LIMIT@/${PCACHE_ENTRY_LIMIT}/" \ 101 -e "s/@CCPERIOD@/${PCACHE_CCPERIOD}/" \ 102 -e "s/@BTTR@/${PCACHEBTTR}/" \ 103 > $CONF2 104 105$SLAPD -f $CONF2 -h $URI2 -d $LVL -d pcache > $LOG2 2>&1 & 106CACHEPID=$! 107if test $WAIT != 0 ; then 108 echo CACHEPID $CACHEPID 109 read foo 110fi 111KILLPIDS="$KILLPIDS $CACHEPID" 112 113sleep 1 114 115echo "Using ldapsearch to check that proxy slapd is running..." 116for i in 0 1 2 3 4 5; do 117 $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \ 118 'objectclass=*' > /dev/null 2>&1 119 RC=$? 120 if test $RC = 0 ; then 121 break 122 fi 123 echo "Waiting 5 seconds for slapd to start..." 124 sleep 5 125done 126 127if test $RC != 0 ; then 128 echo "ldapsearch failed ($RC)!" 129 test $KILLSERVERS != no && kill -HUP $KILLPIDS 130 exit $RC 131fi 132 133cat /dev/null > $SEARCHOUT 134 135echo "Making queries on the proxy cache..." 136CNT=0 137 138CNT=`expr $CNT + 1` 139FILTER="(sn=Jon)" 140echo "Query $CNT: filter:$FILTER attrs:all (expect nothing)" 141echo "# Query $CNT: filter:$FILTER attrs:all (expect nothing)" >> $SEARCHOUT 142$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 143 "$FILTER" >> $SEARCHOUT 2>> $TESTOUT 144RC=$? 145if test $RC != 0 ; then 146 echo "ldapsearch failed ($RC)!" 147 test $KILLSERVERS != no && kill -HUP $KILLPIDS 148 exit $RC 149fi 150 151# ITS#4491, if debug messages are unavailable, we can't verify the tests. 152grep "query template" $LOG2 > /dev/null 153RC=$? 154if test $RC != 0 ; then 155 echo "Debug messages unavailable, remaining test skipped..." 156 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 157 exit 0 158fi 159 160CNT=`expr $CNT + 1` 161FILTER="(|(cn=*Jon*)(sn=Jon*))" 162ATTRS="cn sn title uid" 163echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 164echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 165$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 166 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 167RC=$? 168if test $RC != 0 ; then 169 echo "ldapsearch failed ($RC)!" 170 test $KILLSERVERS != no && kill -HUP $KILLPIDS 171 exit $RC 172fi 173 174CNT=`expr $CNT + 1` 175FILTER="(sn=Smith*)" 176ATTRS="cn sn uid" 177echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 178echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 179$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 180 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 181RC=$? 182if test $RC != 0 ; then 183 echo "ldapsearch failed ($RC)!" 184 test $KILLSERVERS != no && kill -HUP $KILLPIDS 185 exit $RC 186fi 187 188CNT=`expr $CNT + 1` 189FILTER="(sn=Doe*)" 190ATTRS="cn sn title uid" 191echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 192echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 193$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 194 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 195RC=$? 196if test $RC != 0 ; then 197 echo "ldapsearch failed ($RC)!" 198 test $KILLSERVERS != no && kill -HUP $KILLPIDS 199 exit $RC 200fi 201 202CNT=`expr $CNT + 1` 203FILTER="(uid=johnd)" 204ATTRS="mail postaladdress telephonenumber cn uid" 205echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 206echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 207$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 208 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 209RC=$? 210if test $RC != 0 ; then 211 echo "ldapsearch failed ($RC)!" 212 test $KILLSERVERS != no && kill -HUP $KILLPIDS 213 exit $RC 214fi 215 216CNT=`expr $CNT + 1` 217FILTER="(mail=*@mail.alumni.example.com)" 218ATTRS="cn sn title uid" 219echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 220echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 221$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 222 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 223RC=$? 224if test $RC != 0 ; then 225 echo "ldapsearch failed ($RC)!" 226 test $KILLSERVERS != no && kill -HUP $KILLPIDS 227 exit $RC 228fi 229 230CNT=`expr $CNT + 1` 231FILTER="(mail=*)" 232ATTRS="cn sn title uid" 233echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 234echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 235$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 236 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 237RC=$? 238if test $RC != 0 ; then 239 echo "ldapsearch failed ($RC)!" 240 test $KILLSERVERS != no && kill -HUP $KILLPIDS 241 exit $RC 242fi 243 244CNT=`expr $CNT + 1` 245FILTER="(mail=*example.com)" 246ATTRS="cn sn title uid" 247USERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 248UPASSWD="bjorn" 249echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 250echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 251$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 252 -D "$USERDN" -w "$UPASSWD" \ 253 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 254RC=$? 255case $RC in 2560) 257 echo "ldapsearch should have failed!" 258 test $KILLSERVERS != no && kill -HUP $KILLPIDS 259 exit 1 260 ;; 2614) 262 echo "ldapsearch failed ($RC)" 263 ;; 264*) 265 echo "ldapsearch failed ($RC)!" 266 test $KILLSERVERS != no && kill -HUP $KILLPIDS 267 exit $RC 268 ;; 269esac 270 271CNT=`expr $CNT + 1` 272FILTER="(uid=b*)" 273ATTRS="mail" 274USERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 275UPASSWD="bjorn" 276echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 277echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 278$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 279 -D "$USERDN" -w "$UPASSWD" \ 280 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 281RC=$? 282case $RC in 2830) 284 echo "ldapsearch should have failed!" 285 test $KILLSERVERS != no && kill -HUP $KILLPIDS 286 exit 1 287 ;; 2884) 289 echo "ldapsearch failed ($RC)" 290 ;; 291*) 292 echo "ldapsearch failed ($RC)!" 293 test $KILLSERVERS != no && kill -HUP $KILLPIDS 294 exit $RC 295 ;; 296esac 297 298CNT=`expr $CNT + 1` 299FILTER="(|(cn=All Staff)(sn=All Staff))" 300ATTRS="sn cn title uid undefinedAttr" 301echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 302echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 303$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 304 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 305RC=$? 306if test $RC != 0 ; then 307 echo "ldapsearch failed ($RC)!" 308 test $KILLSERVERS != no && kill -HUP $KILLPIDS 309 exit $RC 310fi 311 312FIRST=$CNT 313 314# queries 2-6,8-10 are cacheable 315CACHEABILITY=0111110111 316grep CACHEABLE $LOG2 | awk '{ 317 if ($3 == "NOT") 318 printf "Query %d not cacheable\n",NR 319 else 320 printf "Query %d cacheable\n",NR 321 }' 322CACHED=`grep CACHEABLE $LOG2 | awk '{ 323 if ($3 == "NOT") 324 printf "0" 325 else 326 printf "1" 327 }'` 328 329if test "$CACHEABILITY" = "$CACHED" ; then 330 echo "Successfully verified cacheability" 331else 332 echo "Error in verifying cacheability" 333 echo "$CACHED" 334 echo "$CACHEABILITY" 335 test $KILLSERVERS != no && kill -HUP $KILLPIDS 336 exit 1 337fi 338 339CNT=`expr $CNT + 1` 340FILTER="(|(cn=*Jones)(sn=Jones))" 341ATTRS="cn sn title uid" 342echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 343echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 344$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 345 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 346RC=$? 347if test $RC != 0 ; then 348 echo "ldapsearch failed ($RC)!" 349 test $KILLSERVERS != no && kill -HUP $KILLPIDS 350 exit $RC 351fi 352 353CNT=`expr $CNT + 1` 354FILTER="(sn=Smith)" 355ATTRS="cn sn title uid" 356echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 357echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 358$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 359 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 360RC=$? 361if test $RC != 0 ; then 362 echo "ldapsearch failed ($RC)!" 363 test $KILLSERVERS != no && kill -HUP $KILLPIDS 364 exit $RC 365fi 366 367CNT=`expr $CNT + 1` 368FILTER="(uid=bjorn)" 369ATTRS="mail postaladdress telephonenumber cn uid" 370echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 371echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 372$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 373 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 374RC=$? 375if test $RC != 0 ; then 376 echo "ldapsearch failed ($RC)!" 377 test $KILLSERVERS != no && kill -HUP $KILLPIDS 378 exit $RC 379fi 380 381CNT=`expr $CNT + 1` 382FILTER="(mail=jaj@mail.alumni.example.com)" 383ATTRS="cn sn title uid" 384echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 385echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 386$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 387 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 388RC=$? 389 390if test $RC != 0 ; then 391 echo "ldapsearch failed ($RC)!" 392 test $KILLSERVERS != no && kill -HUP $KILLPIDS 393 exit $RC 394fi 395 396CNT=`expr $CNT + 1` 397FILTER="(mail=*example.com)" 398ATTRS="cn sn title uid" 399USERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 400UPASSWD="bjorn" 401echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 402echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 403$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 404 -D "$USERDN" -w "$UPASSWD" \ 405 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 406RC=$? 407case $RC in 4080) 409 echo "ldapsearch should have failed!" 410 test $KILLSERVERS != no && kill -HUP $KILLPIDS 411 exit 1 412 ;; 4134) 414 echo "ldapsearch failed ($RC)" 415 ;; 416*) 417 echo "ldapsearch failed ($RC)!" 418 test $KILLSERVERS != no && kill -HUP $KILLPIDS 419 exit $RC 420 ;; 421esac 422 423CNT=`expr $CNT + 1` 424FILTER="(uid=b*)" 425ATTRS="mail" 426USERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 427UPASSWD="bjorn" 428echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 429echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 430$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 431 -D "$USERDN" -w "$UPASSWD" \ 432 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 433RC=$? 434case $RC in 4350) 436 echo "ldapsearch should have failed!" 437 test $KILLSERVERS != no && kill -HUP $KILLPIDS 438 exit 1 439 ;; 4404) 441 echo "ldapsearch failed ($RC)" 442 ;; 443*) 444 echo "ldapsearch failed ($RC)!" 445 test $KILLSERVERS != no && kill -HUP $KILLPIDS 446 exit $RC 447 ;; 448esac 449 450CNT=`expr $CNT + 1` 451FILTER="(|(cn=All Staff)(sn=All Staff))" 452ATTRS="sn cn title uid undefinedAttr" 453echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 454echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 455$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 456 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 457RC=$? 458if test $RC != 0 ; then 459 echo "ldapsearch failed ($RC)!" 460 test $KILLSERVERS != no && kill -HUP $KILLPIDS 461 exit $RC 462fi 463 464#queries 11-13,16-17 are answerable, 14-15 are not 465#actually, 14 would be answerable, but since 8 made mail=*example.com 466#not answerable because of sizelimit, queries contained in it are no longer 467#answerable as well 468ANSWERABILITY=1110011 469grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ 470 if (NR > FIRST) { 471 if ($3 == "NOT") 472 printf "Query %d not answerable\n",NR 473 else 474 printf "Query %d answerable\n",NR 475 } 476 }' 477ANSWERED=`grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ 478 if (NR > FIRST) { 479 if ($3 == "NOT") 480 printf "0" 481 else 482 printf "1" 483 } 484 }'` 485 486if test "$ANSWERABILITY" = "$ANSWERED" ; then 487 echo "Successfully verified answerability" 488else 489 echo "Error in verifying answerability" 490 test $KILLSERVERS != no && kill -HUP $KILLPIDS 491 exit 1 492fi 493 494echo "Filtering ldapsearch results..." 495$LDIFFILTER -s ldif=a < $SEARCHOUT > $SEARCHFLT 496echo "Filtering original ldif..." 497$LDIFFILTER -s ldif=a < $PROXYCACHEOUT > $LDIFFLT 498echo "Comparing filter output..." 499$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 500 501if test $? != 0 ; then 502 echo "Comparison failed" 503 test $KILLSERVERS != no && kill -HUP $KILLPIDS 504 exit 1 505fi 506 507echo "" 508echo "Testing cache refresh" 509 510CNT=`expr $CNT + 1` 511FILTER="(&(objectclass=person)(uid=dots))" 512ATTRS="cn mail telephonenumber" 513echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 514echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 515$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 516 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 517RC=$? 518if test $RC != 0 ; then 519 echo "ldapsearch failed ($RC)!" 520 test $KILLSERVERS != no && kill -HUP $KILLPIDS 521 exit $RC 522fi 523 524$LDAPMODIFY -x -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD <<EOF \ 525 > /dev/null 2>&1 526dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,dc=example,dc=com 527changetype: modify 528replace: mail 529mail: dots@admin.example2.com 530- 531 532EOF 533RC=$? 534if test $RC != 0 ; then 535 echo "ldapmodify failed ($RC)!" 536 test $KILLSERVERS != no && kill -HUP $KILLPIDS 537 exit $RC 538fi 539 540SLEEP=`expr $PCACHETTR + $PCACHE_CCPERIOD + 1` 541echo "Waiting $SLEEP seconds for cache to refresh" 542 543sleep $SLEEP 544 545echo "Checking entry again" 546$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 547 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 548RC=$? 549if test $RC != 0 ; then 550 echo "ldapsearch failed ($RC)!" 551 test $KILLSERVERS != no && kill -HUP $KILLPIDS 552 exit $RC 553fi 554 555grep "^mail: dots@admin" $SEARCHOUT > /dev/null 556RC=$? 557if test $RC != 0 ; then 558 echo "Refresh failed" 559 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 560 exit 1 561fi 562 563echo "" 564echo "Testing Bind caching" 565 566CNT=`expr $CNT + 1` 567USERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 568UPASSWD="jaj" 569echo "Query $CNT: $USERDN" 570echo "# Query $CNT: $USERDN" >> $SEARCHOUT 571$LDAPSEARCH -S "" -b "" -s base -h $LOCALHOST -p $PORT2 \ 572 -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 573RC=$? 574if test $RC != 0 ; then 575 echo "ldapsearch failed ($RC)!" 576 test $KILLSERVERS != no && kill -HUP $KILLPIDS 577 exit $RC 578fi 579 580grep "CACHING BIND" $LOG2 > /dev/null 581RC=$? 582if test $RC != 0 ; then 583 echo "Refresh failed" 584 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 585 exit 1 586fi 587 588CNT=`expr $CNT + 1` 589USERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 590UPASSWD="jaj" 591echo "Query $CNT: (Bind should be cached)" 592echo "# Query $CNT: (Bind should be cached)" >> $SEARCHOUT 593$LDAPSEARCH -S "" -b "" -s base -h $LOCALHOST -p $PORT2 \ 594 -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 595RC=$? 596if test $RC != 0 ; then 597 echo "ldapsearch failed ($RC)!" 598 test $KILLSERVERS != no && kill -HUP $KILLPIDS 599 exit $RC 600fi 601 602grep "CACHED BIND" $LOG2 > /dev/null 603RC=$? 604if test $RC != 0 ; then 605 echo "Refresh failed" 606 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 607 exit 1 608fi 609 610echo "" 611echo "Testing pwdModify" 612$LDAPPASSWD -h $LOCALHOST -p $PORT2 \ 613 -D "$MANAGERDN" -w "$PASSWD" -s newpw "$USERDN" >> $TESTOUT 2>&1 614RC=$? 615if test $RC != 0 ; then 616 echo "ldappasswd failed ($RC)!" 617 test $KILLSERVERS != no && kill -HUP $KILLPIDS 618 exit $RC 619fi 620 621RC=`grep "CACH.* BIND" $LOG2 | wc -l` 622if test $RC != 3 ; then 623 echo "ldappasswd didn't update the cache" 624 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 625 exit 1 626fi 627 628CNT=`expr $CNT + 1` 629USERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 630UPASSWD=newpw 631echo "Query $CNT: (Bind should be cached)" 632echo "# Query $CNT: (Bind should be cached)" >> $SEARCHOUT 633$LDAPSEARCH -S "" -b "" -s base -h $LOCALHOST -p $PORT2 \ 634 -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 635RC=$? 636if test $RC != 0 ; then 637 echo "ldapsearch failed ($RC)!" 638 test $KILLSERVERS != no && kill -HUP $KILLPIDS 639 exit $RC 640fi 641 642RC=`grep "CACH.* BIND" $LOG2 | wc -l` 643if test $RC != 4 ; then 644 echo "Bind wasn't answered from cache" 645 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 646 exit 1 647fi 648test $KILLSERVERS != no && kill -HUP $KILLPIDS 649 650echo ">>>>> Test succeeded" 651 652test $KILLSERVERS != no && wait 653 654exit 0 655