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