Home | History | Annotate | Line # | Download | only in scripts
      1 #! /bin/sh
      2 # $OpenLDAP$
      3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4 ##
      5 ## Copyright 1998-2024 The OpenLDAP Foundation.
      6 ## All rights reserved.
      7 ##
      8 ## Redistribution and use in source and binary forms, with or without
      9 ## modification, are permitted only as authorized by the OpenLDAP
     10 ## Public License.
     11 ##
     12 ## A copy of this license is available in the file LICENSE in the
     13 ## top-level directory of the distribution or, alternatively, at
     14 ## <http://www.OpenLDAP.org/license.html>.
     15 
     16 echo "running defines.sh"
     17 . $SRCDIR/scripts/defines.sh
     18 
     19 if test $BACKSQL = "sqlno" ; then 
     20 	echo "SQL backend not available, test skipped"
     21 	exit 0
     22 fi 
     23 
     24 if test $RDBMS = "rdbmsno" ; then
     25 	echo "SQL test not requested, test skipped"
     26 	exit 0
     27 fi
     28 
     29 if test "${RDBMSWRITE}" != "yes"; then
     30 	echo "write test disabled for ${RDBMS}; set SLAPD_USE_SQLWRITE=yes to enable"
     31 	exit 0
     32 fi
     33 
     34 mkdir -p $TESTDIR $DBDIR2A
     35 
     36 echo "Starting slapd on TCP/IP port $PORT1..."
     37 . $CONFFILTER $BACKEND < $SQLSRPROVIDERCONF > $CONF1
     38 $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     39 PID=$!
     40 if test $WAIT != 0 ; then
     41     echo PID $PID
     42     read foo
     43 fi
     44 KILLPIDS="$PID"
     45 
     46 echo "Testing SQL backend write operations..."
     47 for i in 0 1 2 3 4 5; do
     48 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
     49 		'objectclass=*' > /dev/null 2>&1
     50 	RC=$?
     51 	if test $RC = 0 ; then
     52 		break
     53 	fi
     54 	echo "Waiting 5 seconds for slapd to start..."
     55 	sleep 5
     56 done
     57 
     58 if test $RC != 0 ; then
     59 	echo "ldapsearch failed ($RC)!"
     60 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     61 	exit $RC
     62 fi
     63 
     64 echo "Starting consumer slapd on TCP/IP port $PORT2..."
     65 . $CONFFILTER $BACKEND < $R1SRCONSUMERCONF > $CONF2
     66 $SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
     67 CONSUMERPID=$!
     68 if test $WAIT != 0 ; then
     69     echo CONSUMERPID $CONSUMERPID
     70     read foo
     71 fi
     72 KILLPIDS="$KILLPIDS $CONSUMERPID"
     73 
     74 echo "Using ldapsearch to check that consumer slapd is running..."
     75 for i in 0 1 2 3 4 5; do
     76 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
     77 		'objectclass=*' > /dev/null 2>&1
     78 	RC=$?
     79 	if test $RC = 0 ; then
     80 		break
     81 	fi
     82 	echo "Waiting 5 seconds for slapd to start..."
     83 	sleep 5
     84 done
     85 
     86 if test $RC != 0 ; then
     87 	echo "ldapsearch failed ($RC)!"
     88 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     89 	exit $RC
     90 fi
     91 
     92 cat /dev/null > $SEARCHOUT
     93 
     94 echo "Using ldapsearch to retrieve all the entries from the provider..."
     95 echo "# Using ldapsearch to retrieve all the entries from the provider..." \
     96 	>> $SEARCHOUT
     97 $LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
     98 	-D "$MANAGERDN" -w $PASSWD \
     99 	 "(!(objectClass=referral))" >> $SEARCHOUT 2>&1
    100 
    101 RC=$?
    102 if test $RC != 0 ; then
    103 	echo "ldapsearch failed ($RC)!"
    104 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    105 	exit $RC
    106 fi
    107 
    108 cat /dev/null > $SEARCHOUT2
    109 
    110 echo "Using ldapsearch to retrieve all the entries from the consumer..."
    111 echo "# Using ldapsearch to retrieve all the entries from the consumer..." \
    112 	>> $SEARCHOUT2
    113 $LDAPSEARCH -S "" -H $URI2 -b "$BASEDN" \
    114 	-D "$UPDATEDN" -w $PASSWD \
    115 	 "(objectClass=*)" >> $SEARCHOUT2 2>&1
    116 
    117 RC=$?
    118 if test $RC != 0 ; then
    119 	echo "ldapsearch failed ($RC)!"
    120 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    121 	exit $RC
    122 fi
    123 
    124 echo "Filtering ldapsearch results from provider..."
    125 $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    126 echo "Filtering ldapsearch results from consumer..."
    127 $LDIFFILTER < $SEARCHOUT2 > $SEARCHFLT2
    128 echo "Comparing filter output..."
    129 $CMP $SEARCHFLT $SEARCHFLT2 > $CMPOUT
    130 
    131 if test $? != 0 ; then
    132 	echo "Comparison failed"
    133 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    134 	exit 1
    135 fi
    136 
    137 cat /dev/null > $SEARCHOUT
    138 
    139 echo "Using ldapsearch to retrieve all the entries..."
    140 echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    141 $LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    142 	 "objectClass=*" >> $SEARCHOUT 2>&1
    143 
    144 RC=$?
    145 if test $RC != 0 ; then
    146 	echo "ldapsearch failed ($RC)!"
    147 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    148 	exit $RC
    149 fi
    150 
    151 case ${RDBMS} in
    152 	# list here the RDBMSes whose mapping allows writes
    153 pgsql|ibmdb2)
    154 	MANAGERDN="cn=Manager,${BASEDN}"
    155 	echo "Testing add..."
    156 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    157 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    158 version: 1
    159 
    160 # Adding an organization...
    161 dn: o=An Org,${BASEDN}
    162 changetype: add
    163 objectClass: organization
    164 o: An Org
    165 
    166 # Adding an organization with an "auxiliary" objectClass..
    167 dn: dc=subnet,${BASEDN}
    168 changetype: add
    169 objectClass: organization
    170 objectClass: dcObject
    171 o: SubNet
    172 dc: subnet
    173 
    174 # Adding another organization with an "auxiliary" objectClass..
    175 dn: dc=subnet2,${BASEDN}
    176 changetype: add
    177 objectClass: organization
    178 objectClass: dcObject
    179 o: SubNet 2
    180 dc: subnet2
    181 
    182 # Adding a person...
    183 dn: cn=Lev Tolstoij,${BASEDN}
    184 changetype: add
    185 objectClass: inetOrgPerson
    186 cn: Lev Tolstoij
    187 sn: Tolstoij
    188 givenName: Lev
    189 telephoneNumber: +39 02 XXXX YYYY
    190 telephoneNumber: +39 02 XXXX ZZZZ
    191 userPassword: tanja
    192 
    193 # Adding a person with an "auxiliary" objectClass...
    194 dn: cn=Some One,${BASEDN}
    195 changetype: add
    196 objectClass: inetOrgPerson
    197 objectClass: simpleSecurityObject
    198 cn: Some One
    199 sn: One
    200 givenName: Some
    201 telephoneNumber: +1 800 900 1234
    202 telephoneNumber: +1 800 900 1235
    203 userPassword: someone
    204 
    205 # Adding a person in another subtree...
    206 dn: cn=SubNet User,dc=subnet,${BASEDN}
    207 changetype: add
    208 objectClass: inetOrgPerson
    209 cn: SubNet User
    210 sn: User
    211 givenName: SubNet
    212 
    213 # Adding a document...
    214 dn: documentTitle=War and Peace,${BASEDN}
    215 changetype: add
    216 objectClass: document
    217 description: Historical novel
    218 documentTitle: War and Peace
    219 documentAuthor: cn=Lev Tolstoij,dc=example,dc=com
    220 documentIdentifier: document 3
    221 EOMODS
    222 
    223 	RC=$?
    224 	if test $RC != 0 ; then
    225 		echo "ldapmodify failed ($RC)!"
    226 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    227 		exit $RC
    228 	fi
    229 
    230 	echo "Using ldapsearch to retrieve all the entries..."
    231 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    232 	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    233 		 "objectClass=*" >> $SEARCHOUT 2>&1
    234 
    235 	RC=$?
    236 	if test $RC != 0 ; then
    237 		echo "ldapsearch failed ($RC)!"
    238 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    239 		exit $RC
    240 	fi
    241 
    242 	echo "Testing modify..."
    243 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    244 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    245 version: 1
    246 
    247 # Deleting all telephone numbers...
    248 dn: cn=Some One,${BASEDN}
    249 changetype: modify
    250 delete: telephoneNumber
    251 -
    252 
    253 # Adding a telephone number...
    254 dn: cn=Mitya Kovalev,${BASEDN}
    255 changetype: modify
    256 add: telephoneNumber
    257 telephoneNumber: +1 800 123 4567
    258 -
    259 
    260 # Deleting a specific telephone number and adding a new one...
    261 dn: cn=Lev Tolstoij,${BASEDN}
    262 changetype: modify
    263 delete: telephoneNumber
    264 telephoneNumber: +39 02 XXXX YYYY
    265 -
    266 add: telephoneNumber
    267 telephoneNumber: +39 333 ZZZ 1234
    268 -
    269 
    270 # Adding an author to a document...
    271 dn: documentTitle=book1,${BASEDN}
    272 changetype: modify
    273 add: documentAuthor
    274 documentAuthor: cn=Lev Tolstoij,${BASEDN}
    275 -
    276 
    277 # Adding an author to another document...
    278 dn: documentTitle=book2,${BASEDN}
    279 changetype: modify
    280 add: documentAuthor
    281 documentAuthor: cn=Lev Tolstoij,${BASEDN}
    282 -
    283 
    284 # Adding an "auxiliary" objectClass...
    285 dn: cn=Mitya Kovalev,${BASEDN}
    286 changetype: modify
    287 add: objectClass
    288 objectClass: simpleSecurityObject
    289 -
    290 
    291 # Deleting an "auxiliary" objectClass...
    292 dn: cn=Some One,${BASEDN}
    293 changetype: modify
    294 delete: objectClass
    295 objectClass: simpleSecurityObject
    296 -
    297 
    298 # Deleting userPasswords
    299 dn: cn=Lev Tolstoij,${BASEDN}
    300 changetype: modify
    301 delete: userPassword
    302 -
    303 EOMODS
    304 
    305 	RC=$?
    306 	if test $RC != 0 ; then
    307 		echo "ldapmodify failed ($RC)!"
    308 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    309 		exit $RC
    310 	fi
    311 
    312 	echo "Using ldapsearch to retrieve all the entries..."
    313 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    314 	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    315 		 "objectClass=*" >> $SEARCHOUT 2>&1
    316 
    317 	RC=$?
    318 	if test $RC != 0 ; then
    319 		echo "ldapsearch failed ($RC)!"
    320 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    321 		exit $RC
    322 	fi
    323 
    324 	echo "Testing delete..."
    325 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    326 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    327 version: 1
    328 
    329 # Deleting a person...
    330 dn: cn=Torvlobnor Puzdoy,${BASEDN}
    331 changetype: delete
    332 
    333 # Deleting a document...
    334 dn: documentTitle=book1,${BASEDN}
    335 changetype: delete
    336 
    337 # Deleting an organization with an "auxiliary" objectClass...
    338 dn: dc=subnet2,${BASEDN}
    339 changetype: delete
    340 EOMODS
    341 
    342 	RC=$?
    343 	if test $RC != 0 ; then
    344 		echo "ldapmodify failed ($RC)!"
    345 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    346 		exit $RC
    347 	fi
    348 
    349 	echo "Using ldapsearch to retrieve all the entries..."
    350 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    351 	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    352 		 "objectClass=*" >> $SEARCHOUT 2>&1
    353 
    354 	RC=$?
    355 	if test $RC != 0 ; then
    356 		echo "ldapsearch failed ($RC)!"
    357 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    358 		exit $RC
    359 	fi
    360 
    361 	echo "Testing rename..."
    362 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    363 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    364 version: 1
    365 
    366 # Renaming an organization...
    367 dn: o=An Org,${BASEDN}
    368 changetype: modrdn
    369 newrdn: o=Renamed Org
    370 deleteoldrdn: 1
    371 
    372 # Moving a person to another subtree...
    373 dn: cn=Lev Tolstoij,${BASEDN}
    374 changetype: modrdn
    375 newrdn: cn=Lev Tolstoij
    376 deleteoldrdn: 0
    377 newsuperior: dc=subnet,${BASEDN}
    378 
    379 # Renaming a book...
    380 dn: documentTitle=book2,${BASEDN}
    381 changetype: modrdn
    382 newrdn: documentTitle=Renamed Book
    383 deleteoldrdn: 1
    384 EOMODS
    385 
    386 	RC=$?
    387 	if test $RC != 0 ; then
    388 		echo "ldapmodify failed ($RC)!"
    389 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    390 		exit $RC
    391 	fi
    392 
    393 	echo "Using ldapsearch to retrieve all the entries..."
    394 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    395 	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    396 		 "objectClass=*" >> $SEARCHOUT 2>&1
    397 
    398 	RC=$?
    399 	if test $RC != 0 ; then
    400 		echo "ldapsearch failed ($RC)!"
    401 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    402 		exit $RC
    403 	fi
    404 
    405 	echo "Adding a child to a referral (should fail)..."
    406 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    407 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    408 version: 1
    409 
    410 dn: cn=Should Fail,ou=Referral,${BASEDN}
    411 changetype: add
    412 objectClass: inetOrgPerson
    413 cn: Should Fail
    414 sn: Fail
    415 telephoneNumber: +39 02 23456789
    416 EOMODS
    417 
    418 	RC=$?
    419 	if test $RC = 0 ; then
    420 		echo "ldapmodify should have failed ($RC)!"
    421 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    422 		exit 1
    423 	fi
    424 
    425 	echo "Modifying a referral (should fail)..."
    426 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    427 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    428 version: 1
    429 
    430 dn: ou=Referral,${BASEDN}
    431 changetype: modify
    432 replace: ref
    433 ref: ldap://localhost:9009/
    434 -
    435 EOMODS
    436 
    437 	RC=$?
    438 	if test $RC = 0 ; then
    439 		echo "ldapmodify should have failed ($RC)!"
    440 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    441 		exit 1
    442 	fi
    443 
    444 	echo "Renaming a referral (should fail)..."
    445 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    446 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    447 version: 1
    448 
    449 dn: ou=Referral,${BASEDN}
    450 changetype: modrdn
    451 newrdn: ou=Renamed Referral
    452 deleteoldrdn: 1
    453 EOMODS
    454 
    455 	RC=$?
    456 	if test $RC = 0 ; then
    457 		echo "ldapmodify should have failed ($RC)!"
    458 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    459 		exit 1
    460 	fi
    461 
    462 	echo "Deleting a referral (should fail)..."
    463 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    464 		-H $URI1 >> $TESTOUT 2>&1 << EOMODS
    465 version: 1
    466 
    467 dn: ou=Referral,${BASEDN}
    468 changetype: delete
    469 EOMODS
    470 
    471 	RC=$?
    472 	if test $RC = 0 ; then
    473 		echo "ldapmodify should have failed ($RC)!"
    474 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    475 		exit 1
    476 	fi
    477 
    478 	echo "Adding a referral..."
    479 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    480 		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
    481 version: 1
    482 
    483 dn: ou=Another Referral,${BASEDN}
    484 changetype: add
    485 objectClass: referral
    486 objectClass: extensibleObject
    487 ou: Another Referral
    488 ref: ldap://localhost:9009/
    489 EOMODS
    490 
    491 	RC=$?
    492 	if test $RC != 0 ; then
    493 		echo "ldapmodify failed ($RC)!"
    494 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    495 		exit $RC
    496 	fi
    497 
    498 	echo "Modifying a referral with manageDSAit..."
    499 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    500 		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
    501 version: 1
    502 
    503 dn: ou=Referral,${BASEDN}
    504 changetype: modify
    505 replace: ref
    506 ref: ldap://localhost:9009/
    507 -
    508 EOMODS
    509 
    510 	RC=$?
    511 	if test $RC != 0 ; then
    512 		echo "ldapmodify failed ($RC)!"
    513 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    514 		exit $RC
    515 	fi
    516 
    517 	echo "Using ldapsearch to retrieve the modified entry..."
    518 	echo "# Using ldapsearch to retrieve the modified entry..." >> $SEARCHOUT
    519 	$LDAPSEARCH -S "" -H $URI1 -b "ou=Referral,$BASEDN" -M \
    520 		 "objectClass=*" '*' ref >> $SEARCHOUT 2>&1
    521 
    522 	RC=$?
    523 	if test $RC != 0 ; then
    524 		echo "ldapsearch failed ($RC)!"
    525 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    526 		exit $RC
    527 	fi
    528 
    529 	echo "Renaming a referral with manageDSAit..."
    530 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    531 		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
    532 version: 1
    533 
    534 dn: ou=Referral,${BASEDN}
    535 changetype: modrdn
    536 newrdn: ou=Renamed Referral
    537 deleteoldrdn: 1
    538 EOMODS
    539 
    540 	RC=$?
    541 	if test $RC != 0 ; then
    542 		echo "ldapmodify failed ($RC)!"
    543 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    544 		exit $RC
    545 	fi
    546 
    547 	echo "Using ldapsearch to retrieve the renamed entry..."
    548 	echo "# Using ldapsearch to retrieve the renamed entry..." >> $SEARCHOUT
    549 	$LDAPSEARCH -S "" -H $URI1 -b "ou=Renamed Referral,$BASEDN" -M \
    550 		 "objectClass=*" '*' ref >> $SEARCHOUT 2>&1
    551 
    552 	RC=$?
    553 	if test $RC != 0 ; then
    554 		echo "ldapsearch failed ($RC)!"
    555 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    556 		exit $RC
    557 	fi
    558 
    559 	echo "Deleting a referral with manageDSAit..."
    560 	$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
    561 		-H $URI1 -M >> $TESTOUT 2>&1 << EOMODS
    562 version: 1
    563 
    564 dn: ou=Renamed Referral,${BASEDN}
    565 changetype: delete
    566 EOMODS
    567 
    568 	RC=$?
    569 	if test $RC != 0 ; then
    570 		echo "ldapmodify failed ($RC)!"
    571 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    572 		exit $RC
    573 	fi
    574 
    575 	BINDDN="cn=Mitya Kovalev,${BASEDN}"
    576 	BINDPW="mit"
    577 	NEWPW="newsecret"
    578 	echo "Testing passwd change..."
    579 	$LDAPPASSWD -H $URI1 \
    580 		-D "${BINDDN}" -w ${BINDPW} -s ${NEWPW} \
    581 		"$BINDDN" >> $TESTOUT 2>&1
    582 
    583 	RC=$?
    584 	if test $RC != 0 ; then
    585 		echo "ldappasswd failed ($RC)!"
    586 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    587 		exit $RC
    588 	fi
    589 
    590 	echo -n "Testing bind with new secret... "
    591 	$LDAPWHOAMI -H $URI1 -D "$BINDDN" -w $NEWPW
    592 	RC=$?
    593 	if test $RC != 0 ; then
    594 		echo "ldapwhoami failed ($RC)!"
    595 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    596 		exit $RC
    597 	fi
    598 
    599 	BINDDN="cn=Some One,${BASEDN}"
    600 	BINDPW="someone"
    601 	echo -n "Testing bind with newly added user... "
    602 	$LDAPWHOAMI -H $URI1 -D "$BINDDN" -w $BINDPW
    603 	RC=$?
    604 	if test $RC != 0 ; then
    605 		echo "ldapwhoami failed ($RC)!"
    606 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    607 		exit $RC
    608 	fi
    609 
    610 	echo "Using ldapsearch to retrieve all the entries..."
    611 	echo "# Using ldapsearch to retrieve all the entries..." >> $SEARCHOUT
    612 	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    613 		 "objectClass=*" >> $SEARCHOUT 2>&1
    614 
    615 	RC=$?
    616 	if test $RC != 0 ; then
    617 		echo "ldapsearch failed ($RC)!"
    618 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    619 		exit $RC
    620 	fi
    621 
    622 	echo "Filtering ldapsearch results..."
    623 	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    624 	echo "Filtering modified ldif..."
    625 	$LDIFFILTER < $SQLWRITE > $LDIFFLT
    626 	echo "Comparing filter output..."
    627 	$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
    628 
    629 	if test $? != 0 ; then
    630 		echo "comparison failed - SQL mods search didn't succeed"
    631 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    632 		exit 1
    633 	fi
    634 
    635 	echo "Waiting 25 seconds for provider to send changes..."
    636 	sleep 25
    637 
    638 	cat /dev/null > $SEARCHOUT
    639 
    640 	echo "Using ldapsearch to retrieve all the entries from the provider..."
    641 	echo "# Using ldapsearch to retrieve all the entries from the provider..." \
    642 		>> $SEARCHOUT
    643 	$LDAPSEARCH -S "" -H $URI1 -b "$BASEDN" \
    644 		-D "$MANAGERDN" -w $PASSWD \
    645 		 "(!(objectClass=referral))" >> $SEARCHOUT 2>&1
    646 
    647 	RC=$?
    648 	if test $RC != 0 ; then
    649 		echo "ldapsearch failed ($RC)!"
    650 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    651 		exit $RC
    652 	fi
    653 
    654 	cat /dev/null > $SEARCHOUT2
    655 
    656 	echo "Using ldapsearch to retrieve all the entries from the consumer..."
    657 	echo "# Using ldapsearch to retrieve all the entries from the consumer..." \
    658 		>> $SEARCHOUT2
    659 	$LDAPSEARCH -S "" -H $URI2 -b "$BASEDN" \
    660 		-D "$UPDATEDN" -w $PASSWD \
    661 		 "(objectClass=*)" >> $SEARCHOUT2 2>&1
    662 
    663 	RC=$?
    664 	if test $RC != 0 ; then
    665 		echo "ldapsearch failed ($RC)!"
    666 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    667 		exit $RC
    668 	fi
    669 
    670 	echo "Filtering ldapsearch results from provider..."
    671 	$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
    672 	echo "Filtering ldapsearch results from consumer..."
    673 	$LDIFFILTER < $SEARCHOUT2 > $SEARCHFLT2
    674 	echo "Comparing filter output..."
    675 	$CMP $SEARCHFLT $SEARCHFLT2 > $CMPOUT
    676 
    677 	if test $? != 0 ; then
    678 		echo "Comparison failed"
    679 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    680 		exit 1
    681 	fi
    682 	;;
    683 
    684 *)
    685 	echo "apparently ${RDBMS} does not support writes; skipping..."
    686 	;;
    687 esac
    688 
    689 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    690 
    691 echo ">>>>> Test succeeded"
    692 exit 0
    693