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