12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation. 62de962bdSlukem## All rights reserved. 72de962bdSlukem## 82de962bdSlukem## Redistribution and use in source and binary forms, with or without 92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 102de962bdSlukem## Public License. 112de962bdSlukem## 122de962bdSlukem## A copy of this license is available in the file LICENSE in the 132de962bdSlukem## top-level directory of the distribution or, alternatively, at 142de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 152de962bdSlukem 164e6df137SlukemPCACHETTL=${PCACHETTL-"1m"} 174e6df137SlukemPCACHENTTL=${PCACHENTTL-"1m"} 184e6df137SlukemPCACHESTTL=${PCACHESTTL-"1m"} 194e6df137SlukemPCACHE_ENTRY_LIMIT=${PCACHE_ENTRY_LIMIT-"6"} 204e6df137SlukemPCACHE_CCPERIOD=${PCACHE_CCPERIOD-"2"} 214e6df137SlukemPCACHETTR=${PCACHETTR-"2"} 224e6df137SlukemPCACHEBTTR=${PCACHEBTTR-"5"} 232de962bdSlukem 242de962bdSlukem. $SRCDIR/scripts/defines.sh 252de962bdSlukem 262de962bdSlukemif test $PROXYCACHE = pcacheno; then 272de962bdSlukem echo "Proxy cache overlay not available, test skipped" 282de962bdSlukem exit 0 292de962bdSlukemfi 302de962bdSlukem 312de962bdSlukemif test $BACKLDAP = "ldapno" ; then 322de962bdSlukem echo "LDAP backend not available, test skipped" 332de962bdSlukem exit 0 342de962bdSlukemfi 352de962bdSlukem 36ef2f90d3Sadamif test $BACKEND = ldif ; then 37ef2f90d3Sadam # The (mail=example.com*) queries hit a sizelimit, so which 38ef2f90d3Sadam # entry is returned depends on the ordering in the backend. 39ef2f90d3Sadam echo "Test does not support $BACKEND backend, test skipped" 40ef2f90d3Sadam exit 0 41ef2f90d3Sadamfi 42ef2f90d3Sadam 432de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 442de962bdSlukem 452de962bdSlukem# Test proxy caching: 46*e670fd5cSchristos# - start provider 472de962bdSlukem# - start proxy cache 48*e670fd5cSchristos# - populate provider 492de962bdSlukem# - perform first set of searches at the proxy 502de962bdSlukem# - verify cacheability 512de962bdSlukem# - perform second set of searches at the proxy 522de962bdSlukem# - verify answerability 532de962bdSlukem 54*e670fd5cSchristosecho "Starting provider slapd on TCP/IP port $PORT1..." 55*e670fd5cSchristos. $CONFFILTER < $CACHEPROVIDERCONF > $CONF1 562de962bdSlukem$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 572de962bdSlukemPID=$! 582de962bdSlukemif test $WAIT != 0 ; then 592de962bdSlukem echo PID $PID 602de962bdSlukem read foo 612de962bdSlukemfi 622de962bdSlukemKILLPIDS="$PID" 632de962bdSlukem 642de962bdSlukemsleep 1 652de962bdSlukem 66*e670fd5cSchristosecho "Using ldapsearch to check that provider slapd is running..." 672de962bdSlukemfor i in 0 1 2 3 4 5; do 68*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 692de962bdSlukem 'objectclass=*' > /dev/null 2>&1 702de962bdSlukem RC=$? 712de962bdSlukem if test $RC = 0 ; then 722de962bdSlukem break 732de962bdSlukem fi 742de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 752de962bdSlukem sleep 5 762de962bdSlukemdone 772de962bdSlukem 782de962bdSlukemif test $RC != 0 ; then 792de962bdSlukem echo "ldapsearch failed ($RC)!" 802de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 812de962bdSlukem exit $RC 822de962bdSlukemfi 832de962bdSlukem 84*e670fd5cSchristosecho "Using ldapadd to populate the provider directory..." 85*e670fd5cSchristos$LDAPADD -x -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 862de962bdSlukem $LDIFORDERED > /dev/null 2>&1 872de962bdSlukemRC=$? 882de962bdSlukemif test $RC != 0 ; then 892de962bdSlukem echo "ldapadd failed ($RC)!" 902de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 912de962bdSlukem exit $RC 922de962bdSlukemfi 932de962bdSlukem 942de962bdSlukemecho "Starting proxy cache on TCP/IP port $PORT2..." 954e6df137Slukem. $CONFFILTER < $PROXYCACHECONF | sed \ 964e6df137Slukem -e "s/@TTL@/${PCACHETTL}/" \ 974e6df137Slukem -e "s/@NTTL@/${PCACHENTTL}/" \ 984e6df137Slukem -e "s/@STTL@/${PCACHENTTL}/" \ 994e6df137Slukem -e "s/@TTR@/${PCACHETTR}/" \ 1004e6df137Slukem -e "s/@ENTRY_LIMIT@/${PCACHE_ENTRY_LIMIT}/" \ 1014e6df137Slukem -e "s/@CCPERIOD@/${PCACHE_CCPERIOD}/" \ 1024e6df137Slukem -e "s/@BTTR@/${PCACHEBTTR}/" \ 1034e6df137Slukem > $CONF2 1044e6df137Slukem 1052de962bdSlukem$SLAPD -f $CONF2 -h $URI2 -d $LVL -d pcache > $LOG2 2>&1 & 1062de962bdSlukemCACHEPID=$! 1072de962bdSlukemif test $WAIT != 0 ; then 1082de962bdSlukem echo CACHEPID $CACHEPID 1092de962bdSlukem read foo 1102de962bdSlukemfi 1112de962bdSlukemKILLPIDS="$KILLPIDS $CACHEPID" 1122de962bdSlukem 1132de962bdSlukemsleep 1 1142de962bdSlukem 1152de962bdSlukemecho "Using ldapsearch to check that proxy slapd is running..." 1162de962bdSlukemfor i in 0 1 2 3 4 5; do 117*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 1182de962bdSlukem 'objectclass=*' > /dev/null 2>&1 1192de962bdSlukem RC=$? 1202de962bdSlukem if test $RC = 0 ; then 1212de962bdSlukem break 1222de962bdSlukem fi 1232de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1242de962bdSlukem sleep 5 1252de962bdSlukemdone 1262de962bdSlukem 1272de962bdSlukemif test $RC != 0 ; then 1282de962bdSlukem echo "ldapsearch failed ($RC)!" 1292de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1302de962bdSlukem exit $RC 1312de962bdSlukemfi 1322de962bdSlukem 1332de962bdSlukemcat /dev/null > $SEARCHOUT 1342de962bdSlukem 1352de962bdSlukemecho "Making queries on the proxy cache..." 1362de962bdSlukemCNT=0 1372de962bdSlukem 1382de962bdSlukemCNT=`expr $CNT + 1` 1392de962bdSlukemFILTER="(sn=Jon)" 1402de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:all (expect nothing)" 1412de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:all (expect nothing)" >> $SEARCHOUT 142*e670fd5cSchristos$LDAPSEARCH -x -S "" -b "$BASEDN" -H $URI2 \ 1432de962bdSlukem "$FILTER" >> $SEARCHOUT 2>> $TESTOUT 1442de962bdSlukemRC=$? 1452de962bdSlukemif test $RC != 0 ; then 1462de962bdSlukem echo "ldapsearch failed ($RC)!" 1472de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1482de962bdSlukem exit $RC 1492de962bdSlukemfi 1502de962bdSlukem 1512de962bdSlukem# ITS#4491, if debug messages are unavailable, we can't verify the tests. 1522de962bdSlukemgrep "query template" $LOG2 > /dev/null 1532de962bdSlukemRC=$? 1542de962bdSlukemif test $RC != 0 ; then 155d11b170bStron echo "Debug messages unavailable, remaining test skipped..." 1562de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 1572de962bdSlukem exit 0 1582de962bdSlukemfi 1592de962bdSlukem 1602de962bdSlukemCNT=`expr $CNT + 1` 1612de962bdSlukemFILTER="(|(cn=*Jon*)(sn=Jon*))" 1622de962bdSlukemATTRS="cn sn title uid" 1632de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 1642de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 165*e670fd5cSchristos$LDAPSEARCH -x -S "" -b "$BASEDN" -H $URI2 \ 1662de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 1672de962bdSlukemRC=$? 1682de962bdSlukemif test $RC != 0 ; then 1692de962bdSlukem echo "ldapsearch failed ($RC)!" 1702de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1712de962bdSlukem exit $RC 1722de962bdSlukemfi 1732de962bdSlukem 1742de962bdSlukemCNT=`expr $CNT + 1` 1752de962bdSlukemFILTER="(sn=Smith*)" 1762de962bdSlukemATTRS="cn sn uid" 1772de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 1782de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 179*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 1802de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 1812de962bdSlukemRC=$? 1822de962bdSlukemif test $RC != 0 ; then 1832de962bdSlukem echo "ldapsearch failed ($RC)!" 1842de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1852de962bdSlukem exit $RC 1862de962bdSlukemfi 1872de962bdSlukem 1882de962bdSlukemCNT=`expr $CNT + 1` 1892de962bdSlukemFILTER="(sn=Doe*)" 1902de962bdSlukemATTRS="cn sn title uid" 1912de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 1922de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 193*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 1942de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 1952de962bdSlukemRC=$? 1962de962bdSlukemif test $RC != 0 ; then 1972de962bdSlukem echo "ldapsearch failed ($RC)!" 1982de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1992de962bdSlukem exit $RC 2002de962bdSlukemfi 2012de962bdSlukem 2022de962bdSlukemCNT=`expr $CNT + 1` 2032de962bdSlukemFILTER="(uid=johnd)" 2042de962bdSlukemATTRS="mail postaladdress telephonenumber cn uid" 2052de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 2062de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 207*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 2082de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 2092de962bdSlukemRC=$? 2102de962bdSlukemif test $RC != 0 ; then 2112de962bdSlukem echo "ldapsearch failed ($RC)!" 2122de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2132de962bdSlukem exit $RC 2142de962bdSlukemfi 2152de962bdSlukem 2162de962bdSlukemCNT=`expr $CNT + 1` 2172de962bdSlukemFILTER="(mail=*@mail.alumni.example.com)" 2182de962bdSlukemATTRS="cn sn title uid" 2192de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 2202de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 221*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 2222de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 2232de962bdSlukemRC=$? 2242de962bdSlukemif test $RC != 0 ; then 2252de962bdSlukem echo "ldapsearch failed ($RC)!" 2262de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2272de962bdSlukem exit $RC 2282de962bdSlukemfi 2292de962bdSlukem 2302de962bdSlukemCNT=`expr $CNT + 1` 2312de962bdSlukemFILTER="(mail=*)" 2322de962bdSlukemATTRS="cn sn title uid" 2332de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 2342de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 235*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 2362de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 2372de962bdSlukemRC=$? 2382de962bdSlukemif test $RC != 0 ; then 2392de962bdSlukem echo "ldapsearch failed ($RC)!" 2402de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2412de962bdSlukem exit $RC 2422de962bdSlukemfi 2432de962bdSlukem 2442de962bdSlukemCNT=`expr $CNT + 1` 2452de962bdSlukemFILTER="(mail=*example.com)" 2462de962bdSlukemATTRS="cn sn title uid" 2472de962bdSlukemUSERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 2484e6df137SlukemUPASSWD="bjorn" 2492de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 2502de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 251*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 2524e6df137Slukem -D "$USERDN" -w "$UPASSWD" \ 2532de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 2542de962bdSlukemRC=$? 2552de962bdSlukemcase $RC in 2562de962bdSlukem0) 2572de962bdSlukem echo "ldapsearch should have failed!" 2582de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 259d11b170bStron exit 1 2602de962bdSlukem ;; 2612de962bdSlukem4) 2622de962bdSlukem echo "ldapsearch failed ($RC)" 2632de962bdSlukem ;; 2642de962bdSlukem*) 2652de962bdSlukem echo "ldapsearch failed ($RC)!" 2662de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2672de962bdSlukem exit $RC 2682de962bdSlukem ;; 2692de962bdSlukemesac 2702de962bdSlukem 2712de962bdSlukemCNT=`expr $CNT + 1` 2722de962bdSlukemFILTER="(uid=b*)" 2732de962bdSlukemATTRS="mail" 2742de962bdSlukemUSERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 2754e6df137SlukemUPASSWD="bjorn" 2762de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 2772de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 278*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 2794e6df137Slukem -D "$USERDN" -w "$UPASSWD" \ 2802de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 2812de962bdSlukemRC=$? 2822de962bdSlukemcase $RC in 2832de962bdSlukem0) 2842de962bdSlukem echo "ldapsearch should have failed!" 2852de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 286d11b170bStron exit 1 2872de962bdSlukem ;; 2882de962bdSlukem4) 2892de962bdSlukem echo "ldapsearch failed ($RC)" 2902de962bdSlukem ;; 2912de962bdSlukem*) 2922de962bdSlukem echo "ldapsearch failed ($RC)!" 2932de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2942de962bdSlukem exit $RC 2952de962bdSlukem ;; 2962de962bdSlukemesac 2972de962bdSlukem 298d11b170bStronCNT=`expr $CNT + 1` 299d11b170bStronFILTER="(|(cn=All Staff)(sn=All Staff))" 300d11b170bStronATTRS="sn cn title uid undefinedAttr" 301d11b170bStronecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 302d11b170bStronecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 303*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 304d11b170bStron "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 305d11b170bStronRC=$? 306d11b170bStronif test $RC != 0 ; then 307d11b170bStron echo "ldapsearch failed ($RC)!" 308d11b170bStron test $KILLSERVERS != no && kill -HUP $KILLPIDS 309d11b170bStron exit $RC 310d11b170bStronfi 311d11b170bStron 3122de962bdSlukemFIRST=$CNT 3132de962bdSlukem 314d11b170bStron# queries 2-6,8-10 are cacheable 315d11b170bStronCACHEABILITY=0111110111 316*e670fd5cSchristosgrep CACHEABLE $LOG2 | awk ' 317*e670fd5cSchristos /NOT CACHEABLE/{printf "Query %d not cacheable\n",NR} 318*e670fd5cSchristos /QUERY CACHEABLE/{printf "Query %d cacheable\n",NR}' 319*e670fd5cSchristosCACHED=`grep CACHEABLE $LOG2 | awk ' 320*e670fd5cSchristos /NOT CACHEABLE/{printf "0"} 321*e670fd5cSchristos /QUERY CACHEABLE/{printf "1"}'` 3222de962bdSlukem 3232de962bdSlukemif test "$CACHEABILITY" = "$CACHED" ; then 3242de962bdSlukem echo "Successfully verified cacheability" 3252de962bdSlukemelse 3262de962bdSlukem echo "Error in verifying cacheability" 327d11b170bStron echo "$CACHED" 328d11b170bStron echo "$CACHEABILITY" 3292de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3302de962bdSlukem exit 1 3312de962bdSlukemfi 3322de962bdSlukem 3332de962bdSlukemCNT=`expr $CNT + 1` 3342de962bdSlukemFILTER="(|(cn=*Jones)(sn=Jones))" 3352de962bdSlukemATTRS="cn sn title uid" 3362de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 3372de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 338*e670fd5cSchristos$LDAPSEARCH -x -S "" -b "$BASEDN" -H $URI2 \ 3392de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 3402de962bdSlukemRC=$? 3412de962bdSlukemif test $RC != 0 ; then 3422de962bdSlukem echo "ldapsearch failed ($RC)!" 3432de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3442de962bdSlukem exit $RC 3452de962bdSlukemfi 3462de962bdSlukem 3472de962bdSlukemCNT=`expr $CNT + 1` 3482de962bdSlukemFILTER="(sn=Smith)" 3492de962bdSlukemATTRS="cn sn title uid" 3502de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 3512de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 352*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 3532de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 3542de962bdSlukemRC=$? 3552de962bdSlukemif test $RC != 0 ; then 3562de962bdSlukem echo "ldapsearch failed ($RC)!" 3572de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3582de962bdSlukem exit $RC 3592de962bdSlukemfi 3602de962bdSlukem 3612de962bdSlukemCNT=`expr $CNT + 1` 3622de962bdSlukemFILTER="(uid=bjorn)" 3632de962bdSlukemATTRS="mail postaladdress telephonenumber cn uid" 3642de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 3652de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 366*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 3672de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 3682de962bdSlukemRC=$? 3692de962bdSlukemif test $RC != 0 ; then 3702de962bdSlukem echo "ldapsearch failed ($RC)!" 3712de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3722de962bdSlukem exit $RC 3732de962bdSlukemfi 3742de962bdSlukem 3752de962bdSlukemCNT=`expr $CNT + 1` 3762de962bdSlukemFILTER="(mail=jaj@mail.alumni.example.com)" 3772de962bdSlukemATTRS="cn sn title uid" 3782de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 3792de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 380*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 3812de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 3822de962bdSlukemRC=$? 3832de962bdSlukem 3842de962bdSlukemif test $RC != 0 ; then 3852de962bdSlukem echo "ldapsearch failed ($RC)!" 3862de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3872de962bdSlukem exit $RC 3882de962bdSlukemfi 3892de962bdSlukem 3902de962bdSlukemCNT=`expr $CNT + 1` 3912de962bdSlukemFILTER="(mail=*example.com)" 3922de962bdSlukemATTRS="cn sn title uid" 3932de962bdSlukemUSERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 3944e6df137SlukemUPASSWD="bjorn" 3952de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 3962de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 397*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 3984e6df137Slukem -D "$USERDN" -w "$UPASSWD" \ 3992de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 4002de962bdSlukemRC=$? 4012de962bdSlukemcase $RC in 4022de962bdSlukem0) 4032de962bdSlukem echo "ldapsearch should have failed!" 4042de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 405d11b170bStron exit 1 4062de962bdSlukem ;; 4072de962bdSlukem4) 4082de962bdSlukem echo "ldapsearch failed ($RC)" 4092de962bdSlukem ;; 4102de962bdSlukem*) 4112de962bdSlukem echo "ldapsearch failed ($RC)!" 4122de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4132de962bdSlukem exit $RC 4142de962bdSlukem ;; 4152de962bdSlukemesac 4162de962bdSlukem 4172de962bdSlukemCNT=`expr $CNT + 1` 4182de962bdSlukemFILTER="(uid=b*)" 4192de962bdSlukemATTRS="mail" 4202de962bdSlukemUSERDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc=com" 4214e6df137SlukemUPASSWD="bjorn" 4222de962bdSlukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 4232de962bdSlukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 424*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 4254e6df137Slukem -D "$USERDN" -w "$UPASSWD" \ 4262de962bdSlukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 4272de962bdSlukemRC=$? 4282de962bdSlukemcase $RC in 4292de962bdSlukem0) 4302de962bdSlukem echo "ldapsearch should have failed!" 4312de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 432d11b170bStron exit 1 4332de962bdSlukem ;; 4342de962bdSlukem4) 4352de962bdSlukem echo "ldapsearch failed ($RC)" 4362de962bdSlukem ;; 4372de962bdSlukem*) 4382de962bdSlukem echo "ldapsearch failed ($RC)!" 4392de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4402de962bdSlukem exit $RC 4412de962bdSlukem ;; 4422de962bdSlukemesac 4432de962bdSlukem 444d11b170bStronCNT=`expr $CNT + 1` 445d11b170bStronFILTER="(|(cn=All Staff)(sn=All Staff))" 446d11b170bStronATTRS="sn cn title uid undefinedAttr" 447d11b170bStronecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 448d11b170bStronecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 449*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 450d11b170bStron "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 451d11b170bStronRC=$? 452d11b170bStronif test $RC != 0 ; then 453d11b170bStron echo "ldapsearch failed ($RC)!" 454d11b170bStron test $KILLSERVERS != no && kill -HUP $KILLPIDS 455d11b170bStron exit $RC 456d11b170bStronfi 457d11b170bStron 458d11b170bStron#queries 11-13,16-17 are answerable, 14-15 are not 459d11b170bStron#actually, 14 would be answerable, but since 8 made mail=*example.com 4602de962bdSlukem#not answerable because of sizelimit, queries contained in it are no longer 4612de962bdSlukem#answerable as well 462d11b170bStronANSWERABILITY=1110011 463*e670fd5cSchristosgrep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"' 464*e670fd5cSchristos /NOT ANSWERABLE/{if (NR > FIRST) printf "Query %d not answerable\n",NR} 465*e670fd5cSchristos /QUERY ANSWERABLE/{if (NR > FIRST) printf "Query %d answerable\n",NR}' 466*e670fd5cSchristosANSWERED=`grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"' 467*e670fd5cSchristos /NOT ANSWERABLE/{if (NR > FIRST) printf "0"} 468*e670fd5cSchristos /QUERY ANSWERABLE/{if (NR > FIRST) printf "1"}'` 4692de962bdSlukem 4702de962bdSlukemif test "$ANSWERABILITY" = "$ANSWERED" ; then 4712de962bdSlukem echo "Successfully verified answerability" 4722de962bdSlukemelse 4732de962bdSlukem echo "Error in verifying answerability" 4744e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4752de962bdSlukem exit 1 4762de962bdSlukemfi 4772de962bdSlukem 4782de962bdSlukemecho "Filtering ldapsearch results..." 479d11b170bStron$LDIFFILTER -s ldif=a < $SEARCHOUT > $SEARCHFLT 4802de962bdSlukemecho "Filtering original ldif..." 481d11b170bStron$LDIFFILTER -s ldif=a < $PROXYCACHEOUT > $LDIFFLT 4822de962bdSlukemecho "Comparing filter output..." 4832de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 4842de962bdSlukem 4852de962bdSlukemif test $? != 0 ; then 4862de962bdSlukem echo "Comparison failed" 4874e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4882de962bdSlukem exit 1 4892de962bdSlukemfi 4902de962bdSlukem 4914e6df137Slukemecho "" 4924e6df137Slukemecho "Testing cache refresh" 4934e6df137Slukem 4944e6df137SlukemCNT=`expr $CNT + 1` 4954e6df137SlukemFILTER="(&(objectclass=person)(uid=dots))" 4964e6df137SlukemATTRS="cn mail telephonenumber" 4974e6df137Slukemecho "Query $CNT: filter:$FILTER attrs:$ATTRS" 4984e6df137Slukemecho "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT 499*e670fd5cSchristos$LDAPSEARCH -x -S "" -b "$BASEDN" -H $URI2 \ 5004e6df137Slukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 5014e6df137SlukemRC=$? 5024e6df137Slukemif test $RC != 0 ; then 5034e6df137Slukem echo "ldapsearch failed ($RC)!" 5044e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5054e6df137Slukem exit $RC 5064e6df137Slukemfi 5074e6df137Slukem 508*e670fd5cSchristos$LDAPMODIFY -x -D "$MANAGERDN" -H $URI1 -w $PASSWD <<EOF \ 5094e6df137Slukem > /dev/null 2>&1 5104e6df137Slukemdn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,dc=example,dc=com 5114e6df137Slukemchangetype: modify 5124e6df137Slukemreplace: mail 5134e6df137Slukemmail: dots@admin.example2.com 5144e6df137Slukem- 5154e6df137Slukem 5164e6df137SlukemEOF 5174e6df137SlukemRC=$? 5184e6df137Slukemif test $RC != 0 ; then 5194e6df137Slukem echo "ldapmodify failed ($RC)!" 5204e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5214e6df137Slukem exit $RC 5224e6df137Slukemfi 5234e6df137Slukem 524d11b170bStronSLEEP=`expr $PCACHETTR + $PCACHE_CCPERIOD + 1` 5254e6df137Slukemecho "Waiting $SLEEP seconds for cache to refresh" 5264e6df137Slukem 5274e6df137Slukemsleep $SLEEP 5284e6df137Slukem 5294e6df137Slukemecho "Checking entry again" 530*e670fd5cSchristos$LDAPSEARCH -x -S "" -b "$BASEDN" -H $URI2 \ 5314e6df137Slukem "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT 5324e6df137SlukemRC=$? 5334e6df137Slukemif test $RC != 0 ; then 5344e6df137Slukem echo "ldapsearch failed ($RC)!" 5354e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5364e6df137Slukem exit $RC 5374e6df137Slukemfi 5384e6df137Slukem 5394e6df137Slukemgrep "^mail: dots@admin" $SEARCHOUT > /dev/null 5404e6df137SlukemRC=$? 5414e6df137Slukemif test $RC != 0 ; then 5424e6df137Slukem echo "Refresh failed" 5434e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 544d11b170bStron exit 1 5454e6df137Slukemfi 5464e6df137Slukem 5474e6df137Slukemecho "" 5484e6df137Slukemecho "Testing Bind caching" 5494e6df137Slukem 5504e6df137SlukemCNT=`expr $CNT + 1` 5514e6df137SlukemUSERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 5524e6df137SlukemUPASSWD="jaj" 5534e6df137Slukemecho "Query $CNT: $USERDN" 5544e6df137Slukemecho "# Query $CNT: $USERDN" >> $SEARCHOUT 555*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -s base -H $URI2 \ 5564e6df137Slukem -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 5574e6df137SlukemRC=$? 5584e6df137Slukemif test $RC != 0 ; then 5594e6df137Slukem echo "ldapsearch failed ($RC)!" 5604e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5614e6df137Slukem exit $RC 5624e6df137Slukemfi 5634e6df137Slukem 5644e6df137Slukemgrep "CACHING BIND" $LOG2 > /dev/null 5654e6df137SlukemRC=$? 5664e6df137Slukemif test $RC != 0 ; then 5674e6df137Slukem echo "Refresh failed" 5684e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 569d11b170bStron exit 1 5704e6df137Slukemfi 5714e6df137Slukem 5724e6df137SlukemCNT=`expr $CNT + 1` 5734e6df137SlukemUSERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 5744e6df137SlukemUPASSWD="jaj" 5754e6df137Slukemecho "Query $CNT: (Bind should be cached)" 5764e6df137Slukemecho "# Query $CNT: (Bind should be cached)" >> $SEARCHOUT 577*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -s base -H $URI2 \ 5784e6df137Slukem -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 5794e6df137SlukemRC=$? 5804e6df137Slukemif test $RC != 0 ; then 5814e6df137Slukem echo "ldapsearch failed ($RC)!" 5824e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5834e6df137Slukem exit $RC 5844e6df137Slukemfi 5854e6df137Slukem 5864e6df137Slukemgrep "CACHED BIND" $LOG2 > /dev/null 5874e6df137SlukemRC=$? 5884e6df137Slukemif test $RC != 0 ; then 5894e6df137Slukem echo "Refresh failed" 5904e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 591d11b170bStron exit 1 5924e6df137Slukemfi 5934e6df137Slukem 5944e6df137Slukemecho "" 5954e6df137Slukemecho "Testing pwdModify" 596*e670fd5cSchristos$LDAPPASSWD -H $URI2 \ 5974e6df137Slukem -D "$MANAGERDN" -w "$PASSWD" -s newpw "$USERDN" >> $TESTOUT 2>&1 5984e6df137SlukemRC=$? 5994e6df137Slukemif test $RC != 0 ; then 6004e6df137Slukem echo "ldappasswd failed ($RC)!" 6014e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6024e6df137Slukem exit $RC 6034e6df137Slukemfi 6044e6df137Slukem 6054e6df137SlukemRC=`grep "CACH.* BIND" $LOG2 | wc -l` 6064e6df137Slukemif test $RC != 3 ; then 6074e6df137Slukem echo "ldappasswd didn't update the cache" 6084e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 609d11b170bStron exit 1 6104e6df137Slukemfi 6114e6df137Slukem 6124e6df137SlukemCNT=`expr $CNT + 1` 6134e6df137SlukemUSERDN="cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com" 6144e6df137SlukemUPASSWD=newpw 6154e6df137Slukemecho "Query $CNT: (Bind should be cached)" 6164e6df137Slukemecho "# Query $CNT: (Bind should be cached)" >> $SEARCHOUT 617*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -s base -H $URI2 \ 6184e6df137Slukem -D "$USERDN" -w "$UPASSWD" >> $SEARCHOUT 2>> $TESTOUT 6194e6df137SlukemRC=$? 6204e6df137Slukemif test $RC != 0 ; then 6214e6df137Slukem echo "ldapsearch failed ($RC)!" 6224e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6234e6df137Slukem exit $RC 6244e6df137Slukemfi 6254e6df137Slukem 6264e6df137SlukemRC=`grep "CACH.* BIND" $LOG2 | wc -l` 6274e6df137Slukemif test $RC != 4 ; then 6284e6df137Slukem echo "Bind wasn't answered from cache" 6294e6df137Slukem test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait 630d11b170bStron exit 1 6314e6df137Slukemfi 6324e6df137Slukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 6334e6df137Slukem 6342de962bdSlukemecho ">>>>> Test succeeded" 6352de962bdSlukem 6362de962bdSlukemtest $KILLSERVERS != no && wait 6372de962bdSlukem 6382de962bdSlukemexit 0 639