1#! /bin/sh 2# OpenLDAP: pkg/ldap/tests/scripts/test020-proxycache,v 1.26.2.13 2010/04/19 19:14:34 quanah Exp 3## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4## 5## Copyright 1998-2010 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, test aborted..." 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 $RC 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 $RC 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 298FIRST=$CNT 299 300# queries 2-6,8-9 are cacheable 301CACHEABILITY=011111011 302grep CACHEABLE $LOG2 | awk '{ 303 if ($2 == "NOT") 304 printf "Query %d not cacheable\n",NR 305 else 306 printf "Query %d cacheable\n",NR 307 }' 308CACHED=`grep CACHEABLE $LOG2 | awk '{ 309 if ($2 == "NOT") 310 printf "0" 311 else 312 printf "1" 313 }'` 314 315if test "$CACHEABILITY" = "$CACHED" ; then 316 echo "Successfully verified cacheability" 317else 318 echo "Error in verifying cacheability" 319 test $KILLSERVERS != no && kill -HUP $KILLPIDS 320 exit 1 321fi 322 323CNT=`expr $CNT + 1` 324FILTER="(|(cn=*Jones)(sn=Jones))" 325ATTRS="cn sn title uid" 326echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 327echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 328$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 329 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 330RC=$? 331if test $RC != 0 ; then 332 echo "ldapsearch failed ($RC)!" 333 test $KILLSERVERS != no && kill -HUP $KILLPIDS 334 exit $RC 335fi 336 337CNT=`expr $CNT + 1` 338FILTER="(sn=Smith)" 339ATTRS="cn sn title uid" 340echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 341echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 342$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 343 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 344RC=$? 345if test $RC != 0 ; then 346 echo "ldapsearch failed ($RC)!" 347 test $KILLSERVERS != no && kill -HUP $KILLPIDS 348 exit $RC 349fi 350 351CNT=`expr $CNT + 1` 352FILTER="(uid=bjorn)" 353ATTRS="mail postaladdress telephonenumber cn uid" 354echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 355echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 356$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 357 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 358RC=$? 359if test $RC != 0 ; then 360 echo "ldapsearch failed ($RC)!" 361 test $KILLSERVERS != no && kill -HUP $KILLPIDS 362 exit $RC 363fi 364 365CNT=`expr $CNT + 1` 366FILTER="(mail=jaj@mail.alumni.example.com)" 367ATTRS="cn sn title uid" 368echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 369echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 370$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 371 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 372RC=$? 373 374if test $RC != 0 ; then 375 echo "ldapsearch failed ($RC)!" 376 test $KILLSERVERS != no && kill -HUP $KILLPIDS 377 exit $RC 378fi 379 380CNT=`expr $CNT + 1` 381FILTER="(mail=*example.com)" 382ATTRS="cn sn title uid" 383USERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 384UPASSWD="bjorn" 385echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 386echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 387$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 388 -D "$USERDN" -w "$UPASSWD" \ 389 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 390RC=$? 391case $RC in 3920) 393 echo "ldapsearch should have failed!" 394 test $KILLSERVERS != no && kill -HUP $KILLPIDS 395 exit $RC 396 ;; 3974) 398 echo "ldapsearch failed ($RC)" 399 ;; 400*) 401 echo "ldapsearch failed ($RC)!" 402 test $KILLSERVERS != no && kill -HUP $KILLPIDS 403 exit $RC 404 ;; 405esac 406 407CNT=`expr $CNT + 1` 408FILTER="(uid=b*)" 409ATTRS="mail" 410USERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 411UPASSWD="bjorn" 412echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 413echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 414$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 415 -D "$USERDN" -w "$UPASSWD" \ 416 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 417RC=$? 418case $RC in 4190) 420 echo "ldapsearch should have failed!" 421 test $KILLSERVERS != no && kill -HUP $KILLPIDS 422 exit $RC 423 ;; 4244) 425 echo "ldapsearch failed ($RC)" 426 ;; 427*) 428 echo "ldapsearch failed ($RC)!" 429 test $KILLSERVERS != no && kill -HUP $KILLPIDS 430 exit $RC 431 ;; 432esac 433 434#queries 10-12,15 are answerable, 13-14 are not 435#actually, 12 would be answerable, but since 8 made mail=*example.com 436#not answerable because of sizelimit, queries contained in it are no longer 437#answerable as well 438ANSWERABILITY=111001 439grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ 440 if (NR > FIRST) { 441 if ($2 == "NOT") 442 printf "Query %d not answerable\n",NR 443 else 444 printf "Query %d answerable\n",NR 445 } 446 }' 447ANSWERED=`grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ 448 if (NR > FIRST) { 449 if ($2 == "NOT") 450 printf "0" 451 else 452 printf "1" 453 } 454 }'` 455 456if test "$ANSWERABILITY" = "$ANSWERED" ; then 457 echo "Successfully verified answerability" 458else 459 echo "Error in verifying answerability" 460 test $KILLSERVERS != no && kill -HUP $KILLPIDS 461 exit 1 462fi 463 464echo "Filtering ldapsearch results..." 465$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 466echo "Filtering original ldif..." 467$LDIFFILTER < $PROXYCACHEOUT > $LDIFFLT 468echo "Comparing filter output..." 469$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 470 471if test $? != 0 ; then 472 echo "Comparison failed" 473 test $KILLSERVERS != no && kill -HUP $KILLPIDS 474 exit 1 475fi 476 477echo "" 478echo "Testing cache refresh" 479 480CNT=`expr $CNT + 1` 481FILTER="(&(objectclass=person)(uid=dots))" 482ATTRS="cn mail telephonenumber" 483echo "Query $CNT: filter:$FILTER attrs:$ATTRS" 484echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 485$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 486 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 487RC=$? 488if test $RC != 0 ; then 489 echo "ldapsearch failed ($RC)!" 490 test $KILLSERVERS != no && kill -HUP $KILLPIDS 491 exit $RC 492fi 493 494$LDAPMODIFY -x -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD <<EOF \ 495 > /dev/null 2>&1 496dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,dc=example,dc=com 497changetype: modify 498replace: mail 499mail: dots@admin.example2.com 500- 501 502EOF 503RC=$? 504if test $RC != 0 ; then 505 echo "ldapmodify failed ($RC)!" 506 test $KILLSERVERS != no && kill -HUP $KILLPIDS 507 exit $RC 508fi 509 510SLEEP=`expr $PCACHETTR + $PCACHE_CCPERIOD` 511echo "Waiting $SLEEP seconds for cache to refresh" 512 513sleep $SLEEP 514 515echo "Checking entry again" 516$LDAPSEARCH -x -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ 517 "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 518RC=$? 519if test $RC != 0 ; then 520 echo "ldapsearch failed ($RC)!" 521 test $KILLSERVERS != no && kill -HUP $KILLPIDS 522 exit $RC 523fi 524 525grep "^mail: dots@admin" $SEARCHOUT > /dev/null 526RC=$? 527if test $RC != 0 ; then 528 echo "Refresh failed" 529 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 530 exit 0 531fi 532 533echo "" 534echo "Testing Bind caching" 535 536CNT=`expr $CNT + 1` 537USERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 538UPASSWD="jaj" 539echo "Query $CNT: $USERDN" 540echo "# Query $CNT: $USERDN" >> $SEARCHOUT 541$LDAPSEARCH -S "" -b "" -s base -h $LOCALHOST -p $PORT2 \ 542 -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 543RC=$? 544if test $RC != 0 ; then 545 echo "ldapsearch failed ($RC)!" 546 test $KILLSERVERS != no && kill -HUP $KILLPIDS 547 exit $RC 548fi 549 550grep "CACHING BIND" $LOG2 > /dev/null 551RC=$? 552if test $RC != 0 ; then 553 echo "Refresh failed" 554 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 555 exit 0 556fi 557 558CNT=`expr $CNT + 1` 559USERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 560UPASSWD="jaj" 561echo "Query $CNT: (Bind should be cached)" 562echo "# Query $CNT: (Bind should be cached)" >> $SEARCHOUT 563$LDAPSEARCH -S "" -b "" -s base -h $LOCALHOST -p $PORT2 \ 564 -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 565RC=$? 566if test $RC != 0 ; then 567 echo "ldapsearch failed ($RC)!" 568 test $KILLSERVERS != no && kill -HUP $KILLPIDS 569 exit $RC 570fi 571 572grep "CACHED BIND" $LOG2 > /dev/null 573RC=$? 574if test $RC != 0 ; then 575 echo "Refresh failed" 576 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 577 exit 0 578fi 579 580echo "" 581echo "Testing pwdModify" 582$LDAPPASSWD -h $LOCALHOST -p $PORT2 \ 583 -D "$MANAGERDN" -w "$PASSWD" -s newpw "$USERDN" >> $TESTOUT 2>&1 584RC=$? 585if test $RC != 0 ; then 586 echo "ldappasswd failed ($RC)!" 587 test $KILLSERVERS != no && kill -HUP $KILLPIDS 588 exit $RC 589fi 590 591RC=`grep "CACH.* BIND" $LOG2 | wc -l` 592if test $RC != 3 ; then 593 echo "ldappasswd didn't update the cache" 594 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 595 exit 0 596fi 597 598CNT=`expr $CNT + 1` 599USERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 600UPASSWD=newpw 601echo "Query $CNT: (Bind should be cached)" 602echo "# Query $CNT: (Bind should be cached)" >> $SEARCHOUT 603$LDAPSEARCH -S "" -b "" -s base -h $LOCALHOST -p $PORT2 \ 604 -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 605RC=$? 606if test $RC != 0 ; then 607 echo "ldapsearch failed ($RC)!" 608 test $KILLSERVERS != no && kill -HUP $KILLPIDS 609 exit $RC 610fi 611 612RC=`grep "CACH.* BIND" $LOG2 | wc -l` 613if test $RC != 4 ; then 614 echo "Bind wasn't answered from cache" 615 test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 616 exit 0 617fi 618test $KILLSERVERS != no && kill -HUP $KILLPIDS 619 620echo ">>>>> Test succeeded" 621 622test $KILLSERVERS != no && wait 623 624exit 0 625