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