]> git.sur5r.net Git - openldap/blob - tests/scripts/test044-dynlist
add dynlist testing...
[openldap] / tests / scripts / test044-dynlist
1 #! /bin/sh
2 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
3 ##
4 ## Copyright 1998-2005 The OpenLDAP Foundation.
5 ## All rights reserved.
6 ##
7 ## Redistribution and use in source and binary forms, with or without
8 ## modification, are permitted only as authorized by the OpenLDAP
9 ## Public License.
10 ##
11 ## A copy of this license is available in the file LICENSE in the
12 ## top-level directory of the distribution or, alternatively, at
13 ## <http://www.OpenLDAP.org/license.html>.
14
15 echo "running defines.sh"
16 . $SRCDIR/scripts/defines.sh
17
18 mkdir -p $TESTDIR $DBDIR1
19
20 echo "Running slapadd to build slapd database..."
21 . $CONFFILTER $BACKEND $MONITORDB < $MCONF > $ADDCONF
22 $SLAPADD -f $ADDCONF -l $LDIFORDERED
23 RC=$?
24 if test $RC != 0 ; then
25         echo "slapadd failed ($RC)!"
26         exit $RC
27 fi
28
29 echo "Running slapindex to index slapd database..."
30 . $CONFFILTER $BACKEND $MONITORDB < $DYNLISTCONF > $CONF1
31 $SLAPINDEX -f $CONF1
32 RC=$?
33 if test $RC != 0 ; then
34         echo "warning: slapindex failed ($RC)"
35         echo "  assuming no indexing support"
36 fi
37
38 echo "Starting slapd on TCP/IP port $PORT1..."
39 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
40 PID=$!
41 if test $WAIT != 0 ; then
42     echo PID $PID
43     read foo
44 fi
45 KILLPIDS="$PID"
46
47 sleep 1
48
49 echo "Testing slapd searching..."
50 for i in 0 1 2 3 4 5; do
51         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
52                 '(objectclass=*)' > /dev/null 2>&1
53         RC=$?
54         if test $RC = 0 ; then
55                 break
56         fi
57         echo "Waiting 5 seconds for slapd to start..."
58         sleep 5
59 done
60
61 if test $RC != 0 ; then
62         echo "ldapsearch failed ($RC)!"
63         test $KILLSERVERS != no && kill -HUP $KILLPIDS
64         exit $RC
65 fi
66
67 cat /dev/null > $SEARCHOUT
68
69 LISTDN="ou=Dynamic Lists,$BASEDN"
70 echo "Adding a dynamic list..."
71 $LDAPADD -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
72         > $TESTOUT 2>&1 << EOMODS
73 dn: $LISTDN
74 objectClass: organizationalUnit
75 ou: Dynamic Lists
76
77 dn: cn=Dynamic List,$LISTDN
78 objectClass: groupOfURLs
79 cn: Dynamic List
80 memberURL: ldap:///ou=People,${BASEDN}?cn,mail?sub?(objectClass=person)
81 EOMODS
82
83 echo "Testing list search of all attrs..."
84 echo "# Testing list search of all attrs..." >> $SEARCHOUT
85 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
86         '(cn=Dynamic List)' '*' \
87         >> $SEARCHOUT 2>&1
88 RC=$?
89 if test $RC != 0 ; then
90         echo "ldapsearch failed ($RC)!"
91         test $KILLSERVERS != no && kill -HUP $KILLPIDS
92         exit $RC
93 fi
94
95 echo "Testing list search of a listed attr..."
96 echo "# Testing list search of a listed attr..." >> $SEARCHOUT
97 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
98         '(cn=Dynamic List)' mail \
99         >> $SEARCHOUT 2>&1
100 RC=$?
101 if test $RC != 0 ; then
102         echo "ldapsearch failed ($RC)!"
103         test $KILLSERVERS != no && kill -HUP $KILLPIDS
104         exit $RC
105 fi
106
107 echo "Testing list search of a non-listed attr..."
108 echo "# Testing list search of a non-listed attr..." >> $SEARCHOUT
109 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
110         '(cn=Dynamic List)' objectClass \
111         >> $SEARCHOUT 2>&1
112 RC=$?
113 if test $RC != 0 ; then
114         echo "ldapsearch failed ($RC)!"
115         test $KILLSERVERS != no && kill -HUP $KILLPIDS
116         exit $RC
117 fi
118
119 echo "Testing list search with (critical) manageDSAit..."
120 echo "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
121 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 -MM \
122         '(cn=Dynamic List)' '*' \
123         >> $SEARCHOUT 2>&1
124 RC=$?
125 if test $RC != 0 ; then
126         echo "ldapsearch failed ($RC)!"
127         test $KILLSERVERS != no && kill -HUP $KILLPIDS
128         exit $RC
129 fi
130
131 echo "Testing list compare..."
132 echo "# Testing list compare..." >> $SEARCHOUT
133 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
134         "cn=Dynamic List,$LISTDN" "cn:Bjorn Jensen" \
135         >> $SEARCHOUT 2>&1
136 RC=$?
137 case $RC in
138 5)
139         echo "ldapcompare returned FALSE ($RC)!"
140         test $KILLSERVERS != no && kill -HUP $KILLPIDS
141         exit $RC
142         ;;
143 6)
144         echo "ldapcompare returned TRUE ($RC)"
145         ;;
146 0)
147         echo "ldapcompare returned success ($RC)!"
148         test $KILLSERVERS != no && kill -HUP $KILLPIDS
149         exit $RC
150         ;;
151 *)
152         echo "ldapcompare failed ($RC)!"
153         test $KILLSERVERS != no && kill -HUP $KILLPIDS
154         exit $RC
155         ;;
156 esac
157 echo "" >> $SEARCHOUT
158
159 echo "Testing list compare with manageDSAit..."
160 echo "# Testing list compare with manageDSAit..." >> $SEARCHOUT
161 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 -MM \
162         "cn=Dynamic List,$LISTDN" "cn:Bjorn Jensen" \
163         >> $SEARCHOUT 2>&1
164 RC=$?
165 case $RC in
166 5)
167         echo "ldapcompare returned FALSE ($RC)"
168         ;;
169 6)
170         echo "ldapcompare returned TRUE ($RC)!"
171         test $KILLSERVERS != no && kill -HUP $KILLPIDS
172         exit $RC
173         ;;
174 0)
175         echo "ldapcompare returned success ($RC)!"
176         test $KILLSERVERS != no && kill -HUP $KILLPIDS
177         exit $RC
178         ;;
179 *)
180         echo "ldapcompare failed ($RC)!"
181         test $KILLSERVERS != no && kill -HUP $KILLPIDS
182         exit $RC
183         ;;
184 esac
185 echo "" >> $SEARCHOUT
186
187 echo "Stopping slapd..."
188 kill -HUP $KILLPIDS
189 wait $KILLPIDS
190
191 echo "Reconfiguring slapd..."
192 echo "dynlist-member-ad member" >> $CONF1
193
194 echo "Starting slapd on TCP/IP port $PORT1..."
195 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
196 PID=$!
197 if test $WAIT != 0 ; then
198     echo PID $PID
199     read foo
200 fi
201 KILLPIDS="$PID"
202
203 sleep 1
204
205 echo "Testing slapd searching..."
206 for i in 0 1 2 3 4 5; do
207         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
208                 '(objectclass=*)' > /dev/null 2>&1
209         RC=$?
210         if test $RC = 0 ; then
211                 break
212         fi
213         echo "Waiting 5 seconds for slapd to start..."
214         sleep 5
215 done
216
217 if test $RC != 0 ; then
218         echo "ldapsearch failed ($RC)!"
219         test $KILLSERVERS != no && kill -HUP $KILLPIDS
220         exit $RC
221 fi
222
223 echo "Adding a dynamic list..."
224 $LDAPADD -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
225         > $TESTOUT 2>&1 << EOMODS
226 dn: cn=Dynamic List of Members,$LISTDN
227 objectClass: groupOfURLs
228 cn: Dynamic List of Members
229 memberURL: ldap:///ou=People,${BASEDN}??sub?(objectClass=person)
230 EOMODS
231
232 echo "Testing list search of all attrs..."
233 echo "# Testing list search of all attrs..." >> $SEARCHOUT
234 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
235         '(cn=Dynamic List of Members)' '*' \
236         >> $SEARCHOUT 2>&1
237 RC=$?
238 if test $RC != 0 ; then
239         echo "ldapsearch failed ($RC)!"
240         test $KILLSERVERS != no && kill -HUP $KILLPIDS
241         exit $RC
242 fi
243
244 echo "Testing list search of a listed attr..."
245 echo "# Testing list search of a listed attr..." >> $SEARCHOUT
246 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
247         '(cn=Dynamic List of Members)' member \
248         >> $SEARCHOUT 2>&1
249 RC=$?
250 if test $RC != 0 ; then
251         echo "ldapsearch failed ($RC)!"
252         test $KILLSERVERS != no && kill -HUP $KILLPIDS
253         exit $RC
254 fi
255
256 echo "Testing list search of a non-listed attr..."
257 echo "# Testing list search of a non-listed attr..." >> $SEARCHOUT
258 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
259         '(cn=Dynamic List of Members)' objectClass \
260         >> $SEARCHOUT 2>&1
261 RC=$?
262 if test $RC != 0 ; then
263         echo "ldapsearch failed ($RC)!"
264         test $KILLSERVERS != no && kill -HUP $KILLPIDS
265         exit $RC
266 fi
267
268 echo "Testing list search with (critical) manageDSAit..."
269 echo "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
270 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 -MM \
271         '(&(cn=Dynamic List of Members)(objectClass=groupOfURLs))' '*' \
272         >> $SEARCHOUT 2>&1
273 RC=$?
274 if test $RC != 0 ; then
275         echo "ldapsearch failed ($RC)!"
276         test $KILLSERVERS != no && kill -HUP $KILLPIDS
277         exit $RC
278 fi
279
280 CMPDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN"
281 echo "Testing list compare..."
282 echo "# Testing list compare..." >> $SEARCHOUT
283 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
284         "cn=Dynamic List,$LISTDN" "member:$CMPDN" \
285         >> $SEARCHOUT 2>&1
286 RC=$?
287 case $RC in
288 5)
289         echo "ldapcompare returned FALSE ($RC)!"
290         test $KILLSERVERS != no && kill -HUP $KILLPIDS
291         exit $RC
292         ;;
293 6)
294         echo "ldapcompare returned TRUE ($RC)"
295         ;;
296 0)
297         echo "ldapcompare returned success ($RC)!"
298         test $KILLSERVERS != no && kill -HUP $KILLPIDS
299         exit $RC
300         ;;
301 *)
302         echo "ldapcompare failed ($RC)!"
303         test $KILLSERVERS != no && kill -HUP $KILLPIDS
304         exit $RC
305         ;;
306 esac
307 echo "" >> $SEARCHOUT
308
309 echo "Testing list compare with manageDSAit..."
310 echo "# Testing list compare with manageDSAit..." >> $SEARCHOUT
311 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 -MM \
312         "cn=Dynamic List,$LISTDN" "member:$CMPDN" \
313         >> $SEARCHOUT 2>&1
314 RC=$?
315 case $RC in
316 5)
317         echo "ldapcompare returned FALSE ($RC)"
318         ;;
319 6)
320         echo "ldapcompare returned TRUE ($RC)!"
321         test $KILLSERVERS != no && kill -HUP $KILLPIDS
322         exit $RC
323         ;;
324 0)
325         echo "ldapcompare returned success ($RC)!"
326         test $KILLSERVERS != no && kill -HUP $KILLPIDS
327         exit $RC
328         ;;
329 *)
330         echo "ldapcompare failed ($RC)!"
331         test $KILLSERVERS != no && kill -HUP $KILLPIDS
332         exit $RC
333         ;;
334 esac
335 echo "" >> $SEARCHOUT
336
337 test $KILLSERVERS != no && kill -HUP $KILLPIDS
338
339 LDIF=$DYNLISTOUT
340
341 echo "Filtering ldapsearch results..."
342 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
343 echo "Filtering original ldif used to create database..."
344 . $LDIFFILTER < $LDIF > $LDIFFLT
345 echo "Comparing filter output..."
346 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
347
348 if test $? != 0 ; then
349         echo "Comparison failed"
350         exit 1
351 fi
352
353 echo ">>>>> Test succeeded"
354 exit 0