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