Home | History | Annotate | Line # | Download | only in scripts
test032-chain revision 1.1.1.3.24.1
      1           1.1  lukem #! /bin/sh
      2  1.1.1.3.24.1    tls # $OpenLDAP$
      3           1.1  lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4           1.1  lukem ##
      5  1.1.1.3.24.1    tls ## 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 if test $BACKLDAP = "ldapno" ; then 
     20           1.1  lukem 	echo "LDAP backend not available, test skipped"
     21           1.1  lukem 	exit 0
     22           1.1  lukem fi 
     23           1.1  lukem 
     24           1.1  lukem rm -rf $TESTDIR
     25           1.1  lukem 
     26           1.1  lukem mkdir -p $TESTDIR $DBDIR1 $DBDIR2
     27           1.1  lukem 
     28           1.1  lukem echo "Running slapadd to build slapd database..."
     29           1.1  lukem . $CONFFILTER $BACKEND $MONITORDB < $CHAINCONF1 > $ADDCONF
     30           1.1  lukem . $CONFFILTER < $LDIFCHAIN1 > $SEARCHOUT
     31           1.1  lukem $SLAPADD -f $ADDCONF -l $SEARCHOUT
     32           1.1  lukem RC=$?
     33           1.1  lukem if test $RC != 0 ; then
     34           1.1  lukem 	echo "slapadd 1 failed ($RC)!"
     35           1.1  lukem 	exit $RC
     36           1.1  lukem fi
     37           1.1  lukem 
     38           1.1  lukem . $CONFFILTER $BACKEND $MONITORDB < $CHAINCONF2 > $ADDCONF
     39           1.1  lukem . $CONFFILTER < $LDIFCHAIN2 > $SEARCHOUT
     40           1.1  lukem $SLAPADD -f $ADDCONF -l $SEARCHOUT
     41           1.1  lukem RC=$?
     42           1.1  lukem if test $RC != 0 ; then
     43           1.1  lukem 	echo "slapadd 2 failed ($RC)!"
     44           1.1  lukem 	exit $RC
     45           1.1  lukem fi
     46           1.1  lukem 
     47           1.1  lukem echo "Starting first slapd on TCP/IP port $PORT1..."
     48           1.1  lukem . $CONFFILTER $BACKEND $MONITORDB < $CHAINCONF1 > $CONF1
     49           1.1  lukem $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
     50           1.1  lukem PID1=$!
     51           1.1  lukem if test $WAIT != 0 ; then
     52           1.1  lukem     echo PID $PID1
     53           1.1  lukem     read foo
     54           1.1  lukem fi
     55           1.1  lukem KILLPIDS="$PID1"
     56           1.1  lukem 
     57           1.1  lukem echo "Starting second slapd on TCP/IP port $PORT2..."
     58           1.1  lukem . $CONFFILTER $BACKEND $MONITORDB < $CHAINCONF2 > $CONF2
     59           1.1  lukem $SLAPD -f $CONF2 -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
     60           1.1  lukem PID2=$!
     61           1.1  lukem if test $WAIT != 0 ; then
     62           1.1  lukem     echo PID $PID2
     63           1.1  lukem     read foo
     64           1.1  lukem fi
     65           1.1  lukem 
     66           1.1  lukem KILLPIDS="$KILLPIDS $PID2"
     67           1.1  lukem 
     68           1.1  lukem sleep 1
     69           1.1  lukem 
     70           1.1  lukem echo "Using ldapsearch to check that first slapd is running..."
     71           1.1  lukem for i in 0 1 2 3 4 5; do
     72           1.1  lukem 	$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
     73           1.1  lukem 		'objectclass=*' > /dev/null 2>&1
     74           1.1  lukem 	RC=$?
     75           1.1  lukem 	if test $RC = 0 ; then
     76           1.1  lukem 		break
     77           1.1  lukem 	fi
     78           1.1  lukem 	echo "Waiting 5 seconds for slapd to start..."
     79           1.1  lukem 	sleep 5
     80           1.1  lukem done
     81           1.1  lukem 
     82           1.1  lukem if test $RC != 0 ; then
     83           1.1  lukem 	echo "ldapsearch failed ($RC)!"
     84           1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     85           1.1  lukem 	exit $RC
     86           1.1  lukem fi
     87           1.1  lukem 
     88           1.1  lukem echo "Using ldapsearch to check that second slapd is running..."
     89           1.1  lukem for i in 0 1 2 3 4 5; do
     90           1.1  lukem 	$LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \
     91           1.1  lukem 		'objectclass=*' > /dev/null 2>&1
     92           1.1  lukem 	RC=$?
     93           1.1  lukem 	if test $RC = 0 ; then
     94           1.1  lukem 		break
     95           1.1  lukem 	fi
     96           1.1  lukem 	echo "Waiting 5 seconds for slapd to start..."
     97           1.1  lukem 	sleep 5
     98           1.1  lukem done
     99           1.1  lukem 
    100           1.1  lukem if test $RC != 0 ; then
    101           1.1  lukem 	echo "ldapsearch failed ($RC)!"
    102           1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    103           1.1  lukem 	exit $RC
    104           1.1  lukem fi
    105           1.1  lukem 
    106           1.1  lukem for P in $PORT1 $PORT2 ; do
    107           1.1  lukem 	echo "Testing ldapsearch as anonymous for \"$BASEDN\" on port $P..."
    108           1.1  lukem 	$LDAPSEARCH -h $LOCALHOST -p $P -b "$BASEDN" -S "" \
    109           1.1  lukem 		 > $SEARCHOUT 2>&1
    110           1.1  lukem 
    111           1.1  lukem 	RC=$?
    112           1.1  lukem 	if test $RC != 0 ; then
    113           1.1  lukem 		echo "ldapsearch failed ($RC)!"
    114           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    115           1.1  lukem 		exit $RC
    116           1.1  lukem 	fi
    117           1.1  lukem 
    118           1.1  lukem 	echo "Filtering ldapsearch results..."
    119       1.1.1.3   adam 	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    120           1.1  lukem 	echo "Filtering original ldif used to create database..."
    121       1.1.1.3   adam 	$LDIFFILTER < $CHAINOUT > $LDIFFLT
    122           1.1  lukem 	echo "Comparing filter output..."
    123           1.1  lukem 	$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    124           1.1  lukem 	
    125           1.1  lukem 	if test $? != 0 ; then
    126           1.1  lukem 		echo "comparison failed - chained search didn't succeed"
    127           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    128           1.1  lukem 		exit 1
    129           1.1  lukem 	fi
    130           1.1  lukem 
    131       1.1.1.2  lukem 	echo "Reading the referral entry \"ou=Other,$BASEDN\" as anonymous on port $P..."
    132           1.1  lukem 	$LDAPSEARCH -h $LOCALHOST -p $P -b "ou=Other,$BASEDN" -S "" \
    133           1.1  lukem 		 > $SEARCHOUT 2>&1
    134           1.1  lukem 
    135           1.1  lukem 	RC=$?
    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 	echo "Filtering ldapsearch results..."
    143       1.1.1.3   adam 	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    144           1.1  lukem 	echo "Filtering original ldif used to create database..."
    145       1.1.1.3   adam 	$LDIFFILTER < $CHAINREFOUT > $LDIFFLT
    146           1.1  lukem 	echo "Comparing filter output..."
    147           1.1  lukem 	$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    148           1.1  lukem 		
    149           1.1  lukem 	if test $? != 0 ; then
    150           1.1  lukem 		echo "comparison failed - chained search didn't succeed"
    151           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    152           1.1  lukem 		exit 1
    153           1.1  lukem 	fi
    154           1.1  lukem 
    155           1.1  lukem 	DN="cn=Mark Elliot,ou=Alumni Association,ou=People,$BASEDN"
    156           1.1  lukem 	echo "Comparing \"$DN\" on port $P..."
    157           1.1  lukem 	$LDAPCOMPARE -h $LOCALHOST -p $P "$DN" "cn:Mark Elliot" \
    158           1.1  lukem 		 > $TESTOUT 2>&1
    159           1.1  lukem 
    160           1.1  lukem 	RC=$?
    161       1.1.1.3   adam 	if test $RC != 6 && test $RC,$BACKEND != 5,null ; then
    162           1.1  lukem 		echo "ldapcompare failed ($RC)!"
    163           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    164       1.1.1.3   adam 		exit 1
    165           1.1  lukem 	fi
    166           1.1  lukem 
    167           1.1  lukem 	DN="ou=Other,$BASEDN"
    168           1.1  lukem 	echo "Comparing \"$DN\" on port $P with manageDSAit control..."
    169           1.1  lukem 	$LDAPCOMPARE -h $LOCALHOST -p $P -M "$DN" "ou:Other" \
    170           1.1  lukem 		 > $TESTOUT 2>&1
    171           1.1  lukem 
    172           1.1  lukem 	RC=$?
    173       1.1.1.3   adam 	if test $RC != 6 && test $RC,$BACKEND != 5,null ; then
    174           1.1  lukem 		echo "ldapcompare failed ($RC)!"
    175           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    176       1.1.1.3   adam 		exit 1
    177           1.1  lukem 	fi
    178           1.1  lukem done
    179           1.1  lukem 
    180           1.1  lukem #
    181           1.1  lukem # Testing writes to first server
    182           1.1  lukem #
    183           1.1  lukem echo "Writing to first server with scope on second server..."
    184           1.1  lukem $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
    185           1.1  lukem 	$TESTOUT 2>&1 << EOMODS
    186           1.1  lukem dn: cn=New Group,ou=Groups,dc=example,dc=com
    187           1.1  lukem changetype: add
    188           1.1  lukem objectClass: groupOfNames
    189           1.1  lukem cn: New Group
    190           1.1  lukem member:
    191           1.1  lukem 
    192           1.1  lukem dn: cn=New Group,ou=Groups,dc=example,dc=com
    193           1.1  lukem changetype: modify
    194           1.1  lukem add: description
    195           1.1  lukem description: testing chain overlay writes...
    196           1.1  lukem -
    197           1.1  lukem replace: member
    198           1.1  lukem member: cn=New Group,ou=Groups,dc=example,dc=com
    199           1.1  lukem member: cn=Manager,dc=example,dc=com
    200           1.1  lukem -
    201           1.1  lukem add: owner
    202           1.1  lukem owner: cn=Manager,dc=example,dc=com
    203           1.1  lukem -
    204           1.1  lukem 
    205           1.1  lukem dn: cn=New Group,ou=Groups,dc=example,dc=com
    206           1.1  lukem changetype: modrdn
    207           1.1  lukem newrdn: cn=Renamed Group
    208           1.1  lukem deleteoldrdn: 1
    209           1.1  lukem 
    210           1.1  lukem dn: cn=All Staff,ou=Groups,dc=example,dc=com
    211           1.1  lukem changetype: delete
    212           1.1  lukem EOMODS
    213           1.1  lukem 
    214           1.1  lukem RC=$?
    215           1.1  lukem if test $RC != 0 ; then
    216           1.1  lukem 	echo "ldapmodify failed ($RC)!"
    217           1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    218           1.1  lukem 	exit $RC
    219           1.1  lukem fi
    220           1.1  lukem 
    221           1.1  lukem #
    222           1.1  lukem # Testing writes to second server
    223           1.1  lukem #
    224           1.1  lukem echo "Writing to second server with scope on first server..."
    225           1.1  lukem $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT2 -w $PASSWD > \
    226           1.1  lukem 	$TESTOUT 2>&1 << EOMODS
    227           1.1  lukem dn: cn=New User,ou=People,dc=example,dc=com
    228           1.1  lukem changetype: add
    229           1.1  lukem objectClass: person
    230           1.1  lukem cn: New User
    231           1.1  lukem sn: User
    232           1.1  lukem seeAlso: cn=New Group,ou=Groups,dc=example,dc=com
    233           1.1  lukem 
    234           1.1  lukem dn: cn=New User,ou=People,dc=example,dc=com
    235           1.1  lukem changetype: modify
    236           1.1  lukem add: description
    237           1.1  lukem description: testing chain overlay writes...
    238           1.1  lukem -
    239           1.1  lukem replace: seeAlso
    240           1.1  lukem seeAlso: cn=Renamed Group,ou=Groups,dc=example,dc=com
    241           1.1  lukem -
    242           1.1  lukem 
    243           1.1  lukem dn: cn=New User,ou=People,dc=example,dc=com
    244           1.1  lukem changetype: modrdn
    245           1.1  lukem newrdn: cn=Renamed User
    246           1.1  lukem deleteoldrdn: 1
    247           1.1  lukem 
    248           1.1  lukem dn: cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com
    249           1.1  lukem changetype: delete
    250           1.1  lukem EOMODS
    251           1.1  lukem 
    252           1.1  lukem RC=$?
    253           1.1  lukem if test $RC != 0 ; then
    254           1.1  lukem 	echo "ldapmodify failed ($RC)!"
    255           1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    256           1.1  lukem 	exit $RC
    257           1.1  lukem fi
    258           1.1  lukem 
    259           1.1  lukem for P in $PORT1 $PORT2 ; do
    260           1.1  lukem 	echo "Testing ldapsearch as anonymous for \"$BASEDN\" on port $P..."
    261           1.1  lukem 	$LDAPSEARCH -h $LOCALHOST -p $P -b "$BASEDN" -S "" \
    262           1.1  lukem 		 > $SEARCHOUT 2>&1
    263           1.1  lukem 
    264           1.1  lukem 	RC=$?
    265           1.1  lukem 	if test $RC != 0 ; then
    266           1.1  lukem 		echo "ldapsearch failed ($RC)!"
    267           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    268           1.1  lukem 		exit $RC
    269           1.1  lukem 	fi
    270           1.1  lukem 
    271           1.1  lukem 	echo "Filtering ldapsearch results..."
    272       1.1.1.3   adam 	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    273           1.1  lukem 	echo "Filtering original ldif used to create database..."
    274       1.1.1.3   adam 	$LDIFFILTER < $CHAINMODOUT > $LDIFFLT
    275           1.1  lukem 	echo "Comparing filter output..."
    276           1.1  lukem 	$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    277           1.1  lukem 	
    278           1.1  lukem 	if test $? != 0 ; then
    279           1.1  lukem 		echo "comparison failed - chained search didn't succeed"
    280           1.1  lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    281           1.1  lukem 		exit 1
    282           1.1  lukem 	fi
    283           1.1  lukem done
    284           1.1  lukem 
    285           1.1  lukem NEWPW=newsecret
    286           1.1  lukem echo "Using ldappasswd on second server with scope on first server..."
    287           1.1  lukem $LDAPPASSWD -h $LOCALHOST -p $PORT2 \
    288           1.1  lukem 	-w secret -s $NEWPW \
    289           1.1  lukem 	-D "$MANAGERDN" "$BJORNSDN" >> $TESTOUT 2>&1
    290           1.1  lukem RC=$?
    291           1.1  lukem if test $RC != 0 ; then
    292           1.1  lukem 	echo "ldappasswd failed ($RC)!"
    293           1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    294           1.1  lukem 	exit $RC
    295           1.1  lukem fi
    296           1.1  lukem 
    297           1.1  lukem echo "Binding with newly changed password on first server..."
    298           1.1  lukem $LDAPWHOAMI -h $LOCALHOST -p $PORT1 \
    299           1.1  lukem 	-D "$BJORNSDN" -w $NEWPW
    300           1.1  lukem RC=$?
    301           1.1  lukem if test $RC != 0 ; then
    302           1.1  lukem 	echo "ldapwhoami failed ($RC)!"
    303           1.1  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    304           1.1  lukem 	exit $RC
    305           1.1  lukem fi
    306           1.1  lukem 
    307       1.1.1.2  lukem # ITS#57??
    308       1.1.1.2  lukem $LDAPADD -h $LOCALHOST -p $PORT1 \
    309       1.1.1.2  lukem 	-D "$MANAGERDN" -w secret \
    310       1.1.1.2  lukem 	>> $TESTOUT 2>&1 \
    311       1.1.1.2  lukem 	<< EOMODS
    312       1.1.1.2  lukem dn: ou=Can't Contact,dc=example,dc=com
    313       1.1.1.2  lukem changetype: add
    314       1.1.1.2  lukem objectclass: referral
    315       1.1.1.2  lukem objectclass: extensibleobject
    316       1.1.1.2  lukem ou: Can't Contact
    317       1.1.1.2  lukem # invalid URI to test broken connectivity handling (search only)
    318       1.1.1.2  lukem ref: ${URI3}ou=Can't%20Contact,dc=example,dc=com
    319       1.1.1.2  lukem EOMODS
    320       1.1.1.2  lukem 
    321       1.1.1.2  lukem echo "Reading the referral entry \"ou=Can't Contact,$BASEDN\" as anonymous on port $PORT1..."
    322       1.1.1.2  lukem $LDAPSEARCH -h $LOCALHOST -p $PORT1 -b "$BASEDN" -S "" "(cn=Can't Contact)" \
    323       1.1.1.2  lukem 	 > $SEARCHOUT 2>&1
    324       1.1.1.2  lukem 
    325       1.1.1.2  lukem RC=$?
    326       1.1.1.2  lukem if test $RC != 0 ; then
    327       1.1.1.2  lukem 	echo "ldapsearch failed ($RC)!"
    328       1.1.1.2  lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    329       1.1.1.2  lukem 	exit $RC
    330       1.1.1.2  lukem fi
    331       1.1.1.2  lukem 
    332           1.1  lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
    333           1.1  lukem 
    334           1.1  lukem echo ">>>>> Test succeeded"
    335           1.1  lukem 
    336           1.1  lukem test $KILLSERVERS != no && wait
    337           1.1  lukem 
    338           1.1  lukem exit 0
    339