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