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