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