2
# $OpenLDAP: pkg/ldap/tests/scripts/test035-meta,v 1.14.2.4 2008/02/11 23:26:51 kurt Exp $
3
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
5
## Copyright 1998-2008 The OpenLDAP Foundation.
6
## All rights reserved.
8
## Redistribution and use in source and binary forms, with or without
9
## modification, are permitted only as authorized by the OpenLDAP
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>.
16
echo "running defines.sh"
17
. $SRCDIR/scripts/defines.sh
21
if test $BACKMETA = metano ; then
22
echo "meta backend not available, test skipped"
28
mkdir -p $TESTDIR $DBDIR1 $DBDIR2
30
echo "Starting slapd on TCP/IP port $PORT1..."
31
. $CONFFILTER $BACKEND $MONITORDB < $METACONF1 > $CONF1
32
$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
34
if test $WAIT != 0 ; then
42
echo "Using ldapsearch to check that slapd is running..."
43
for i in 0 1 2 3 4 5; do
44
$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
45
'objectclass=*' > /dev/null 2>&1
47
if test $RC = 0 ; then
50
echo "Waiting 5 seconds for slapd to start..."
53
if test $RC != 0 ; then
54
echo "ldapsearch failed ($RC)!"
55
test $KILLSERVERS != no && kill -HUP $KILLPIDS
59
echo "Using ldapadd to populate the database..."
60
$LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
61
$LDIFORDERED > $TESTOUT 2>&1
63
if test $RC != 0 ; then
64
echo "ldapadd failed ($RC)!"
65
test $KILLSERVERS != no && kill -HUP $KILLPIDS
69
echo "Starting slapd on TCP/IP port $PORT2..."
70
. $CONFFILTER $BACKEND $MONITORDB < $METACONF2 > $CONF2
71
$SLAPD -f $CONF2 -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
73
if test $WAIT != 0 ; then
77
KILLPIDS="$KILLPIDS $PID"
81
echo "Using ldapsearch to check that slapd is running..."
82
for i in 0 1 2 3 4 5; do
83
$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \
84
'objectclass=*' > /dev/null 2>&1
86
if test $RC = 0 ; then
89
echo "Waiting 5 seconds for slapd to start..."
92
if test $RC != 0 ; then
93
echo "ldapsearch failed ($RC)!"
94
test $KILLSERVERS != no && kill -HUP $KILLPIDS
98
echo "Using ldapadd to populate the database..."
99
$LDAPADD -D "$METAMANAGERDN" -h $LOCALHOST -p $PORT2 -w $PASSWD < \
100
$LDIFMETA >> $TESTOUT 2>&1
102
if test $RC != 0 ; then
103
echo "ldapadd failed ($RC)!"
104
test $KILLSERVERS != no && kill -HUP $KILLPIDS
108
echo "Starting slapd on TCP/IP port $PORT3..."
109
. $CONFFILTER $BACKEND $MONITORDB < $METACONF > $CONF3
110
$SLAPD -f $CONF3 -h $URI3 -d $LVL $TIMING > $LOG3 2>&1 &
112
if test $WAIT != 0 ; then
116
KILLPIDS="$KILLPIDS $PID"
120
echo "Using ldapsearch to check that slapd is running..."
121
for i in 0 1 2 3 4 5; do
122
$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT3 \
123
'objectclass=*' > /dev/null 2>&1
125
if test $RC = 0 ; then
128
echo "Waiting 5 seconds for slapd to start..."
131
if test $RC != 0 ; then
132
echo "ldapsearch failed ($RC)!"
133
test $KILLSERVERS != no && kill -HUP $KILLPIDS
137
cat /dev/null > $SEARCHOUT
139
BASEDN="o=Example,c=US"
140
echo "Searching base=\"$BASEDN\"..."
141
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
142
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
144
#if test $RC != 0 ; then
145
# echo "Search failed ($RC)!"
146
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
153
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
154
test $KILLSERVERS != no && kill -HUP $KILLPIDS
158
echo "Search failed ($RC)!"
159
test $KILLSERVERS != no && kill -HUP $KILLPIDS
164
# ITS#4195: spurious matchedDN when the search scopes the main target,
165
# and the searchBase is not present, so that target returns noSuchObject
166
BASEDN="ou=Meta,o=Example,c=US"
167
echo "Searching base=\"$BASEDN\"..."
168
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
169
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
171
#if test $RC != 0 ; then
172
# echo "Search failed ($RC)!"
173
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
180
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
181
test $KILLSERVERS != no && kill -HUP $KILLPIDS
185
echo "Search failed ($RC)!"
186
test $KILLSERVERS != no && kill -HUP $KILLPIDS
192
# Do some modifications
195
BASEDN="o=Example,c=US"
196
echo "Modifying database \"$BASEDN\"..."
197
$LDAPMODIFY -v -D "cn=Manager,$BASEDN" -h $LOCALHOST -p $PORT3 -w $PASSWD \
198
-M >> $TESTOUT 2>&1 << EOMODS
199
# These operations (updates with objectClass mapping) triggered ITS#3499
200
dn: cn=Added Group,ou=Groups,$BASEDN
202
objectClass: groupOfNames
203
objectClass: uidObject
205
member: cn=Added Group,ou=Groups,$BASEDN
208
dn: cn=Another Added Group,ou=Groups,$BASEDN
210
objectClass: groupOfNames
211
cn: Another Added Group
212
member: cn=Added Group,ou=Groups,$BASEDN
213
member: cn=Another Added Group,ou=Groups,$BASEDN
215
dn: cn=Another Added Group,ou=Groups,$BASEDN
218
objectClass: uidObject
224
dn: cn=Added Group,ou=Groups,$BASEDN
227
objectClass: uidObject
235
description: added to "ou=Meta,$BASEDN"
238
dn: ou=Who's going to handle this?,$BASEDN
240
objectClass: organizationalUnit
241
ou: Who's going to handle this?
243
description: will be deleted
245
dn: ou=Same as above,$BASEDN
247
objectClass: organizationalUnit
249
description: added right after "Who's going to handle this?"
250
description: will be preserved
252
dn: ou=Who's going to handle this?,$BASEDN
255
dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
257
objectClass: organizationalUnit
258
ou: Who's going to handle this?
260
description: will be deleted
262
dn: ou=Same as above,ou=Meta,$BASEDN
264
objectClass: organizationalUnit
266
description: added right after "Who's going to handle this?"
267
description: will be preserved
269
dn: cn=Added User,ou=Same as above,ou=Meta,$BASEDN
271
objectClass: inetOrgPerson
276
dn: ou=Who's going to handle this?,ou=Meta,$BASEDN
281
#if test $RC != 0 ; then
282
# echo "Modify failed ($RC)!"
283
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
290
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
291
test $KILLSERVERS != no && kill -HUP $KILLPIDS
295
echo "Modify failed ($RC)!"
296
test $KILLSERVERS != no && kill -HUP $KILLPIDS
301
echo "Searching base=\"$BASEDN\"..."
302
echo "# searching base=\"$BASEDN\"..." >> $SEARCHOUT
303
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" >> $SEARCHOUT 2>&1
305
#if test $RC != 0 ; then
306
# echo "Search failed ($RC)!"
307
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
314
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
315
test $KILLSERVERS != no && kill -HUP $KILLPIDS
319
echo "Search failed ($RC)!"
320
test $KILLSERVERS != no && kill -HUP $KILLPIDS
325
BASEDN="o=Example,c=US"
326
echo " base=\"$BASEDN\"..."
327
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
328
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" -M "$FILTER" '*' ref \
331
#if test $RC != 0 ; then
332
# echo "Search failed ($RC)!"
333
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
340
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
341
test $KILLSERVERS != no && kill -HUP $KILLPIDS
345
echo "Search failed ($RC)!"
346
test $KILLSERVERS != no && kill -HUP $KILLPIDS
351
BASEDN="o=Example,c=US"
352
FILTER="(seeAlso=cn=all staff,ou=Groups,$BASEDN)"
353
echo "Searching filter=\"$FILTER\""
354
echo " attrs=\"seeAlso\""
355
echo " base=\"$BASEDN\"..."
356
echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
357
echo "# attrs=\"seeAlso\"" >> $SEARCHOUT
358
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
359
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" seeAlso \
362
#if test $RC != 0 ; then
363
# echo "Search failed ($RC)!"
364
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
371
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
372
test $KILLSERVERS != no && kill -HUP $KILLPIDS
376
echo "Search failed ($RC)!"
377
test $KILLSERVERS != no && kill -HUP $KILLPIDS
382
FILTER="(uid=example)"
383
echo "Searching filter=\"$FILTER\""
384
echo " attrs=\"uid\""
385
echo " base=\"$BASEDN\"..."
386
echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
387
echo "# attrs=\"uid\"" >> $SEARCHOUT
388
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
389
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" uid \
392
#if test $RC != 0 ; then
393
# echo "Search failed ($RC)!"
394
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
401
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
402
test $KILLSERVERS != no && kill -HUP $KILLPIDS
406
echo "Search failed ($RC)!"
407
test $KILLSERVERS != no && kill -HUP $KILLPIDS
412
FILTER="(member=cn=Another Added Group,ou=Groups,$BASEDN)"
413
echo "Searching filter=\"$FILTER\""
414
echo " attrs=\"member\""
415
echo " base=\"$BASEDN\"..."
416
echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
417
echo "# attrs=\"member\"" >> $SEARCHOUT
418
echo "# base=\"$BASEDN\"..." >> $SEARCHOUT
419
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -b "$BASEDN" "$FILTER" member \
422
#if test $RC != 0 ; then
423
# echo "Search failed ($RC)!"
424
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
431
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
432
test $KILLSERVERS != no && kill -HUP $KILLPIDS
436
echo "Search failed ($RC)!"
437
test $KILLSERVERS != no && kill -HUP $KILLPIDS
442
echo "Waiting 10 seconds for cached connections to timeout..."
445
echo "Searching with a timed out connection..."
446
echo "# searching filter=\"$FILTER\"" >> $SEARCHOUT
447
echo "# attrs=\"member\"" >> $SEARCHOUT
448
echo "# base=\"$BASEDN\"" >> $SEARCHOUT
449
echo "# with a timed out connection..." >> $SEARCHOUT
450
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
451
-b "$BASEDN" "$FILTER" member \
454
#if test $RC != 0 ; then
455
# echo "Search failed ($RC)!"
456
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
463
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
464
test $KILLSERVERS != no && kill -HUP $KILLPIDS
468
echo "Search failed ($RC)!"
469
test $KILLSERVERS != no && kill -HUP $KILLPIDS
474
# NOTE: cannot send to $SEARCHOUT because the returned entries
475
# are not predictable...
476
echo "Checking server-enforced size limit..."
477
echo "# Checking server-enforced size limit..." >> $SEARCHOUT
478
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 \
479
-D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
480
-b "$BASEDN" "(objectClass=*)" 1.1 \
485
echo "Search should have failed ($RC)!"
486
test $KILLSERVERS != no && kill -HUP $KILLPIDS
492
echo "Search failed ($RC)!"
493
test $KILLSERVERS != no && kill -HUP $KILLPIDS
498
# NOTE: cannot send to $SEARCHOUT because the returned entries
499
# are not predictable...
500
echo "Checking client-requested size limit..."
501
echo "# Checking client-requested size limit..." >> $SEARCHOUT
502
$LDAPSEARCH -S "" -h $LOCALHOST -p $PORT3 \
503
-D "cn=Bjorn Jensen,ou=Information Technology Division,ou=People,$BASEDN" -w bjorn \
504
-b "$BASEDN" -z 2 "(objectClass=*)" 1.1 \
509
echo "Search should have failed ($RC)!"
510
test $KILLSERVERS != no && kill -HUP $KILLPIDS
516
echo "Search failed ($RC)!"
517
test $KILLSERVERS != no && kill -HUP $KILLPIDS
522
echo "Filtering ldapsearch results..."
523
. $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
524
echo "Filtering original ldif used to create database..."
525
. $LDIFFILTER < $METAOUT > $LDIFFLT
526
echo "Comparing filter output..."
527
$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
529
if test $? != 0 ; then
530
echo "comparison failed - meta search/modification didn't succeed"
531
test $KILLSERVERS != no && kill -HUP $KILLPIDS
535
BASEDN="o=Example,c=US"
536
echo "Changing password to database \"$BASEDN\"..."
537
$LDAPPASSWD -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
538
-s $PASSWD "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
541
#if test $RC != 0 ; then
542
# echo "Passwd ExOp failed ($RC)!"
543
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
550
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
551
test $KILLSERVERS != no && kill -HUP $KILLPIDS
555
echo "Passwd ExOp failed ($RC)!"
556
test $KILLSERVERS != no && kill -HUP $KILLPIDS
561
echo "Binding with newly changed password to database \"$BASEDN\"..."
562
$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
563
-D "cn=Ursula Hampster,ou=Alumni Association,ou=People,$BASEDN" \
564
-w $PASSWD >> $TESTOUT 2>&1
566
#if test $RC != 0 ; then
567
# echo "WhoAmI failed ($RC)!"
568
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
575
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
578
echo "WhoAmI failed ($RC)!"
579
test $KILLSERVERS != no && kill -HUP $KILLPIDS
584
echo "Binding as newly added user to database \"$BASEDN\"..."
585
$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
586
-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
587
-w $PASSWD >> $TESTOUT 2>&1
589
#if test $RC != 0 ; then
590
# echo "WhoAmI failed ($RC)!"
591
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
598
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
601
echo "WhoAmI failed ($RC)!"
602
test $KILLSERVERS != no && kill -HUP $KILLPIDS
607
echo "Changing password to database \"$BASEDN\"..."
608
$LDAPPASSWD -h $LOCALHOST -p $PORT3 -D "cn=Manager,$BASEDN" -w $PASSWD \
609
-s meta "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
612
#if test $RC != 0 ; then
613
# echo "Passwd ExOp failed ($RC)!"
614
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
621
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
622
test $KILLSERVERS != no && kill -HUP $KILLPIDS
626
echo "Passwd ExOp failed ($RC)!"
627
test $KILLSERVERS != no && kill -HUP $KILLPIDS
632
echo "Binding with newly changed password to database \"$BASEDN\"..."
633
$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
634
-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
635
-w meta >> $TESTOUT 2>&1
637
#if test $RC != 0 ; then
638
# echo "WhoAmI failed ($RC)!"
639
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
646
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
649
echo "WhoAmI failed ($RC)!"
650
test $KILLSERVERS != no && kill -HUP $KILLPIDS
655
echo "Binding with incorrect password to database \"$BASEDN\"..."
656
$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
657
-D "cn=Added User,ou=Same as above,ou=Meta,$BASEDN" \
658
-w bogus >> $TESTOUT 2>&1
660
#if test $RC != 0 ; then
661
# echo "WhoAmI failed ($RC)!"
662
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
667
echo "WhoAmI should have failed ($RC)!"
668
test $KILLSERVERS != no && kill -HUP $KILLPIDS
672
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
678
echo "Binding with non-existing user to database \"$BASEDN\"..."
679
$LDAPWHOAMI -h $LOCALHOST -p $PORT3 \
680
-D "cn=Non-existing User,ou=Same as above,ou=Meta,$BASEDN" \
681
-w bogus >> $TESTOUT 2>&1
683
#if test $RC != 0 ; then
684
# echo "WhoAmI failed ($RC)!"
685
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
690
echo "WhoAmI should have failed ($RC)!"
691
test $KILLSERVERS != no && kill -HUP $KILLPIDS
695
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
701
echo "Comparing to database \"$BASEDN\"..."
702
$LDAPCOMPARE -h $LOCALHOST -p $PORT3 \
703
"cn=Another Added Group,ou=Groups,$BASEDN" \
704
"member:cn=Added Group,ou=Groups,$BASEDN" >> $TESTOUT 2>&1
706
#if test $RC != 6 ; then
707
# echo "Compare failed ($RC)!"
708
# test $KILLSERVERS != no && kill -HUP $KILLPIDS
715
echo "### Hit LDAP_BUSY problem; you may want to re-run the test"
718
echo "Compare failed ($RC)!"
719
test $KILLSERVERS != no && kill -HUP $KILLPIDS
724
test $KILLSERVERS != no && kill -HUP $KILLPIDS
726
echo ">>>>> Test succeeded"
728
test $KILLSERVERS != no && wait