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