12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 2004-2021 The OpenLDAP Foundation. 62de962bdSlukem## All rights reserved. 72de962bdSlukem## 82de962bdSlukem## Redistribution and use in source and binary forms, with or without 92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 102de962bdSlukem## Public License. 112de962bdSlukem## 122de962bdSlukem## A copy of this license is available in the file LICENSE in the 132de962bdSlukem## top-level directory of the distribution or, alternatively, at 142de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 152de962bdSlukem 162de962bdSlukemecho "running defines.sh" 172de962bdSlukem. $SRCDIR/scripts/defines.sh 182de962bdSlukem 192de962bdSlukemif test $REFINT = refintno; then 202de962bdSlukem echo "Referential Integrity overlay not available, test skipped" 212de962bdSlukem exit 0 222de962bdSlukemfi 232de962bdSlukem 242de962bdSlukemmkdir -p $TESTDIR $DBDIR1 252de962bdSlukem 262de962bdSlukemecho "Running slapadd to build slapd database..." 27*e670fd5cSchristos. $CONFFILTER $BACKEND < $REFINTCONF > $CONF1 282de962bdSlukem$SLAPADD -f $CONF1 -l $LDIFREFINT 292de962bdSlukemRC=$? 302de962bdSlukemif test $RC != 0 ; then 312de962bdSlukem echo "slapadd failed ($RC)!" 322de962bdSlukem exit $RC 332de962bdSlukemfi 342de962bdSlukem 352de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 36*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 372de962bdSlukemPID=$! 382de962bdSlukemif test $WAIT != 0 ; then 392de962bdSlukem echo PID $PID 402de962bdSlukem read foo 412de962bdSlukemfi 422de962bdSlukemKILLPIDS="$PID" 432de962bdSlukem 442de962bdSlukemsleep 1 452de962bdSlukem 462de962bdSlukemecho "Testing slapd referential integrity operations..." 472de962bdSlukemfor i in 0 1 2 3 4 5; do 48*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 492de962bdSlukem 'objectclass=*' > /dev/null 2>&1 502de962bdSlukem RC=$? 512de962bdSlukem if test $RC = 0 ; then 522de962bdSlukem break 532de962bdSlukem fi 542de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 552de962bdSlukem sleep 5 562de962bdSlukemdone 572de962bdSlukem 582de962bdSlukemif test $RC != 0 ; then 592de962bdSlukem echo "ldapsearch failed ($RC)!" 602de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 612de962bdSlukem exit $RC 622de962bdSlukemfi 632de962bdSlukem 642de962bdSlukemecho "Searching unmodified database..." 652de962bdSlukem 66*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 > $SEARCHOUT 2>&1 672de962bdSlukemRC=$? 682de962bdSlukemif test $RC != 0 ; then 692de962bdSlukem echo "ldapsearch failed ($RC)!" 702de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 712de962bdSlukem exit $RC 722de962bdSlukemfi 732de962bdSlukem 742de962bdSlukem$EGREP_CMD "(manager|secretary):" $SEARCHOUT | sed "s/george/foster/g" | \ 752de962bdSlukem sort > $TESTOUT 2>&1 762de962bdSlukem 772de962bdSlukemecho "Testing modrdn..." 78*e670fd5cSchristos$LDAPMODRDN -D "$REFINTDN" -r -H $URI1 -w $PASSWD > \ 792de962bdSlukem /dev/null 2>&1 'uid=george,ou=users,o=refint' 'uid=foster' 80*e670fd5cSchristos#$LDAPMODRDN -D "$REFINTDN" -r -H $URI1 -w $PASSWD \ 812de962bdSlukem# 'uid=george,ou=users,o=refint' 'uid=foster' 822de962bdSlukem 832de962bdSlukemRC=$? 842de962bdSlukemif test $RC != 0 ; then 852de962bdSlukem echo "ldapmodrdn failed ($RC)!" 862de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 872de962bdSlukem exit $RC 882de962bdSlukemfi 892de962bdSlukem 902de962bdSlukemsleep 1; 912de962bdSlukem 922de962bdSlukemecho "Using ldapsearch to check dependents new rdn..." 932de962bdSlukem 94*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 > $SEARCHOUT 2>&1 952de962bdSlukem 962de962bdSlukemRC=$? 972de962bdSlukem if test $RC != 0 ; then 982de962bdSlukem echo "ldapsearch failed ($RC)!" 992de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1002de962bdSlukem exit $RC 1012de962bdSlukemfi 1022de962bdSlukem 1032de962bdSlukem$EGREP_CMD "(manager|secretary):" $SEARCHOUT | sort > $SEARCHFLT 2>&1 1042de962bdSlukem 1052de962bdSlukemecho "Comparing ldapsearch results against original..." 1062de962bdSlukem$CMP $TESTOUT $SEARCHFLT > $CMPOUT 1072de962bdSlukem 1082de962bdSlukemif test $? != 0 ; then 1092de962bdSlukem echo "comparison failed - modify operations did not complete correctly" 1102de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1112de962bdSlukem exit 1 1122de962bdSlukemfi 1132de962bdSlukem 1142de962bdSlukemecho "Testing delete..." 115*e670fd5cSchristos$LDAPMODIFY -v -D "$REFINTDN" -H $URI1 -w $PASSWD > \ 1162de962bdSlukem $TESTOUT 2>&1 << EDEL 1172de962bdSlukemversion: 1 1182de962bdSlukemdn: uid=foster,ou=users,o=refint 1192de962bdSlukemchangetype: delete 1202de962bdSlukemEDEL 1212de962bdSlukem 1222de962bdSlukemRC=$? 1232de962bdSlukemif test $RC != 0 ; then 1242de962bdSlukem echo "ldapmodify failed ($RC)!" 1252de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1262de962bdSlukem exit $RC 1272de962bdSlukemfi 1282de962bdSlukem 1292de962bdSlukemsleep 1; 1302de962bdSlukem 1312de962bdSlukemecho "Using ldapsearch to verify dependents have been deleted..." 132*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 > $SEARCHOUT 2>&1 1332de962bdSlukem 1342de962bdSlukemRC=$? 1352de962bdSlukemif test $RC != 0 ; then 1362de962bdSlukem echo "ldapsearch failed ($RC)!" 1372de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1382de962bdSlukem exit $RC 1392de962bdSlukemfi 1402de962bdSlukem 1412de962bdSlukem$EGREP_CMD "(manager|secretary):" $SEARCHOUT > $SEARCHFLT 2>&1 1422de962bdSlukem 1432de962bdSlukemRC=`grep -c foster $SEARCHFLT` 1442de962bdSlukemif test $RC != 0 ; then 1452de962bdSlukem echo "dependent modify failed - dependents were not deleted" 1462de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1472de962bdSlukem exit 1 1482de962bdSlukemfi 1492de962bdSlukem 1502de962bdSlukemecho "Additional test records..." 1512de962bdSlukem 152*e670fd5cSchristos$LDAPADD -D "$REFINTDN" -H $URI1 -w $PASSWD > \ 1532de962bdSlukem $TESTOUT 2>&1 << ETEST 1542de962bdSlukemdn: uid=special,ou=users,o=refint 1552de962bdSlukemobjectClass: inetOrgPerson 1562de962bdSlukemobjectClass: extensibleObject 1572de962bdSlukemuid: special 1582de962bdSlukemsn: special 1592de962bdSlukemcn: special 1602de962bdSlukembusinessCategory: nothing 1612de962bdSlukemcarLicense: FOO 1622de962bdSlukemdepartmentNumber: 933 1632de962bdSlukemdisplayName: special 1642de962bdSlukememployeeNumber: 41491 1652de962bdSlukememployeeType: vendor 1662de962bdSlukemgivenName: special 1672de962bdSlukemmember: uid=alice,ou=users,o=refint 1682de962bdSlukemETEST 1692de962bdSlukem 1702de962bdSlukemRC=$? 1712de962bdSlukemif test $RC != 0 ; then 1722de962bdSlukem echo "ldapadd failed ($RC)!" 1732de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1742de962bdSlukem exit $RC 1752de962bdSlukemfi 1762de962bdSlukem 1772de962bdSlukemecho "Testing delete when referential attribute is a MUST..." 178*e670fd5cSchristos$LDAPMODIFY -v -D "$REFINTDN" -H $URI1 -w $PASSWD > \ 1792de962bdSlukem $TESTOUT 2>&1 << EDEL 1802de962bdSlukemversion: 1 1812de962bdSlukemdn: uid=alice,ou=users,o=refint 1822de962bdSlukemchangetype: delete 1832de962bdSlukemEDEL 1842de962bdSlukem 1852de962bdSlukemRC=$? 1862de962bdSlukemif test $RC != 0 ; then 1872de962bdSlukem echo "ldapmodify failed ($RC)!" 1882de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1892de962bdSlukem exit $RC 1902de962bdSlukemfi 1912de962bdSlukem 192*e670fd5cSchristos$LDAPMODIFY -v -D "$REFINTDN" -H $URI1 -w $PASSWD > \ 1932de962bdSlukem $TESTOUT 2>&1 << EDEL 1942de962bdSlukemversion: 1 1952de962bdSlukemdn: cn=group,o=refint 1962de962bdSlukemchangetype: add 1972de962bdSlukemobjectClass: groupOfNames 1982de962bdSlukemcn: group 1992de962bdSlukemmember: uid=bill,ou=users,o=refint 2002de962bdSlukemmember: uid=bob,ou=users,o=refint 2012de962bdSlukemmember: uid=dave,ou=users,o=refint 2022de962bdSlukemmember: uid=jorge,ou=users,o=refint 2032de962bdSlukemmember: uid=theman,ou=users,o=refint 2042de962bdSlukemmember: uid=richard,ou=users,o=refint 2052de962bdSlukemEDEL 2062de962bdSlukem 2072de962bdSlukemRC=$? 2082de962bdSlukemif test $RC != 0 ; then 2092de962bdSlukem echo "ldapmodify failed ($RC)!" 2102de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2112de962bdSlukem exit $RC 2122de962bdSlukemfi 2132de962bdSlukem 2142de962bdSlukemsleep 1; 2152de962bdSlukem 216*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 \ 2172de962bdSlukem manager member secretary > $SEARCHOUT 2>&1 2182de962bdSlukemRC=$? 2192de962bdSlukemif test $RC != 0 ; then 2202de962bdSlukem echo "ldapsearch failed ($RC)!" 2212de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2222de962bdSlukem exit $RC 2232de962bdSlukemfi 2242de962bdSlukem 2252de962bdSlukem$EGREP_CMD "(manager|member|secretary):" $SEARCHOUT \ 2262de962bdSlukem | sed "s/ou=users/ou=people/g" | \ 2272de962bdSlukem sort > $TESTOUT 2>&1 2282de962bdSlukem 2292de962bdSlukemecho "testing subtree rename" 230*e670fd5cSchristos$LDAPMODRDN -D "$REFINTDN" -r -H $URI1 -w $PASSWD > \ 2312de962bdSlukem /dev/null 2>&1 'ou=users,o=refint' 'ou=people' 2322de962bdSlukemRC=$? 2332de962bdSlukemif test $RC != 0 ; then 2342de962bdSlukem echo "ldapmodrdn failed ($RC)!" 2352de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2362de962bdSlukem exit $RC 2372de962bdSlukemfi 2382de962bdSlukem 2392de962bdSlukemsleep 1; 2402de962bdSlukem 2412de962bdSlukemecho "Using ldapsearch to check dependents new rdn..." 2422de962bdSlukem 243*e670fd5cSchristos$LDAPSEARCH -S "" -b "o=refint" -H $URI1 \ 2442de962bdSlukem manager member secretary > $SEARCHOUT 2>&1 2452de962bdSlukem 2462de962bdSlukemRC=$? 2472de962bdSlukemif test $RC != 0 ; then 2482de962bdSlukem echo "ldapsearch failed ($RC)!" 2492de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2502de962bdSlukem exit $RC 2512de962bdSlukemfi 2522de962bdSlukem 2532de962bdSlukem$EGREP_CMD "(manager|member|secretary):" $SEARCHOUT \ 2542de962bdSlukem | sort > $SEARCHFLT 2>&1 2552de962bdSlukem 2562de962bdSlukemecho "Comparing ldapsearch results against original..." 2572de962bdSlukem$CMP $TESTOUT $SEARCHFLT > $CMPOUT 2582de962bdSlukem 2592de962bdSlukemif test $? != 0 ; then 2602de962bdSlukem echo "comparison failed - subtree rename operations did not complete correctly" 2612de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2622de962bdSlukem exit 1 2632de962bdSlukemfi 2642de962bdSlukem 2652de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 2662de962bdSlukem 2672de962bdSlukemecho ">>>>> Test succeeded" 2682de962bdSlukem 2692de962bdSlukemtest $KILLSERVERS != no && wait 2702de962bdSlukem 2712de962bdSlukemexit 0 272