]> git.sur5r.net Git - openldap/blob - tests/scripts/test044-dynlist
save logs of first part of test
[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 "==========================================================" >> $LOG1
195
196 echo "Starting slapd on TCP/IP port $PORT1..."
197 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING >> $LOG1 2>&1 &
198 PID=$!
199 if test $WAIT != 0 ; then
200     echo PID $PID
201     read foo
202 fi
203 KILLPIDS="$PID"
204
205 sleep 1
206
207 echo "Testing slapd searching..."
208 for i in 0 1 2 3 4 5; do
209         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
210                 '(objectclass=*)' > /dev/null 2>&1
211         RC=$?
212         if test $RC = 0 ; then
213                 break
214         fi
215         echo "Waiting 5 seconds for slapd to start..."
216         sleep 5
217 done
218
219 if test $RC != 0 ; then
220         echo "ldapsearch failed ($RC)!"
221         test $KILLSERVERS != no && kill -HUP $KILLPIDS
222         exit $RC
223 fi
224
225 echo "Adding a dynamic list..."
226 $LDAPADD -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD \
227         > $TESTOUT 2>&1 << EOMODS
228 dn: cn=Dynamic List of Members,$LISTDN
229 objectClass: groupOfURLs
230 cn: Dynamic List of Members
231 memberURL: ldap:///ou=People,${BASEDN}??sub?(objectClass=person)
232 EOMODS
233
234 echo "Testing list search of all attrs..."
235 echo "# Testing list search of all attrs..." >> $SEARCHOUT
236 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
237         '(cn=Dynamic List of Members)' '*' \
238         >> $SEARCHOUT 2>&1
239 RC=$?
240 if test $RC != 0 ; then
241         echo "ldapsearch failed ($RC)!"
242         test $KILLSERVERS != no && kill -HUP $KILLPIDS
243         exit $RC
244 fi
245
246 echo "Testing list search of a listed attr..."
247 echo "# Testing list search of a listed attr..." >> $SEARCHOUT
248 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
249         '(cn=Dynamic List of Members)' member \
250         >> $SEARCHOUT 2>&1
251 RC=$?
252 if test $RC != 0 ; then
253         echo "ldapsearch failed ($RC)!"
254         test $KILLSERVERS != no && kill -HUP $KILLPIDS
255         exit $RC
256 fi
257
258 echo "Testing list search of a non-listed attr..."
259 echo "# Testing list search of a non-listed attr..." >> $SEARCHOUT
260 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 \
261         '(cn=Dynamic List of Members)' objectClass \
262         >> $SEARCHOUT 2>&1
263 RC=$?
264 if test $RC != 0 ; then
265         echo "ldapsearch failed ($RC)!"
266         test $KILLSERVERS != no && kill -HUP $KILLPIDS
267         exit $RC
268 fi
269
270 echo "Testing list search with (critical) manageDSAit..."
271 echo "# Testing list search with (critical) manageDSAit..." >> $SEARCHOUT
272 $LDAPSEARCH -S "" -b "$LISTDN" -h $LOCALHOST -p $PORT1 -MM \
273         '(&(cn=Dynamic List of Members)(objectClass=groupOfURLs))' '*' \
274         >> $SEARCHOUT 2>&1
275 RC=$?
276 if test $RC != 0 ; then
277         echo "ldapsearch failed ($RC)!"
278         test $KILLSERVERS != no && kill -HUP $KILLPIDS
279         exit $RC
280 fi
281
282 CMPDN="cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN"
283 echo "Testing list compare..."
284 echo "# Testing list compare..." >> $SEARCHOUT
285 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 \
286         "cn=Dynamic List,$LISTDN" "member:$CMPDN" \
287         >> $SEARCHOUT 2>&1
288 RC=$?
289 case $RC in
290 5)
291         echo "ldapcompare returned FALSE ($RC)!"
292         test $KILLSERVERS != no && kill -HUP $KILLPIDS
293         exit $RC
294         ;;
295 6)
296         echo "ldapcompare returned TRUE ($RC)"
297         ;;
298 0)
299         echo "ldapcompare returned success ($RC)!"
300         test $KILLSERVERS != no && kill -HUP $KILLPIDS
301         exit $RC
302         ;;
303 *)
304         echo "ldapcompare failed ($RC)!"
305         test $KILLSERVERS != no && kill -HUP $KILLPIDS
306         exit $RC
307         ;;
308 esac
309 echo "" >> $SEARCHOUT
310
311 echo "Testing list compare with manageDSAit..."
312 echo "# Testing list compare with manageDSAit..." >> $SEARCHOUT
313 $LDAPCOMPARE -h $LOCALHOST -p $PORT1 -MM \
314         "cn=Dynamic List,$LISTDN" "member:$CMPDN" \
315         >> $SEARCHOUT 2>&1
316 RC=$?
317 case $RC in
318 5)
319         echo "ldapcompare returned FALSE ($RC)"
320         ;;
321 6)
322         echo "ldapcompare returned TRUE ($RC)!"
323         test $KILLSERVERS != no && kill -HUP $KILLPIDS
324         exit $RC
325         ;;
326 0)
327         echo "ldapcompare returned success ($RC)!"
328         test $KILLSERVERS != no && kill -HUP $KILLPIDS
329         exit $RC
330         ;;
331 *)
332         echo "ldapcompare failed ($RC)!"
333         test $KILLSERVERS != no && kill -HUP $KILLPIDS
334         exit $RC
335         ;;
336 esac
337 echo "" >> $SEARCHOUT
338
339 test $KILLSERVERS != no && kill -HUP $KILLPIDS
340
341 LDIF=$DYNLISTOUT
342
343 echo "Filtering ldapsearch results..."
344 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
345 echo "Filtering original ldif used to create database..."
346 . $LDIFFILTER < $LDIF > $LDIFFLT
347 echo "Comparing filter output..."
348 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
349
350 if test $? != 0 ; then
351         echo "Comparison failed"
352         exit 1
353 fi
354
355 echo ">>>>> Test succeeded"
356 exit 0