X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest020-proxycache;h=8f502ebe665c032df176b6b2f29310f501bf4ce3;hb=3743a5a68e4d608949d5fd04904733ee5c1ac959;hp=a31aa34168e58b6a7e132aff9de5f645d1cb7009;hpb=07237a711cc8a476dd201682a6bbc6b11c3209de;p=openldap diff --git a/tests/scripts/test020-proxycache b/tests/scripts/test020-proxycache index a31aa34168..8f502ebe66 100755 --- a/tests/scripts/test020-proxycache +++ b/tests/scripts/test020-proxycache @@ -2,7 +2,7 @@ # $OpenLDAP$ ## This work is part of OpenLDAP Software . ## -## Copyright 1998-2009 The OpenLDAP Foundation. +## Copyright 1998-2012 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without @@ -33,6 +33,13 @@ if test $BACKLDAP = "ldapno" ; then exit 0 fi +if test $BACKEND = ldif ; then + # The (mail=example.com*) queries hit a sizelimit, so which + # entry is returned depends on the ordering in the backend. + echo "Test does not support $BACKEND backend, test skipped" + exit 0 +fi + mkdir -p $TESTDIR $DBDIR1 $DBDIR2 # Test proxy caching: @@ -145,7 +152,7 @@ fi grep "query template" $LOG2 > /dev/null RC=$? if test $RC != 0 ; then - echo "Debug messages unavailable, test aborted..." + echo "Debug messages unavailable, remaining test skipped..." test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait exit 0 fi @@ -249,7 +256,7 @@ case $RC in 0) echo "ldapsearch should have failed!" test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC + exit 1 ;; 4) echo "ldapsearch failed ($RC)" @@ -276,7 +283,7 @@ case $RC in 0) echo "ldapsearch should have failed!" test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC + exit 1 ;; 4) echo "ldapsearch failed ($RC)" @@ -288,18 +295,32 @@ case $RC in ;; esac +CNT=`expr $CNT + 1` +FILTER="(|(cn=All Staff)(sn=All Staff))" +ATTRS="sn cn title uid undefinedAttr" +echo "Query $CNT: filter:$FILTER attrs:$ATTRS" +echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ + "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT +RC=$? +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + FIRST=$CNT -# queries 2-6,8-9 are cacheable -CACHEABILITY=011111011 +# queries 2-6,8-10 are cacheable +CACHEABILITY=0111110111 grep CACHEABLE $LOG2 | awk '{ - if ($2 == "NOT") + if ($3 == "NOT") printf "Query %d not cacheable\n",NR else printf "Query %d cacheable\n",NR }' CACHED=`grep CACHEABLE $LOG2 | awk '{ - if ($2 == "NOT") + if ($3 == "NOT") printf "0" else printf "1" @@ -309,6 +330,8 @@ if test "$CACHEABILITY" = "$CACHED" ; then echo "Successfully verified cacheability" else echo "Error in verifying cacheability" + echo "$CACHED" + echo "$CACHEABILITY" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit 1 fi @@ -385,7 +408,7 @@ case $RC in 0) echo "ldapsearch should have failed!" test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC + exit 1 ;; 4) echo "ldapsearch failed ($RC)" @@ -412,7 +435,7 @@ case $RC in 0) echo "ldapsearch should have failed!" test $KILLSERVERS != no && kill -HUP $KILLPIDS - exit $RC + exit 1 ;; 4) echo "ldapsearch failed ($RC)" @@ -424,14 +447,28 @@ case $RC in ;; esac -#queries 10-12,15 are answerable, 13-14 are not -#actually, 12 would be answerable, but since 8 made mail=*example.com +CNT=`expr $CNT + 1` +FILTER="(|(cn=All Staff)(sn=All Staff))" +ATTRS="sn cn title uid undefinedAttr" +echo "Query $CNT: filter:$FILTER attrs:$ATTRS" +echo "# Query $CNT: filter:$FILTER attrs:$ATTRS" >> $SEARCHOUT +$LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \ + "$FILTER" $ATTRS >> $SEARCHOUT 2>> $TESTOUT +RC=$? +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +#queries 11-13,16-17 are answerable, 14-15 are not +#actually, 14 would be answerable, but since 8 made mail=*example.com #not answerable because of sizelimit, queries contained in it are no longer #answerable as well -ANSWERABILITY=111001 +ANSWERABILITY=1110011 grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ if (NR > FIRST) { - if ($2 == "NOT") + if ($3 == "NOT") printf "Query %d not answerable\n",NR else printf "Query %d answerable\n",NR @@ -439,7 +476,7 @@ grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ }' ANSWERED=`grep ANSWERABLE $LOG2 | awk "BEGIN {FIRST=$FIRST}"'{ if (NR > FIRST) { - if ($2 == "NOT") + if ($3 == "NOT") printf "0" else printf "1" @@ -455,9 +492,9 @@ else fi echo "Filtering ldapsearch results..." -. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT +$LDIFFILTER -s ldif=a < $SEARCHOUT > $SEARCHFLT echo "Filtering original ldif..." -. $LDIFFILTER < $PROXYCACHEOUT > $LDIFFLT +$LDIFFILTER -s ldif=a < $PROXYCACHEOUT > $LDIFFLT echo "Comparing filter output..." $CMP $SEARCHFLT $LDIFFLT > $CMPOUT @@ -500,7 +537,7 @@ if test $RC != 0 ; then exit $RC fi -SLEEP=`expr $PCACHETTR + $PCACHE_CCPERIOD` +SLEEP=`expr $PCACHETTR + $PCACHE_CCPERIOD + 1` echo "Waiting $SLEEP seconds for cache to refresh" sleep $SLEEP @@ -520,7 +557,7 @@ RC=$? if test $RC != 0 ; then echo "Refresh failed" test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait - exit 0 + exit 1 fi echo "" @@ -545,7 +582,7 @@ RC=$? if test $RC != 0 ; then echo "Refresh failed" test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait - exit 0 + exit 1 fi CNT=`expr $CNT + 1` @@ -567,7 +604,7 @@ RC=$? if test $RC != 0 ; then echo "Refresh failed" test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait - exit 0 + exit 1 fi echo "" @@ -585,7 +622,7 @@ RC=`grep "CACH.* BIND" $LOG2 | wc -l` if test $RC != 3 ; then echo "ldappasswd didn't update the cache" test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait - exit 0 + exit 1 fi CNT=`expr $CNT + 1` @@ -606,7 +643,7 @@ RC=`grep "CACH.* BIND" $LOG2 | wc -l` if test $RC != 4 ; then echo "Bind wasn't answered from cache" test $KILLSERVERS != no && kill -HUP $KILLPIDS && wait - exit 0 + exit 1 fi test $KILLSERVERS != no && kill -HUP $KILLPIDS