12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 1998-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 $BACKLDAP = ldapno; then 202de962bdSlukem echo "LDAP backend not available, test skipped" 212de962bdSlukem exit 0 222de962bdSlukemfi 232de962bdSlukem 242de962bdSlukemif test $SYNCPROV = syncprovno; then 252de962bdSlukem echo "Syncrepl provider overlay not available, test skipped" 262de962bdSlukem exit 0 272de962bdSlukemfi 282de962bdSlukem 292de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 $DBDIR3 302de962bdSlukem 312de962bdSlukem# 322de962bdSlukem# Test replication: 33*e670fd5cSchristos# - start provider 34*e670fd5cSchristos# - start consumer 352de962bdSlukem# - populate over ldap 362de962bdSlukem# - perform some modifies and deleted 37*e670fd5cSchristos# - attempt to modify the consumer (referral or chain) 382de962bdSlukem# - retrieve database over ldap and compare against expected results 392de962bdSlukem# 402de962bdSlukem 41*e670fd5cSchristosecho "Starting provider slapd on TCP/IP port $PORT1..." 42*e670fd5cSchristos. $CONFFILTER $BACKEND < $PLSRPROVIDERCONF > $CONF1 43*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 44*e670fd5cSchristosPROVIDERPID=$! 452de962bdSlukemif test $WAIT != 0 ; then 46*e670fd5cSchristos echo PROVIDERPID $PROVIDERPID 472de962bdSlukem read foo 482de962bdSlukemfi 49*e670fd5cSchristosKILLPIDS="$PROVIDERPID" 502de962bdSlukem 512de962bdSlukemsleep 1 522de962bdSlukem 53*e670fd5cSchristosecho "Using ldapsearch to check that provider slapd is running..." 542de962bdSlukemfor i in 0 1 2 3 4 5; do 55*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 562de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 572de962bdSlukem RC=$? 582de962bdSlukem if test $RC = 0 ; then 592de962bdSlukem break 602de962bdSlukem fi 612de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 622de962bdSlukem sleep 5 632de962bdSlukemdone 642de962bdSlukem 652de962bdSlukemif test $RC != 0 ; then 662de962bdSlukem echo "ldapsearch failed ($RC)!" 672de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 682de962bdSlukem exit $RC 692de962bdSlukemfi 702de962bdSlukem 71*e670fd5cSchristosecho "Using ldapadd to create the context prefix entry in the provider..." 72*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 732de962bdSlukem $LDIFORDEREDCP > /dev/null 2>&1 742de962bdSlukemRC=$? 752de962bdSlukemif test $RC != 0 ; then 762de962bdSlukem echo "ldapadd failed ($RC)!" 772de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 782de962bdSlukem exit $RC 792de962bdSlukemfi 802de962bdSlukem 81*e670fd5cSchristosecho "Starting P1 consumer slapd on TCP/IP port $PORT2..." 82*e670fd5cSchristos. $CONFFILTER $BACKEND < $RCONSUMERCONF > $CONF2 83*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 & 84*e670fd5cSchristosP1CONSUMERPID=$! 852de962bdSlukemif test $WAIT != 0 ; then 86*e670fd5cSchristos echo P1CONSUMERPID $P1CONSUMERPID 872de962bdSlukem read foo 882de962bdSlukemfi 89*e670fd5cSchristosKILLPIDS="$PROVIDERPID $P1CONSUMERPID" 902de962bdSlukem 912de962bdSlukemsleep 1 922de962bdSlukem 93*e670fd5cSchristosecho "Using ldapsearch to check that P1 consumer slapd is running..." 942de962bdSlukemfor i in 0 1 2 3 4 5; do 95*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 962de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 972de962bdSlukem RC=$? 982de962bdSlukem if test $RC = 0 ; then 992de962bdSlukem break 1002de962bdSlukem fi 1012de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1022de962bdSlukem sleep 5 1032de962bdSlukemdone 1042de962bdSlukem 1052de962bdSlukemif test $RC != 0 ; then 1062de962bdSlukem echo "ldapsearch failed ($RC)!" 1072de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1082de962bdSlukem exit $RC 1092de962bdSlukemfi 1102de962bdSlukem 111*e670fd5cSchristosecho "Starting R1 consumer slapd on TCP/IP port $PORT3..." 112*e670fd5cSchristos. $CONFFILTER $BACKEND < $RCONSUMERCONF | sed -e 's;\.2\.\([^/]*\)$;.3.\1;' > $CONF3 113*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 & 114*e670fd5cSchristosR1CONSUMERPID=$! 1152de962bdSlukemif test $WAIT != 0 ; then 116*e670fd5cSchristos echo R1CONSUMERPID $R1CONSUMERPID 1172de962bdSlukem read foo 1182de962bdSlukemfi 119*e670fd5cSchristosKILLPIDS="$PROVIDERPID $P1CONSUMERPID $R1CONSUMERPID" 1202de962bdSlukem 1212de962bdSlukemsleep 1 1222de962bdSlukem 123*e670fd5cSchristosecho "Using ldapsearch to check that R1 consumer slapd is running..." 1242de962bdSlukemfor i in 0 1 2 3 4 5; do 125*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \ 1262de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 1272de962bdSlukem RC=$? 1282de962bdSlukem if test $RC = 0; then 1292de962bdSlukem break 1302de962bdSlukem fi 1312de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1322de962bdSlukem sleep 5 1332de962bdSlukemdone 1342de962bdSlukem 1352de962bdSlukemif test $RC != 0 ; then 1362de962bdSlukem echo "ldapsearch failed ($RC)!" 1372de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1382de962bdSlukem exit $RC 1392de962bdSlukemfi 1402de962bdSlukem 1412de962bdSlukemCHECK=1 142*e670fd5cSchristosecho "$CHECK > Using ldapadd to populate the provider directory..." 143*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 1442de962bdSlukem $LDIFORDEREDNOCP > /dev/null 2>&1 1452de962bdSlukemRC=$? 1462de962bdSlukemif test $RC != 0 ; then 1472de962bdSlukem echo "ldapadd failed ($RC)!" 1482de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1492de962bdSlukem exit $RC 1502de962bdSlukemfi 1512de962bdSlukem 1524e6df137Slukemecho "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 1534e6df137Slukemsleep $SLEEP1 1542de962bdSlukem 155*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 156*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 157*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.1" 2>&1 1582de962bdSlukemRC=$? 1592de962bdSlukem 1602de962bdSlukemif test $RC != 0 ; then 161*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 1622de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1632de962bdSlukem exit $RC 1642de962bdSlukemfi 1652de962bdSlukem 166*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the P1 consumer..." 167*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 168*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.1" 2>&1 1692de962bdSlukemRC=$? 1702de962bdSlukem 1712de962bdSlukemif test $RC != 0 ; then 172*e670fd5cSchristos echo "ldapsearch failed at P1 consumer ($RC)!" 1732de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1742de962bdSlukem exit $RC 1752de962bdSlukemfi 1762de962bdSlukem 177*e670fd5cSchristos#echo "Filtering provider results..." 178*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.1" > $PROVIDERFLT 179*e670fd5cSchristos#echo "Filtering consumer results..." 180*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.1" > $CONSUMERFLT 1812de962bdSlukem 182*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and P1 consumer..." 183*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 1842de962bdSlukem 1852de962bdSlukemif test $? != 0 ; then 186*e670fd5cSchristos echo "test failed - provider and P1 consumer databases differ" 1872de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1882de962bdSlukem exit 1 1892de962bdSlukemfi 1902de962bdSlukem 191*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the R1 consumer..." 192*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI3 \ 193*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.1" 2>&1 1942de962bdSlukemRC=$? 1952de962bdSlukem 1962de962bdSlukemif test $RC != 0 ; then 197*e670fd5cSchristos echo "ldapsearch failed at R1 consumer ($RC)!" 1982de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1992de962bdSlukem exit $RC 2002de962bdSlukemfi 2012de962bdSlukem 202*e670fd5cSchristos#echo "Filtering consumer results..." 203*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.1" > $CONSUMERFLT 2042de962bdSlukem 205*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and R1 consumer..." 206*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 2072de962bdSlukem 2082de962bdSlukemif test $? != 0 ; then 209*e670fd5cSchristos echo "test failed - provider and R1 consumer databases differ" 2102de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2112de962bdSlukem exit 1 2122de962bdSlukemfi 2132de962bdSlukem 2142de962bdSlukemCHECK=`expr $CHECK + 1` 2154e6df137Slukemecho "$CHECK > Stopping the provider, sleeping $SLEEP2 seconds and restarting it..." 216*e670fd5cSchristoskill -HUP "$PROVIDERPID" 217*e670fd5cSchristoswait $PROVIDERPID 2184e6df137Slukemsleep $SLEEP2 2192de962bdSlukem 2202de962bdSlukemecho "======================= RESTART =======================" >> $LOG1 221*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 & 222*e670fd5cSchristosPROVIDERPID=$! 2232de962bdSlukemif test $WAIT != 0 ; then 224*e670fd5cSchristos echo PROVIDERPID $PROVIDERPID 2252de962bdSlukem read foo 2262de962bdSlukemfi 227*e670fd5cSchristosKILLPIDS="$PROVIDERPID $P1CONSUMERPID $R1CONSUMERPID" 2282de962bdSlukem 2292de962bdSlukemsleep 1 2302de962bdSlukem 231*e670fd5cSchristosecho "Using ldapsearch to check that provider slapd is running..." 2322de962bdSlukemfor i in 0 1 2 3 4 5; do 233*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 2342de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 2352de962bdSlukem RC=$? 2362de962bdSlukem if test $RC = 0 ; then 2372de962bdSlukem break 2382de962bdSlukem fi 2392de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 2402de962bdSlukem sleep 5 2412de962bdSlukemdone 2422de962bdSlukem 2432de962bdSlukemif test $RC != 0 ; then 2442de962bdSlukem echo "ldapsearch failed ($RC)!" 2452de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2462de962bdSlukem exit $RC 2472de962bdSlukemfi 2482de962bdSlukem 249*e670fd5cSchristosecho "Using ldapmodify to modify provider directory..." 2502de962bdSlukem 2512de962bdSlukem# 2522de962bdSlukem# Do some modifications 2532de962bdSlukem# 2542de962bdSlukem 255*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \ 2562de962bdSlukem $TESTOUT 2>&1 << EOMODS 2572de962bdSlukemdn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com 2582de962bdSlukemchangetype: modify 2592de962bdSlukemadd: drink 2602de962bdSlukemdrink: Orange Juice 2612de962bdSlukem- 2622de962bdSlukemdelete: sn 2632de962bdSlukemsn: Jones 2642de962bdSlukem- 2652de962bdSlukemadd: sn 2662de962bdSlukemsn: Jones 2672de962bdSlukem 2682de962bdSlukemdn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 2692de962bdSlukemchangetype: modify 2702de962bdSlukemreplace: drink 2712de962bdSlukemdrink: Iced Tea 2722de962bdSlukem 2732de962bdSlukemdn: cn=ITD Staff,ou=Groups,dc=example,dc=com 2742de962bdSlukemchangetype: modify 2752de962bdSlukemdelete: uniquemember 2762de962bdSlukemuniquemember: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com 2772de962bdSlukemuniquemember: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 2782de962bdSlukem- 2792de962bdSlukemadd: uniquemember 2802de962bdSlukemuniquemember: cn=Dorothy Stevens, ou=Alumni Association, ou=People, dc=example,dc=com 2812de962bdSlukemuniquemember: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com 2822de962bdSlukem 2832de962bdSlukemdn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc 2842de962bdSlukem =com 2852de962bdSlukemchangetype: modify 2862de962bdSlukemdelete: cn 2872de962bdSlukemcn: Biiff Jensen 2882de962bdSlukem 2892de962bdSlukemdn: cn=Gern Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 2902de962bdSlukemchangetype: add 2912de962bdSlukemobjectclass: OpenLDAPperson 2922de962bdSlukemcn: Gern Jensen 2932de962bdSlukemsn: Jensen 2942de962bdSlukemuid: gjensen 2952de962bdSlukemtitle: Chief Investigator, ITD 2962de962bdSlukempostaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103 2972de962bdSlukemseealso: cn=All Staff, ou=Groups, dc=example,dc=com 2982de962bdSlukemdrink: Coffee 2992de962bdSlukemhomepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104 3002de962bdSlukemdescription: Very odd 3012de962bdSlukemfacsimiletelephonenumber: +1 313 555 7557 3022de962bdSlukemtelephonenumber: +1 313 555 8343 3032de962bdSlukemmail: gjensen@mailgw.example.com 3042de962bdSlukemhomephone: +1 313 555 8844 3052de962bdSlukem 3062de962bdSlukemdn: ou=Retired, ou=People, dc=example,dc=com 3072de962bdSlukemchangetype: add 3082de962bdSlukemobjectclass: organizationalUnit 3092de962bdSlukemou: Retired 3102de962bdSlukem 3112de962bdSlukemdn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com 3122de962bdSlukemchangetype: add 3132de962bdSlukemobjectclass: OpenLDAPperson 3142de962bdSlukemcn: Rosco P. Coltrane 3152de962bdSlukemsn: Coltrane 3162de962bdSlukemuid: rosco 3172de962bdSlukemdescription: Fat tycoon 3182de962bdSlukem 3192de962bdSlukemdn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com 3202de962bdSlukemchangetype: modrdn 3212de962bdSlukemnewrdn: cn=Rosco P. Coltrane 3222de962bdSlukemdeleteoldrdn: 1 3232de962bdSlukemnewsuperior: ou=Retired, ou=People, dc=example,dc=com 3242de962bdSlukem 3252de962bdSlukemdn: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com 3262de962bdSlukemchangetype: delete 3272de962bdSlukemEOMODS 3282de962bdSlukem 3292de962bdSlukemRC=$? 3302de962bdSlukemif test $RC != 0 ; then 3312de962bdSlukem echo "ldapmodify failed ($RC)!" 3322de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3332de962bdSlukem exit $RC 3342de962bdSlukemfi 3352de962bdSlukem 3364e6df137Slukemecho "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 3374e6df137Slukemsleep $SLEEP1 3382de962bdSlukem 339*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 340*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 341*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.2" 2>&1 3422de962bdSlukemRC=$? 3432de962bdSlukem 3442de962bdSlukemif test $RC != 0 ; then 345*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 3462de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3472de962bdSlukem exit $RC 3482de962bdSlukemfi 3492de962bdSlukem 350*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the P1 consumer..." 351*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 352*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.2" 2>&1 3532de962bdSlukemRC=$? 3542de962bdSlukem 3552de962bdSlukemif test $RC != 0 ; then 356*e670fd5cSchristos echo "ldapsearch failed at P1 consumer ($RC)!" 3572de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3582de962bdSlukem exit $RC 3592de962bdSlukemfi 3602de962bdSlukem 361*e670fd5cSchristos#echo "Filtering provider results..." 362*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.2" > $PROVIDERFLT 363*e670fd5cSchristos#echo "Filtering P1 consumer results..." 364*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.2" > $CONSUMERFLT 3652de962bdSlukem 366*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and P1 consumer..." 367*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 3682de962bdSlukem 3692de962bdSlukemif test $? != 0 ; then 370*e670fd5cSchristos echo "test failed - provider and P1 consumer databases differ" 3712de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3722de962bdSlukem exit 1 3732de962bdSlukemfi 3742de962bdSlukem 375*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the R1 consumer..." 376*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI3 \ 377*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.2" 2>&1 3782de962bdSlukemRC=$? 3792de962bdSlukem 3802de962bdSlukemif test $RC != 0 ; then 381*e670fd5cSchristos echo "ldapsearch failed at R1 consumer ($RC)!" 3822de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3832de962bdSlukem exit $RC 3842de962bdSlukemfi 3852de962bdSlukem 386*e670fd5cSchristos#echo "Filtering consumer results..." 387*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.2" > $CONSUMERFLT 3882de962bdSlukem 389*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and R1 consumer..." 390*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 3912de962bdSlukem 3922de962bdSlukemif test $? != 0 ; then 393*e670fd5cSchristos echo "test failed - provider and R1 consumer databases differ" 3942de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3952de962bdSlukem exit 1 3962de962bdSlukemfi 3972de962bdSlukem 3982de962bdSlukemCHECK=`expr $CHECK + 1` 399*e670fd5cSchristosecho "$CHECK > Stopping consumer to test recovery..." 400*e670fd5cSchristoskill -HUP $P1CONSUMERPID $R1CONSUMERPID 401*e670fd5cSchristoswait $P1CONSUMERPID 402*e670fd5cSchristoswait $R1CONSUMERPID 4032de962bdSlukem 404*e670fd5cSchristosecho "Modifying more entries on the provider..." 405*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \ 4062de962bdSlukem $TESTOUT 2>&1 << EOMODS 4072de962bdSlukemdn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 4082de962bdSlukemchangetype: modify 4092de962bdSlukemadd: description 410*e670fd5cSchristosdescription: r1 consumer is down... 4112de962bdSlukem 4122de962bdSlukemdn: cn=James T. Kirk, ou=Retired, ou=People, dc=example,dc=com 4132de962bdSlukemchangetype: add 4142de962bdSlukemobjectclass: OpenLDAPperson 4152de962bdSlukemsn: Kirk 4162de962bdSlukemuid: jtk 4172de962bdSlukemcn: James T. Kirk 4182de962bdSlukem 4192de962bdSlukemdn: cn=Tiberius J. Hooker, ou=Retired, ou=People, dc=example,dc=com 4202de962bdSlukemchangetype: add 4212de962bdSlukemobjectclass: OpenLDAPperson 4222de962bdSlukemsn: Hooker 4232de962bdSlukemuid: tjh 4242de962bdSlukemcn: Tiberius J. Hooker 4252de962bdSlukem 4262de962bdSlukemEOMODS 4272de962bdSlukem 428*e670fd5cSchristosecho "Restarting P1 consumer..." 4292de962bdSlukemecho "======================= RESTART =======================" >> $LOG3 430*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL >> $LOG2 2>&1 & 431*e670fd5cSchristosP1CONSUMERPID=$! 4322de962bdSlukemif test $WAIT != 0 ; then 433*e670fd5cSchristos echo P1CONSUMERPID $P1CONSUMERPID 4342de962bdSlukem read foo 4352de962bdSlukemfi 4362de962bdSlukem 437*e670fd5cSchristosecho "Restarting R1 consumer..." 4382de962bdSlukemecho "======================= RESTART =======================" >> $LOG3 439*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 & 440*e670fd5cSchristosR1CONSUMERPID=$! 4412de962bdSlukemif test $WAIT != 0 ; then 442*e670fd5cSchristos echo R1CONSUMERPID $R1CONSUMERPID 4432de962bdSlukem read foo 4442de962bdSlukemfi 445*e670fd5cSchristosKILLPIDS="$PROVIDERPID $P1CONSUMERPID $R1CONSUMERPID" 4462de962bdSlukem 4474e6df137Slukemecho "Waiting $SLEEP2 seconds for syncrepl to receive changes..." 4484e6df137Slukemsleep $SLEEP2 4492de962bdSlukem 450*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 451*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 452*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.3" 2>&1 4532de962bdSlukemRC=$? 4542de962bdSlukem 4552de962bdSlukemif test $RC != 0 ; then 456*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 4572de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4582de962bdSlukem exit $RC 4592de962bdSlukemfi 4602de962bdSlukem 461*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the P1 consumer..." 462*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 463*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.3" 2>&1 4642de962bdSlukemRC=$? 4652de962bdSlukem 4662de962bdSlukemif test $RC != 0 ; then 467*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 4682de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4692de962bdSlukem exit $RC 4702de962bdSlukemfi 4712de962bdSlukem 472*e670fd5cSchristos#echo "Filtering provider results..." 473*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.3" > $PROVIDERFLT 474*e670fd5cSchristos#echo "Filtering consumer results..." 475*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.3" > $CONSUMERFLT 4762de962bdSlukem 477*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and P1 consumer..." 478*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 4792de962bdSlukem 4802de962bdSlukemif test $? != 0 ; then 481*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 4822de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4832de962bdSlukem exit 1 4842de962bdSlukemfi 4852de962bdSlukem 486*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the R1 consumer..." 487*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI3 \ 488*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.3" 2>&1 4892de962bdSlukemRC=$? 4902de962bdSlukem 4912de962bdSlukemif test $RC != 0 ; then 492*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 4932de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4942de962bdSlukem exit $RC 4952de962bdSlukemfi 4962de962bdSlukem 497*e670fd5cSchristos#echo "Filtering consumer results..." 498*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.3" > $CONSUMERFLT 4992de962bdSlukem 500*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and R1 consumer..." 501*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 5022de962bdSlukem 5032de962bdSlukemif test $? != 0 ; then 504*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 5052de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5062de962bdSlukem exit 1 5072de962bdSlukemfi 5082de962bdSlukem 5092de962bdSlukemCHECK=`expr $CHECK + 1` 510*e670fd5cSchristosecho "$CHECK > Try updating the P1 consumer slapd..." 511*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI2 -w $PASSWD > \ 5122de962bdSlukem $TESTOUT 2>&1 << EOMODS 5132de962bdSlukemdn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com 5142de962bdSlukemchangetype: modify 5152de962bdSlukemadd: description 5162de962bdSlukemdescription: This write must fail because directed to a shadow context, 5172de962bdSlukemdescription: unless the chain overlay is configured appropriately ;) 5182de962bdSlukem 5192de962bdSlukemEOMODS 5202de962bdSlukem 5212de962bdSlukemRC=$? 5222de962bdSlukemif test $RC != 0 ; then 5232de962bdSlukem echo "ldapmodify failed ($RC)!" 5242de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5252de962bdSlukem exit $RC 5262de962bdSlukemfi 5272de962bdSlukem 5284e6df137Slukemecho "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 5294e6df137Slukemsleep $SLEEP1 5302de962bdSlukem 531*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 532*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 533*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.4" 2>&1 5342de962bdSlukemRC=$? 5352de962bdSlukem 5362de962bdSlukemif test $RC != 0 ; then 537*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 5382de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5392de962bdSlukem exit $RC 5402de962bdSlukemfi 5412de962bdSlukem 542*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the P1 consumer..." 543*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 544*e670fd5cSchristos'(objectClass=*)' > "${CONSUMEROUT}.4" 2>&1 5452de962bdSlukemRC=$? 5462de962bdSlukem 5472de962bdSlukemif test $RC != 0 ; then 548*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 5492de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5502de962bdSlukem exit $RC 5512de962bdSlukemfi 5522de962bdSlukem 553*e670fd5cSchristos#echo "Filtering provider results..." 554*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.4" > $PROVIDERFLT 555*e670fd5cSchristos#echo "Filtering consumer results..." 556*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.4" > $CONSUMERFLT 5572de962bdSlukem 558*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and P1 consumer..." 559*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 5602de962bdSlukem 5612de962bdSlukemif test $? != 0 ; then 562*e670fd5cSchristos echo "test failed - provider and P1 consumer databases differ" 5632de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5642de962bdSlukem exit 1 5652de962bdSlukemfi 5662de962bdSlukem 567*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the R1 consumer..." 568*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI3 \ 569*e670fd5cSchristos'(objectClass=*)' > "${CONSUMEROUT}.4" 2>&1 5702de962bdSlukemRC=$? 5712de962bdSlukem 5722de962bdSlukemif test $RC != 0 ; then 573*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 5742de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5752de962bdSlukem exit $RC 5762de962bdSlukemfi 5772de962bdSlukem 578*e670fd5cSchristos#echo "Filtering consumer results..." 579*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.4" > $CONSUMERFLT 5802de962bdSlukem 581*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and R1 consumer..." 582*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 5832de962bdSlukem 5842de962bdSlukemif test $? != 0 ; then 585*e670fd5cSchristos echo "test failed - provider and R1 consumer databases differ" 5862de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5872de962bdSlukem exit 1 5882de962bdSlukemfi 5892de962bdSlukem 5902de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 5912de962bdSlukem 5922de962bdSlukemecho ">>>>> Test succeeded" 5932de962bdSlukem 5942de962bdSlukemtest $KILLSERVERS != no && wait 5952de962bdSlukem 5962de962bdSlukemexit 0 597