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