1#! /bin/sh
2# $OpenLDAP$
3## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4##
5## Copyright 1998-2021 The OpenLDAP Foundation.
6## All rights reserved.
7##
8## Redistribution and use in source and binary forms, with or without
9## modification, are permitted only as authorized by the OpenLDAP
10## Public License.
11##
12## A copy of this license is available in the file LICENSE in the
13## top-level directory of the distribution or, alternatively, at
14## <http://www.OpenLDAP.org/license.html>.
15
16echo "running defines.sh"
17. $SRCDIR/scripts/defines.sh
18
19echo ""
20
21if test $BACKMETA = metano ; then
22          echo "meta backend not available, test skipped"
23          exit 0
24fi
25
26if test $BACKLDAP = ldapno ; then
27          echo "ldap backend not available, test skipped"
28          exit 0
29fi
30
31rm -rf $TESTDIR
32
33mkdir -p $TESTDIR $DBDIR1 $DBDIR2
34
35echo "Starting slapd on TCP/IP port $PORT1..."
36. $CONFFILTER $BACKEND < $METACONF1 > $CONF1
37$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
38PID=$!
39if test $WAIT != 0 ; then
40    echo PID $PID
41    read foo
42fi
43KILLPIDS="$PID"
44
45sleep 1
46
47echo "Using ldapsearch to check that slapd is running..."
48for i in 0 1 2 3 4 5; do
49          $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
50                    'objectclass=*' > /dev/null 2>&1
51          RC=$?
52          if test $RC = 0 ; then
53                    break
54          fi
55          echo "Waiting 5 seconds for slapd to start..."
56          sleep 5
57done
58if test $RC != 0 ; then
59          echo "ldapsearch failed ($RC)!"
60          test $KILLSERVERS != no && kill -HUP $KILLPIDS
61          exit $RC
62fi
63
64echo "Using ldapadd to populate the database..."
65$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
66          $LDIFORDERED > $TESTOUT 2>&1
67RC=$?
68if test $RC != 0 ; then
69          echo "ldapadd failed ($RC)!"
70          test $KILLSERVERS != no && kill -HUP $KILLPIDS
71          exit $RC
72fi
73
74echo "Starting slapd on TCP/IP port $PORT2..."
75. $CONFFILTER $BACKEND < $METACONF2 > $CONF2
76$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
77PID=$!
78if test $WAIT != 0 ; then
79    echo PID $PID
80    read foo
81fi
82KILLPIDS="$KILLPIDS $PID"
83
84sleep 1
85
86echo "Using ldapsearch to check that slapd is running..."
87for i in 0 1 2 3 4 5; do
88          $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
89                    'objectclass=*' > /dev/null 2>&1
90          RC=$?
91          if test $RC = 0 ; then
92                    break
93          fi
94          echo "Waiting 5 seconds for slapd to start..."
95          sleep 5
96done
97if test $RC != 0 ; then
98          echo "ldapsearch failed ($RC)!"
99          test $KILLSERVERS != no && kill -HUP $KILLPIDS
100          exit $RC
101fi
102
103echo "Using ldapadd to populate the database..."
104$LDAPADD -D "$METAMANAGERDN" -H $URI2 -w $PASSWD < \
105          $LDIFMETA >> $TESTOUT 2>&1
106RC=$?
107if test $RC != 0 ; then
108          echo "ldapadd failed ($RC)!"
109          test $KILLSERVERS != no && kill -HUP $KILLPIDS
110          exit $RC
111fi
112
113echo "Starting slapd on TCP/IP port $PORT3..."
114. $CONFFILTER $BACKEND < $METACONF > $CONF3
115$SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 &
116PID=$!
117if test $WAIT != 0 ; then
118    echo PID $PID
119    read foo
120fi
121KILLPIDS="$KILLPIDS $PID"
122
123sleep 1
124
125echo "Using ldapsearch to check that slapd is running..."
126for i in 0 1 2 3 4 5; do
127          $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \
128                    'objectclass=*' > /dev/null 2>&1
129          RC=$?
130          if test $RC = 0 ; then
131                    break
132          fi
133          echo "Waiting 5 seconds for slapd to start..."
134          sleep 5
135done
136if test $RC != 0 ; then
137          echo "ldapsearch failed ($RC)!"
138          test $KILLSERVERS != no && kill -HUP $KILLPIDS
139          exit $RC
140fi
141
142cat /dev/null > $SEARCHOUT
143
144BASEDN="o=Example,c=US"
145echo "Searching base=\"$BASEDN\"..."
146echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
147$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
148RC=$?
149#if test $RC != 0 ; then
150#         echo "Search failed ($RC)!"
151#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
152#         exit $RC
153#fi
154case $RC in
155          0)
156          ;;
157          51)
158                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
159                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
160                    exit 0
161          ;;
162          *)
163                    echo "Search failed ($RC)!"
164                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
165                    exit $RC
166          ;;
167esac
168
169# ITS#4195: spurious matchedDN when the search scopes the main target,
170# and the searchBase is not present, so that target returns noSuchObject
171BASEDN="ou=Meta,o=Example,c=US"
172echo "Searching base=\"$BASEDN\"..."
173echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
174$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
175RC=$?
176#if test $RC != 0 ; then
177#         echo "Search failed ($RC)!"
178#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
179#         exit $RC
180#fi
181case $RC in
182          0)
183          ;;
184          51)
185                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
186                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
187                    exit 0
188          ;;
189          *)
190                    echo "Search failed ($RC)!"
191                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
192                    exit $RC
193          ;;
194esac
195
196#
197# Do some modifications
198#
199
200BASEDN="o=Example,c=US"
201echo "Modifying database \"$BASEDN\"..."
202$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -H $URI3 -w $PASSWD \
203          -M >> $TESTOUT 2>&1 << EOMODS
204# These operations (updates with objectClass mapping) triggered ITS#3499
205dn: cn=Added Group,ou=Groups,$BASEDN
206changetype: add
207objectClass: groupOfNames
208objectClass: uidObject
209cn: Added Group
210member: cn=Added Group,ou=Groups,$BASEDN
211uid: added
212
213dn: cn=Another Added Group,ou=Groups,$BASEDN
214changetype: add
215objectClass: groupOfNames
216cn: Another Added Group
217member: cn=Added Group,ou=Groups,$BASEDN
218member: cn=Another Added Group,ou=Groups,$BASEDN
219
220dn: cn=Another Added Group,ou=Groups,$BASEDN
221changetype: modify
222add: objectClass
223objectClass: uidObject
224-
225add: uid
226uid: added
227-
228
229dn: cn=Added Group,ou=Groups,$BASEDN
230changetype: modify
231delete: objectClass
232objectClass: uidObject
233-
234delete: uid
235-
236
237dn: ou=Meta,$BASEDN
238changetype: modify
239add: description
240description: added to "ou=Meta,$BASEDN"
241-
242
243dn: ou=Who's going to handle this?,$BASEDN
244changetype: add
245objectClass: organizationalUnit
246ou: Who's going to handle this?
247description: added
248description: will be deleted
249
250dn: ou=Same as above,$BASEDN
251changetype: add
252objectClass: organizationalUnit
253ou: Same as above
254description: added right after "Who's going to handle this?"
255description: will be preserved
256
257dn: ou=Who's going to handle this?,$BASEDN
258changetype: delete
259
260dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
261changetype: add
262objectClass: organizationalUnit
263ou: Who's going to handle this?
264description: added
265description: will be deleted
266
267dn: ou=Same as above,ou=Meta,$BASEDN
268changetype: add
269objectClass: organizationalUnit
270ou: Same as above
271description: added right after "Who's going to handle this?"
272description: will be preserved
273
274dn: cn=Added User,ou=Same as above,ou=Meta,$BASEDN
275changetype: add
276objectClass: inetOrgPerson
277cn: Added User
278sn: User
279userPassword: secret
280
281dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
282changetype: delete
283EOMODS
284
285RC=$?
286#if test $RC != 0 ; then
287#         echo "Modify failed ($RC)!"
288#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
289#         exit $RC
290#fi
291case $RC in
292          0)
293          ;;
294          51)
295                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
296                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
297                    exit 0
298          ;;
299          *)
300                    echo "Modify failed ($RC)!"
301                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
302                    exit $RC
303          ;;
304esac
305
306echo "Searching base=\"$BASEDN\"..."
307echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
308$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" >> $SEARCHOUT 2>&1
309RC=$?
310#if test $RC != 0 ; then
311#         echo "Search failed ($RC)!"
312#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
313#         exit $RC
314#fi
315case $RC in
316          0)
317          ;;
318          51)
319                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
320                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
321                    exit 0
322          ;;
323          *)
324                    echo "Search failed ($RC)!"
325                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
326                    exit $RC
327          ;;
328esac
329
330BASEDN="o=Example,c=US"
331echo "    base=\"$BASEDN\"..."
332echo "#   base=\"$BASEDN\"..." >> $SEARCHOUT
333$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" -M "$FILTER" '*' ref \
334          >> $SEARCHOUT 2>&1
335RC=$?
336#if test $RC != 0 ; then
337#         echo "Search failed ($RC)!"
338#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
339#         exit $RC
340#fi
341case $RC in
342          0)
343          ;;
344          51)
345                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
346                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
347                    exit 0
348          ;;
349          *)
350                    echo "Search failed ($RC)!"
351                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
352                    exit $RC
353          ;;
354esac
355
356BASEDN="o=Example,c=US"
357FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
358echo "Searching filter=\"$FILTER\""
359echo "    attrs=\"seeAlso\""
360echo "    base=\"$BASEDN\"..."
361echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
362echo "#   attrs=\"seeAlso\"" >> $SEARCHOUT
363echo "#   base=\"$BASEDN\"..." >> $SEARCHOUT
364$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" seeAlso \
365          >> $SEARCHOUT 2>&1
366RC=$?
367#if test $RC != 0 ; then
368#         echo "Search failed ($RC)!"
369#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
370#         exit $RC
371#fi
372case $RC in
373          0)
374          ;;
375          51)
376                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
377                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
378                    exit 0
379          ;;
380          *)
381                    echo "Search failed ($RC)!"
382                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
383                    exit $RC
384          ;;
385esac
386
387FILTER="(uid=example)"
388echo "Searching filter=\"$FILTER\""
389echo "    attrs=\"uid\""
390echo "    base=\"$BASEDN\"..."
391echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
392echo "#   attrs=\"uid\"" >> $SEARCHOUT
393echo "#   base=\"$BASEDN\"..." >> $SEARCHOUT
394$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" uid \
395          >> $SEARCHOUT 2>&1
396RC=$?
397#if test $RC != 0 ; then
398#         echo "Search failed ($RC)!"
399#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
400#         exit $RC
401#fi
402case $RC in
403          0)
404          ;;
405          51)
406                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
407                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
408                    exit 0
409          ;;
410          *)
411                    echo "Search failed ($RC)!"
412                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
413                    exit $RC
414          ;;
415esac
416
417FILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)"
418echo "Searching filter=\"$FILTER\""
419echo "    attrs=\"member\""
420echo "    base=\"$BASEDN\"..."
421echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
422echo "#   attrs=\"member\"" >> $SEARCHOUT
423echo "#   base=\"$BASEDN\"..." >> $SEARCHOUT
424$LDAPSEARCH -S "" -H $URI3 -b "$BASEDN" "$FILTER" member \
425          >> $SEARCHOUT 2>&1
426RC=$?
427#if test $RC != 0 ; then
428#         echo "Search failed ($RC)!"
429#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
430#         exit $RC
431#fi
432case $RC in
433          0)
434          ;;
435          51)
436                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
437                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
438                    exit 0
439          ;;
440          *)
441                    echo "Search failed ($RC)!"
442                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
443                    exit $RC
444          ;;
445esac
446
447echo "Waiting 10 seconds for cached connections to timeout..."
448sleep 10
449
450echo "Searching with a timed out connection..."
451echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
452echo "#   attrs=\"member\"" >> $SEARCHOUT
453echo "#   base=\"$BASEDN\"" >> $SEARCHOUT
454echo "#   with a timed out connection..." >> $SEARCHOUT
455$LDAPSEARCH -S "" -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
456          -b "$BASEDN" "$FILTER" member \
457          >> $SEARCHOUT 2>&1
458RC=$?
459#if test $RC != 0 ; then
460#         echo "Search failed ($RC)!"
461#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
462#         exit $RC
463#fi
464case $RC in
465          0)
466          ;;
467          51)
468                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
469                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
470                    exit 0
471          ;;
472          *)
473                    echo "Search failed ($RC)!"
474                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
475                    exit $RC
476          ;;
477esac
478
479# NOTE: cannot send to $SEARCHOUT because the returned entries
480# are not predictable...
481echo "Checking server-enforced size limit..."
482echo "# Checking server-enforced size limit..." >> $SEARCHOUT
483$LDAPSEARCH -S "" -H $URI3 \
484          -D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
485          -b "$BASEDN" "(objectClass=*)" 1.1 \
486          >> $TESTOUT 2>&1
487RC=$?
488case $RC,$BACKEND in
489          4,* | 0,null)
490          ;;
491          0,*)
492                    echo "Search should have failed ($RC)!"
493                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
494                    exit -1
495          ;;
496          *)
497                    echo "Search failed ($RC)!"
498                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
499                    exit $RC
500          ;;
501esac
502
503# NOTE: cannot send to $SEARCHOUT because the returned entries
504# are not predictable...
505echo "Checking client-requested size limit..."
506echo "# Checking client-requested size limit..." >> $SEARCHOUT
507$LDAPSEARCH -S "" -H $URI3 \
508          -D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
509          -b "$BASEDN" -z 2 "(objectClass=*)" 1.1 \
510          >> $TESTOUT 2>&1
511RC=$?
512case $RC,$BACKEND in
513          4,* | 0,null)
514          ;;
515          0,*)
516                    echo "Search should have failed ($RC)!"
517                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
518                    exit -1
519          ;;
520          *)
521                    echo "Search failed ($RC)!"
522                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
523                    exit $RC
524          ;;
525esac
526
527echo "Filtering ldapsearch results..."
528$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
529echo "Filtering original ldif used to create database..."
530$LDIFFILTER < $METAOUT > $LDIFFLT
531echo "Comparing filter output..."
532$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
533
534if test $? != 0 ; then
535          echo "comparison failed - meta search/modification didn't succeed"
536          test $KILLSERVERS != no && kill -HUP $KILLPIDS
537          exit 1
538fi
539
540BASEDN="o=Example,c=US"
541echo "Changing password to database \"$BASEDN\"..."
542$LDAPPASSWD -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
543          -s $PASSWD "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
544          >> $TESTOUT 2>&1
545RC=$?
546#if test $RC != 0 ; then
547#         echo "Passwd ExOp failed ($RC)!"
548#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
549#         exit $RC
550#fi
551case $RC in
552          0)
553          ;;
554          51)
555                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
556                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
557                    exit 0
558          ;;
559          *)
560                    echo "Passwd ExOp failed ($RC)!"
561                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
562                    exit $RC
563          ;;
564esac
565
566echo "Binding with newly changed password to database \"$BASEDN\"..."
567$LDAPWHOAMI -H $URI3 \
568          -D "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
569          -w $PASSWD >> $TESTOUT 2>&1
570RC=$?
571#if test $RC != 0 ; then
572#         echo "WhoAmI failed ($RC)!"
573#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
574#         exit $RC
575#fi
576case $RC in
577          0)
578          ;;
579          51)
580                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
581          ;;
582          *)
583                    echo "WhoAmI failed ($RC)!"
584                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
585                    exit $RC
586          ;;
587esac
588
589echo "Binding as newly added user to database \"$BASEDN\"..."
590$LDAPWHOAMI -H $URI3 \
591          -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
592          -w $PASSWD >> $TESTOUT 2>&1
593RC=$?
594#if test $RC != 0 ; then
595#         echo "WhoAmI failed ($RC)!"
596#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
597#         exit $RC
598#fi
599case $RC in
600          0)
601          ;;
602          51)
603                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
604          ;;
605          *)
606                    echo "WhoAmI failed ($RC)!"
607                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
608                    exit $RC
609          ;;
610esac
611
612echo "Changing password to database \"$BASEDN\"..."
613$LDAPPASSWD -H $URI3 -D "cn=Manager,$BASEDN" -w $PASSWD \
614          -s meta "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
615          >> $TESTOUT 2>&1
616RC=$?
617#if test $RC != 0 ; then
618#         echo "Passwd ExOp failed ($RC)!"
619#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
620#         exit $RC
621#fi
622case $RC in
623          0)
624          ;;
625          51)
626                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
627                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
628                    exit 0
629          ;;
630          *)
631                    echo "Passwd ExOp failed ($RC)!"
632                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
633                    exit $RC
634          ;;
635esac
636
637echo "Binding with newly changed password to database \"$BASEDN\"..."
638$LDAPWHOAMI -H $URI3 \
639          -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
640          -w meta >> $TESTOUT 2>&1
641RC=$?
642#if test $RC != 0 ; then
643#         echo "WhoAmI failed ($RC)!"
644#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
645#         exit $RC
646#fi
647case $RC in
648          0)
649          ;;
650          51)
651                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
652          ;;
653          *)
654                    echo "WhoAmI failed ($RC)!"
655                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
656                    exit $RC
657          ;;
658esac
659
660echo "Binding with incorrect password to database \"$BASEDN\"..."
661$LDAPWHOAMI -H $URI3 \
662          -D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
663          -w bogus >> $TESTOUT 2>&1
664RC=$?
665#if test $RC != 0 ; then
666#         echo "WhoAmI failed ($RC)!"
667#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
668#         exit $RC
669#fi
670case $RC,$BACKEND in
671          0,null)
672          ;;
673          0,*)
674                    echo "WhoAmI should have failed ($RC)!"
675                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
676                    exit -1
677          ;;
678          51,*)
679                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
680          ;;
681          *)
682          ;;
683esac
684
685echo "Binding with non-existing user to database \"$BASEDN\"..."
686$LDAPWHOAMI -H $URI3 \
687          -D "cn=Non-existing User,ou=Same as above,ou=Meta,$BASEDN" \
688          -w bogus >> $TESTOUT 2>&1
689RC=$?
690#if test $RC != 0 ; then
691#         echo "WhoAmI failed ($RC)!"
692#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
693#         exit $RC
694#fi
695case $RC,$BACKEND in
696          0,null)
697          ;;
698          0,*)
699                    echo "WhoAmI should have failed ($RC)!"
700                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
701                    exit -1
702          ;;
703          51,*)
704                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
705          ;;
706          *)
707          ;;
708esac
709
710echo "Comparing to database \"$BASEDN\"..."
711$LDAPCOMPARE -H $URI3 \
712          "cn=Another Added Group,ou=Groups,$BASEDN" \
713          "member:cn=Added Group,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
714RC=$?
715#if test $RC != 6 ; then
716#         echo "Compare failed ($RC)!"
717#         test $KILLSERVERS != no && kill -HUP $KILLPIDS
718#         exit -1
719#fi
720case $RC,$BACKEND in
721          6,* | 5,null)
722          ;;
723          51,*)
724                    echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
725          ;;
726          *)
727                    echo "Compare failed ($RC)!"
728                    test $KILLSERVERS != no && kill -HUP $KILLPIDS
729                    exit 1
730          ;;
731esac
732
733test $KILLSERVERS != no && kill -HUP $KILLPIDS
734
735echo ">>>>> Test succeeded"
736
737test $KILLSERVERS != no && wait
738
739exit 0
740