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 162de962bdSlukem 172de962bdSlukem# test now handles known issues 182de962bdSlukem#if test x"$PROXYSYNC" = x ; then 192de962bdSlukem# echo "Test disabled; set PROXYSYNC=yes to enable" 202de962bdSlukem# exit 0 212de962bdSlukem#fi 222de962bdSlukem 232de962bdSlukemecho "running defines.sh" 242de962bdSlukem. $SRCDIR/scripts/defines.sh 252de962bdSlukem 262de962bdSlukemif test $BACKLDAP = ldapno; then 272de962bdSlukem echo "LDAP backend not available, test skipped" 282de962bdSlukem exit 0 292de962bdSlukemfi 302de962bdSlukem 312de962bdSlukemif test $SYNCPROV = syncprovno; then 322de962bdSlukem echo "Syncrepl provider overlay not available, test skipped" 332de962bdSlukem exit 0 342de962bdSlukemfi 352de962bdSlukem 362de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 372de962bdSlukem 382de962bdSlukem# 392de962bdSlukem# Test replication: 40*e670fd5cSchristos# - start provider 41*e670fd5cSchristos# - start consumer 422de962bdSlukem# - populate over ldap 432de962bdSlukem# - perform some modifies and deleted 44*e670fd5cSchristos# - attempt to modify the consumer (referral or chain) 452de962bdSlukem# - retrieve database over ldap and compare against expected results 462de962bdSlukem# 472de962bdSlukem 48*e670fd5cSchristosecho "Starting provider slapd on TCP/IP port $PORT1..." 49*e670fd5cSchristos. $CONFFILTER $BACKEND < $SRPROVIDERCONF > $CONF1 50*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 51*e670fd5cSchristosPROVIDERPID=$! 522de962bdSlukemif test $WAIT != 0 ; then 53*e670fd5cSchristos echo PROVIDERPID $PROVIDERPID 542de962bdSlukem read foo 552de962bdSlukemfi 56*e670fd5cSchristosKILLPIDS="$PROVIDERPID" 572de962bdSlukem 582de962bdSlukemsleep 1 592de962bdSlukem 60*e670fd5cSchristosecho "Using ldapsearch to check that provider slapd is running..." 612de962bdSlukemfor i in 0 1 2 3 4 5; do 62*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 632de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 642de962bdSlukem RC=$? 652de962bdSlukem if test $RC = 0 ; then 662de962bdSlukem break 672de962bdSlukem fi 682de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 692de962bdSlukem sleep 5 702de962bdSlukemdone 712de962bdSlukem 722de962bdSlukemif test $RC != 0 ; then 732de962bdSlukem echo "ldapsearch failed ($RC)!" 742de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 752de962bdSlukem exit $RC 762de962bdSlukemfi 772de962bdSlukem 78*e670fd5cSchristosecho "Using ldapadd to create the context prefix entry in the provider..." 79*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 802de962bdSlukem $LDIFORDEREDCP > /dev/null 2>&1 812de962bdSlukemRC=$? 822de962bdSlukemif test $RC != 0 ; then 832de962bdSlukem echo "ldapadd failed ($RC)!" 842de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 852de962bdSlukem exit $RC 862de962bdSlukemfi 872de962bdSlukem 88*e670fd5cSchristosecho "Starting consumer slapd on TCP/IP port $PORT2..." 89*e670fd5cSchristos. $CONFFILTER $BACKEND < $RCONSUMERCONF > $CONF2 90*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 & 91*e670fd5cSchristosCONSUMERPID=$! 922de962bdSlukemif test $WAIT != 0 ; then 93*e670fd5cSchristos echo CONSUMERPID $CONSUMERPID 942de962bdSlukem read foo 952de962bdSlukemfi 96*e670fd5cSchristosKILLPIDS="$PROVIDERPID $CONSUMERPID" 972de962bdSlukem 982de962bdSlukemsleep 1 992de962bdSlukem 100*e670fd5cSchristosecho "Using ldapsearch to check that consumer slapd is running..." 1012de962bdSlukemfor i in 0 1 2 3 4 5; do 102*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 1032de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 1042de962bdSlukem RC=$? 1052de962bdSlukem if test $RC = 0 ; then 1062de962bdSlukem break 1072de962bdSlukem fi 1082de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1092de962bdSlukem sleep 5 1102de962bdSlukemdone 1112de962bdSlukem 1122de962bdSlukemif test $RC != 0 ; then 1132de962bdSlukem echo "ldapsearch failed ($RC)!" 1142de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1152de962bdSlukem exit $RC 1162de962bdSlukemfi 1172de962bdSlukem 1182de962bdSlukemecho "Starting proxy slapd on TCP/IP port $PORT3..." 119*e670fd5cSchristos. $CONFFILTER $BACKEND < $PLSRCONSUMERCONF > $CONF3 120*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 & 1212de962bdSlukemPROXYPID=$! 1222de962bdSlukemif test $WAIT != 0 ; then 1232de962bdSlukem echo PROXYPID $PROXYPID 1242de962bdSlukem read foo 1252de962bdSlukemfi 126*e670fd5cSchristosKILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 1272de962bdSlukem 1282de962bdSlukemsleep 1 1292de962bdSlukem 1302de962bdSlukemecho "Using ldapsearch to check that proxy slapd is running..." 1312de962bdSlukemfor i in 0 1 2 3 4 5; do 132*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \ 1332de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 1342de962bdSlukem RC=$? 1352de962bdSlukem if test $RC = 0 || test $RC = 53 ; then 1362de962bdSlukem break 1372de962bdSlukem fi 1382de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1392de962bdSlukem sleep 5 1402de962bdSlukemdone 1412de962bdSlukem 1422de962bdSlukemcase $RC in 1432de962bdSlukem0 ) 1442de962bdSlukem echo "ldapsearch should have failed ($RC)!" 1452de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1462de962bdSlukem exit -1 1472de962bdSlukem ;; 1482de962bdSlukem53) 1492de962bdSlukem ;; 1502de962bdSlukem*) 1512de962bdSlukem echo "ldapsearch failed ($RC)!" 1522de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1532de962bdSlukem exit $RC 1542de962bdSlukem ;; 1552de962bdSlukemesac 1562de962bdSlukem 1572de962bdSlukemCHECK=1 158*e670fd5cSchristosecho "$CHECK > Using ldapadd to populate the provider directory..." 159*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 1602de962bdSlukem $LDIFORDEREDNOCP > /dev/null 2>&1 1612de962bdSlukemRC=$? 1622de962bdSlukemif test $RC != 0 ; then 1632de962bdSlukem echo "ldapadd failed ($RC)!" 1642de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1652de962bdSlukem exit $RC 1662de962bdSlukemfi 1672de962bdSlukem 168*e670fd5cSchristos# get provider contextCSN 169*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 170*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 1712de962bdSlukemRC=$? 1722de962bdSlukemif test $RC != 0 ; then 173*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 1742de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1752de962bdSlukem exit $RC 1762de962bdSlukemfi 1772de962bdSlukem 178*e670fd5cSchristos# check consumer contextCSN 1792de962bdSlukemsleep 1 1802de962bdSlukemfor i in 1 2 3; do 181*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 182*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 1832de962bdSlukem RC=$? 1842de962bdSlukem 1852de962bdSlukem if test $RC != 0 ; then 186*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 1872de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1882de962bdSlukem exit $RC 1892de962bdSlukem fi 1902de962bdSlukem 191*e670fd5cSchristos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 1922de962bdSlukem 1932de962bdSlukem if test $? = 0 ; then 1942de962bdSlukem break 1952de962bdSlukem fi 1962de962bdSlukem 1974e6df137Slukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 1984e6df137Slukem sleep $SLEEP1 1992de962bdSlukemdone 2002de962bdSlukem 201*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 202*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 203*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 2042de962bdSlukemRC=$? 2052de962bdSlukem 2062de962bdSlukemif test $RC != 0 ; then 207*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 2082de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2092de962bdSlukem exit $RC 2102de962bdSlukemfi 2112de962bdSlukem 212*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the consumer..." 213*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 214*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 2152de962bdSlukemRC=$? 2162de962bdSlukem 2172de962bdSlukemif test $RC != 0 ; then 218*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 2192de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2202de962bdSlukem exit $RC 2212de962bdSlukemfi 2222de962bdSlukem 223*e670fd5cSchristos#echo "Filtering provider results..." 224*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 225*e670fd5cSchristos#echo "Filtering consumer results..." 226*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 2272de962bdSlukem 228*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and consumer..." 229*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 2302de962bdSlukem 2312de962bdSlukemif test $? != 0 ; then 232*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 2332de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2342de962bdSlukem exit 1 2352de962bdSlukemfi 2362de962bdSlukem 2372de962bdSlukemCHECK=`expr $CHECK + 1` 2384e6df137Slukemecho "$CHECK > Stopping the provider, sleeping $SLEEP2 seconds and restarting it..." 239*e670fd5cSchristoskill -HUP "$PROVIDERPID" 240*e670fd5cSchristoswait $PROVIDERPID 2414e6df137Slukemsleep $SLEEP2 2422de962bdSlukem 2432de962bdSlukemecho "======================= RESTART =======================" >> $LOG1 244*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 & 245*e670fd5cSchristosPROVIDERPID=$! 2462de962bdSlukemif test $WAIT != 0 ; then 247*e670fd5cSchristos echo PROVIDERPID $PROVIDERPID 2482de962bdSlukem read foo 2492de962bdSlukemfi 250*e670fd5cSchristosKILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 2512de962bdSlukem 2522de962bdSlukemsleep 1 2532de962bdSlukem 254*e670fd5cSchristosecho "Using ldapsearch to check that provider slapd is running..." 2552de962bdSlukemfor i in 0 1 2 3 4 5; do 256*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 2572de962bdSlukem '(objectClass=*)' > /dev/null 2>&1 2582de962bdSlukem RC=$? 2592de962bdSlukem if test $RC = 0 ; then 2602de962bdSlukem break 2612de962bdSlukem fi 2622de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 2632de962bdSlukem sleep 5 2642de962bdSlukemdone 2652de962bdSlukem 2662de962bdSlukemif test $RC != 0 ; then 2672de962bdSlukem echo "ldapsearch failed ($RC)!" 2682de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2692de962bdSlukem exit $RC 2702de962bdSlukemfi 2712de962bdSlukem 272*e670fd5cSchristosecho "Using ldapmodify to modify provider directory..." 2732de962bdSlukem 2742de962bdSlukem# 2752de962bdSlukem# Do some modifications 2762de962bdSlukem# 2772de962bdSlukem 278*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \ 2792de962bdSlukem $TESTOUT 2>&1 << EOMODS 2802de962bdSlukemdn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com 2812de962bdSlukemchangetype: modify 2822de962bdSlukemadd: drink 2832de962bdSlukemdrink: Orange Juice 2842de962bdSlukem- 2852de962bdSlukemdelete: sn 2862de962bdSlukemsn: Jones 2872de962bdSlukem- 2882de962bdSlukemadd: sn 2892de962bdSlukemsn: Jones 2902de962bdSlukem 2912de962bdSlukemdn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 2922de962bdSlukemchangetype: modify 2932de962bdSlukemreplace: drink 2942de962bdSlukemdrink: Iced Tea 2952de962bdSlukem 2962de962bdSlukemdn: cn=ITD Staff,ou=Groups,dc=example,dc=com 2972de962bdSlukemchangetype: modify 2982de962bdSlukemdelete: uniquemember 2992de962bdSlukemuniquemember: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com 3002de962bdSlukemuniquemember: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 3012de962bdSlukem- 3022de962bdSlukemadd: uniquemember 3032de962bdSlukemuniquemember: cn=Dorothy Stevens, ou=Alumni Association, ou=People, dc=example,dc=com 3042de962bdSlukemuniquemember: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com 3052de962bdSlukem 3062de962bdSlukemdn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc 3072de962bdSlukem =com 3082de962bdSlukemchangetype: modify 3092de962bdSlukemdelete: cn 3102de962bdSlukemcn: Biiff Jensen 3112de962bdSlukem 3122de962bdSlukemdn: cn=Gern Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 3132de962bdSlukemchangetype: add 3142de962bdSlukemobjectclass: OpenLDAPperson 3152de962bdSlukemcn: Gern Jensen 3162de962bdSlukemsn: Jensen 3172de962bdSlukemuid: gjensen 3182de962bdSlukemtitle: Chief Investigator, ITD 3192de962bdSlukempostaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103 3202de962bdSlukemseealso: cn=All Staff, ou=Groups, dc=example,dc=com 3212de962bdSlukemdrink: Coffee 3222de962bdSlukemhomepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104 3232de962bdSlukemdescription: Very odd 3242de962bdSlukemfacsimiletelephonenumber: +1 313 555 7557 3252de962bdSlukemtelephonenumber: +1 313 555 8343 3262de962bdSlukemmail: gjensen@mailgw.example.com 3272de962bdSlukemhomephone: +1 313 555 8844 3282de962bdSlukem 3292de962bdSlukemdn: ou=Retired, ou=People, dc=example,dc=com 3302de962bdSlukemchangetype: add 3312de962bdSlukemobjectclass: organizationalUnit 3322de962bdSlukemou: Retired 3332de962bdSlukem 3342de962bdSlukemdn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com 3352de962bdSlukemchangetype: add 3362de962bdSlukemobjectclass: OpenLDAPperson 3372de962bdSlukemcn: Rosco P. Coltrane 3382de962bdSlukemsn: Coltrane 3392de962bdSlukemuid: rosco 3402de962bdSlukemdescription: Fat tycoon 3412de962bdSlukem 3422de962bdSlukemdn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com 3432de962bdSlukemchangetype: modrdn 3442de962bdSlukemnewrdn: cn=Rosco P. Coltrane 3452de962bdSlukemdeleteoldrdn: 1 3462de962bdSlukemnewsuperior: ou=Retired, ou=People, dc=example,dc=com 3472de962bdSlukem 3482de962bdSlukemdn: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com 3492de962bdSlukemchangetype: delete 3502de962bdSlukemEOMODS 3512de962bdSlukem 3522de962bdSlukemRC=$? 3532de962bdSlukemif test $RC != 0 ; then 3542de962bdSlukem echo "ldapmodify failed ($RC)!" 3552de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3562de962bdSlukem exit $RC 3572de962bdSlukemfi 3582de962bdSlukem 359*e670fd5cSchristos# get provider contextCSN 360*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 361*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 3622de962bdSlukemRC=$? 3632de962bdSlukemif test $RC != 0 ; then 364*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 3652de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3662de962bdSlukem exit $RC 3672de962bdSlukemfi 3682de962bdSlukem 369*e670fd5cSchristos# check consumer contextCSN 3702de962bdSlukemfor i in 1 2 3; do 3714e6df137Slukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 3724e6df137Slukem sleep $SLEEP1 3732de962bdSlukem 374*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 375*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 3762de962bdSlukem RC=$? 3772de962bdSlukem 3782de962bdSlukem if test $RC != 0 ; then 379*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 3802de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3812de962bdSlukem exit $RC 3822de962bdSlukem fi 3832de962bdSlukem 384*e670fd5cSchristos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 3852de962bdSlukem 3862de962bdSlukem if test $? = 0 ; then 3872de962bdSlukem break 3882de962bdSlukem fi 3892de962bdSlukemdone 3902de962bdSlukem 391*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 392*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 393*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 3942de962bdSlukemRC=$? 3952de962bdSlukem 3962de962bdSlukemif test $RC != 0 ; then 397*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 3982de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 3992de962bdSlukem exit $RC 4002de962bdSlukemfi 4012de962bdSlukem 402*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the consumer..." 403*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 404*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 4052de962bdSlukemRC=$? 4062de962bdSlukem 4072de962bdSlukemif test $RC != 0 ; then 408*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 4092de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4102de962bdSlukem exit $RC 4112de962bdSlukemfi 4122de962bdSlukem 413*e670fd5cSchristos#echo "Filtering provider results..." 414*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 415*e670fd5cSchristos#echo "Filtering consumer results..." 416*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 4172de962bdSlukem 418*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and consumer..." 419*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 4202de962bdSlukem 4212de962bdSlukemif test $? != 0 ; then 422*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 4232de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4242de962bdSlukem exit 1 4252de962bdSlukemfi 4262de962bdSlukem 4272de962bdSlukemCHECK=`expr $CHECK + 1` 4282de962bdSlukemecho "$CHECK > Stopping proxy to test recovery..." 4292de962bdSlukemkill -HUP $PROXYPID 4302de962bdSlukemwait $PROXYPID 4312de962bdSlukem 432*e670fd5cSchristosecho "Modifying more entries on the provider..." 433*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \ 4342de962bdSlukem $TESTOUT 2>&1 << EOMODS 4352de962bdSlukemdn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 4362de962bdSlukemchangetype: modify 4372de962bdSlukemadd: description 4382de962bdSlukemdescription: proxy is down... 4392de962bdSlukem 4402de962bdSlukemdn: cn=James T. Kirk, ou=Retired, ou=People, dc=example,dc=com 4412de962bdSlukemchangetype: add 4422de962bdSlukemobjectclass: OpenLDAPperson 4432de962bdSlukemsn: Kirk 4442de962bdSlukemuid: jtk 4452de962bdSlukemcn: James T. Kirk 4462de962bdSlukem 4472de962bdSlukemdn: cn=Tiberius J. Hooker, ou=Retired, ou=People, dc=example,dc=com 4482de962bdSlukemchangetype: add 4492de962bdSlukemobjectclass: OpenLDAPperson 4502de962bdSlukemsn: Hooker 4512de962bdSlukemuid: tjh 4522de962bdSlukemcn: Tiberius J. Hooker 4532de962bdSlukem 4542de962bdSlukemEOMODS 4552de962bdSlukem 4562de962bdSlukemecho "Restarting proxy..." 4572de962bdSlukemecho "======================= RESTART =======================" >> $LOG3 458*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 & 4592de962bdSlukemPROXYPID=$! 4602de962bdSlukemif test $WAIT != 0 ; then 4612de962bdSlukem echo PROXYPID $PROXYPID 4622de962bdSlukem read foo 4632de962bdSlukemfi 464*e670fd5cSchristosKILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 4652de962bdSlukem 466*e670fd5cSchristos# get provider contextCSN 467*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 468*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 4692de962bdSlukemRC=$? 4702de962bdSlukemif test $RC != 0 ; then 471*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 4722de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4732de962bdSlukem exit $RC 4742de962bdSlukemfi 4752de962bdSlukem 476*e670fd5cSchristos# check consumer contextCSN 4772de962bdSlukemfor i in 1 2 3 4 5; do 4784e6df137Slukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 4794e6df137Slukem sleep $SLEEP1 4802de962bdSlukem 481*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 482*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 4832de962bdSlukem RC=$? 4842de962bdSlukem 4852de962bdSlukem if test $RC != 0 ; then 486*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 4872de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 4882de962bdSlukem exit $RC 4892de962bdSlukem fi 4902de962bdSlukem 491*e670fd5cSchristos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 4922de962bdSlukem 4932de962bdSlukem if test $? = 0 ; then 4942de962bdSlukem break 4952de962bdSlukem fi 4962de962bdSlukemdone 4972de962bdSlukem 498*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 499*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 500*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 5012de962bdSlukemRC=$? 5022de962bdSlukem 5032de962bdSlukemif test $RC != 0 ; then 504*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 5052de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5062de962bdSlukem exit $RC 5072de962bdSlukemfi 5082de962bdSlukem 509*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the consumer..." 510*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 511*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 5122de962bdSlukemRC=$? 5132de962bdSlukem 5142de962bdSlukemif test $RC != 0 ; then 515*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 5162de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5172de962bdSlukem exit $RC 5182de962bdSlukemfi 5192de962bdSlukem 520*e670fd5cSchristos#echo "Filtering provider results..." 521*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 522*e670fd5cSchristos#echo "Filtering consumer results..." 523*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 5242de962bdSlukem 525*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and consumer..." 526*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 5272de962bdSlukem 5282de962bdSlukemif test $? != 0 ; then 529*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 5302de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5312de962bdSlukem exit 1 5322de962bdSlukemfi 5332de962bdSlukem 5342de962bdSlukemCHECK=`expr $CHECK + 1` 535*e670fd5cSchristosecho "$CHECK > Try updating the consumer slapd..." 536*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI2 -w $PASSWD > \ 5372de962bdSlukem $TESTOUT 2>&1 << EOMODS 5382de962bdSlukemdn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com 5392de962bdSlukemchangetype: modify 5402de962bdSlukemadd: description 5412de962bdSlukemdescription: This write must fail because directed to a shadow context, 5422de962bdSlukemdescription: unless the chain overlay is configured appropriately ;) 5432de962bdSlukem 5442de962bdSlukemEOMODS 5452de962bdSlukem 5462de962bdSlukemRC=$? 5472de962bdSlukemif test $RC != 0 ; then 5482de962bdSlukem echo "ldapmodify failed ($RC)!" 5492de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5502de962bdSlukem exit $RC 5512de962bdSlukemfi 5522de962bdSlukem 553*e670fd5cSchristos# get provider contextCSN 554*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 555*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 5562de962bdSlukemRC=$? 5572de962bdSlukemif test $RC != 0 ; then 558*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 5592de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5602de962bdSlukem exit $RC 5612de962bdSlukemfi 5622de962bdSlukem 563*e670fd5cSchristos# check consumer contextCSN 5642de962bdSlukemsleep 1 5652de962bdSlukem 5662de962bdSlukemfor i in 1 2 3; do 567*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 568*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 5692de962bdSlukem RC=$? 5702de962bdSlukem 5712de962bdSlukem if test $RC != 0 ; then 572*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 5732de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5742de962bdSlukem exit $RC 5752de962bdSlukem fi 5762de962bdSlukem 577*e670fd5cSchristos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 5782de962bdSlukem 5792de962bdSlukem if test $? = 0 ; then 5802de962bdSlukem break 5812de962bdSlukem fi 5822de962bdSlukem 5834e6df137Slukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 5844e6df137Slukem sleep $SLEEP1 5852de962bdSlukemdone 5862de962bdSlukem 587*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 588*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 589*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 5902de962bdSlukemRC=$? 5912de962bdSlukem 5922de962bdSlukemif test $RC != 0 ; then 593*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 5942de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 5952de962bdSlukem exit $RC 5962de962bdSlukemfi 5972de962bdSlukem 598*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the consumer..." 599*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 600*e670fd5cSchristos'(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 6012de962bdSlukemRC=$? 6022de962bdSlukem 6032de962bdSlukemif test $RC != 0 ; then 604*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 6052de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6062de962bdSlukem exit $RC 6072de962bdSlukemfi 6082de962bdSlukem 609*e670fd5cSchristos#echo "Filtering provider results..." 610*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 611*e670fd5cSchristos#echo "Filtering consumer results..." 612*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 6132de962bdSlukem 614*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and consumer..." 615*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 6162de962bdSlukem 6172de962bdSlukemif test $? != 0 ; then 618*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 6192de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6202de962bdSlukem exit 1 6212de962bdSlukemfi 6222de962bdSlukem 6232de962bdSlukemCHECK=`expr $CHECK + 1` 6242de962bdSlukemecho "$CHECK > Stopping consumer to test recovery..." 625*e670fd5cSchristoskill -HUP $CONSUMERPID 626*e670fd5cSchristoswait $CONSUMERPID 6272de962bdSlukem 628*e670fd5cSchristosecho "Modifying more entries on the provider..." 629*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \ 6302de962bdSlukem $TESTOUT 2>&1 << EOMODS 6312de962bdSlukemdn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 6322de962bdSlukemchangetype: modify 6332de962bdSlukemadd: drink 6342de962bdSlukemdrink: Mad Dog 20/20 6352de962bdSlukem 6362de962bdSlukemEOMODS 6372de962bdSlukem 6384e6df137Slukemecho "Waiting $SLEEP2 seconds for syncrepl to retry..." 6394e6df137Slukemsleep $SLEEP2 6402de962bdSlukem 6412de962bdSlukemecho "Restarting consumer..." 6422de962bdSlukemecho "======================= RESTART =======================" >> $LOG2 643*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL >> $LOG2 2>&1 & 644*e670fd5cSchristosCONSUMERPID=$! 6452de962bdSlukemif test $WAIT != 0 ; then 646*e670fd5cSchristos echo CONSUMERPID $CONSUMERPID 6472de962bdSlukem read foo 6482de962bdSlukemfi 649*e670fd5cSchristosKILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 6502de962bdSlukem 651*e670fd5cSchristos# get provider contextCSN 652*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 653*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 6542de962bdSlukemRC=$? 6552de962bdSlukemif test $RC != 0 ; then 656*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 6572de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6582de962bdSlukem exit $RC 6592de962bdSlukemfi 6602de962bdSlukem 661*e670fd5cSchristos# check consumer contextCSN 6622de962bdSlukem 6632de962bdSlukemfor i in 1 2 3 4 5; do 6644e6df137Slukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 6654e6df137Slukem sleep $SLEEP1 6662de962bdSlukem 667*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 668*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 6692de962bdSlukem RC=$? 6702de962bdSlukem 6712de962bdSlukem if test $RC != 0 ; then 672*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 6732de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6742de962bdSlukem exit $RC 6752de962bdSlukem fi 6762de962bdSlukem 677*e670fd5cSchristos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 6782de962bdSlukem 6792de962bdSlukem if test $? = 0 ; then 6802de962bdSlukem break 6812de962bdSlukem fi 6822de962bdSlukemdone 6832de962bdSlukem 684*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 685*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 686*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 6872de962bdSlukemRC=$? 6882de962bdSlukem 6892de962bdSlukemif test $RC != 0 ; then 690*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 6912de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 6922de962bdSlukem exit $RC 6932de962bdSlukemfi 6942de962bdSlukem 695*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the consumer..." 696*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 697*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 6982de962bdSlukemRC=$? 6992de962bdSlukem 7002de962bdSlukemif test $RC != 0 ; then 701*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 7022de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 7032de962bdSlukem exit $RC 7042de962bdSlukemfi 7052de962bdSlukem 706*e670fd5cSchristos#echo "Filtering provider results..." 707*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 708*e670fd5cSchristos#echo "Filtering consumer results..." 709*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 7102de962bdSlukem 711*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and consumer..." 712*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 7132de962bdSlukem 7142de962bdSlukemif test $? != 0 ; then 7152de962bdSlukem # FIXME: keep the original workaround in place, in case we needed again 7162de962bdSlukem if test 1 = 1 ; then 717*e670fd5cSchristos echo "test failed - provider and consumer databases differ" 7182de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 7192de962bdSlukem exit 1 7202de962bdSlukem fi 7212de962bdSlukem 722*e670fd5cSchristos echo " test failed - provider and consumer databases differ (ignored by now)" 7232de962bdSlukem echo " Stopping proxy to see if it auto-recovers..." 7242de962bdSlukem kill -HUP $PROXYPID 7252de962bdSlukem wait $PROXYPID 7262de962bdSlukem 7272de962bdSlukem echo " ${CHECK}.1 > Restarting proxy..." 7282de962bdSlukem echo "======================= RESTART =======================" >> $LOG3 729*e670fd5cSchristos $SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 & 7302de962bdSlukem PROXYPID=$! 7312de962bdSlukem if test $WAIT != 0 ; then 7322de962bdSlukem echo PROXYPID $PROXYPID 7332de962bdSlukem read foo 7342de962bdSlukem fi 735*e670fd5cSchristos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 7362de962bdSlukem 7374e6df137Slukem echo " Waiting $SLEEP2 seconds for syncrepl to receive changes..." 7384e6df137Slukem sleep $SLEEP2 7392de962bdSlukem 740*e670fd5cSchristos #echo "Using ldapsearch to read all the entries from the consumer..." 741*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 742*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.5.1" 2>&1 7432de962bdSlukem RC=$? 7442de962bdSlukem 7452de962bdSlukem if test $RC != 0 ; then 746*e670fd5cSchristos echo " ldapsearch failed at consumer ($RC)!" 7472de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 7482de962bdSlukem exit $RC 7492de962bdSlukem fi 7502de962bdSlukem 751*e670fd5cSchristos #echo "Filtering consumer results..." 752*e670fd5cSchristos $LDIFFILTER < "${CONSUMEROUT}.5.1" > $CONSUMERFLT 7532de962bdSlukem 754*e670fd5cSchristos echo " ${CHECK}.1 < Comparing retrieved entries from provider and consumer..." 755*e670fd5cSchristos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 7562de962bdSlukem 7572de962bdSlukem if test $? != 0 ; then 758*e670fd5cSchristos echo " test failed - provider and consumer databases differ" 7592de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 7602de962bdSlukem exit 1 7612de962bdSlukem fi 7622de962bdSlukemfi 7632de962bdSlukem 7642de962bdSlukem# 7652de962bdSlukem# Modifications formerly known to fail 7662de962bdSlukem# 7672de962bdSlukemCHECK=`expr $CHECK + 1` 7682de962bdSlukemecho "$CHECK > Performing modifications that were formerly known to fail..." 769*e670fd5cSchristos$LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \ 7702de962bdSlukem $TESTOUT 2>&1 << EOMODS 7712de962bdSlukem# First, back out previous change 7722de962bdSlukemdn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 7732de962bdSlukemchangetype: modify 7742de962bdSlukemdelete: drink 7752de962bdSlukemdrink: Mad Dog 20/20 7762de962bdSlukem 7772de962bdSlukem# From now on, perform modifications that were formerly known to fail 7782de962bdSlukemdn: cn=All Staff,ou=Groups,dc=example,dc=com 7792de962bdSlukemchangetype: modify 7802de962bdSlukemdelete: description 7812de962bdSlukem 7822de962bdSlukemEOMODS 7832de962bdSlukem 7842de962bdSlukemRC=$? 7852de962bdSlukemif test $RC != 0 ; then 7862de962bdSlukem echo "ldapmodify failed ($RC)!" 7872de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 7882de962bdSlukem exit $RC 7892de962bdSlukemfi 7902de962bdSlukem 791*e670fd5cSchristos# get provider contextCSN 792*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 793*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 7942de962bdSlukemRC=$? 7952de962bdSlukemif test $RC != 0 ; then 796*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 7972de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 7982de962bdSlukem exit $RC 7992de962bdSlukemfi 8002de962bdSlukem 801*e670fd5cSchristos# check consumer contextCSN 8022de962bdSlukemsleep 1 8032de962bdSlukemfor i in 1 2 3; do 804*e670fd5cSchristos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 805*e670fd5cSchristos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 8062de962bdSlukem RC=$? 8072de962bdSlukem 8082de962bdSlukem if test $RC != 0 ; then 809*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 8102de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 8112de962bdSlukem exit $RC 8122de962bdSlukem fi 8132de962bdSlukem 814*e670fd5cSchristos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 8152de962bdSlukem 8162de962bdSlukem if test $? = 0 ; then 8172de962bdSlukem break 8182de962bdSlukem fi 8192de962bdSlukem 8204e6df137Slukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 8214e6df137Slukem sleep $SLEEP1 8222de962bdSlukemdone 8232de962bdSlukem 824*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the provider..." 825*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 826*e670fd5cSchristos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 8272de962bdSlukemRC=$? 8282de962bdSlukem 8292de962bdSlukemif test $RC != 0 ; then 830*e670fd5cSchristos echo "ldapsearch failed at provider ($RC)!" 8312de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 8322de962bdSlukem exit $RC 8332de962bdSlukemfi 8342de962bdSlukem 835*e670fd5cSchristos#echo "Using ldapsearch to read all the entries from the consumer..." 836*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 837*e670fd5cSchristos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 8382de962bdSlukemRC=$? 8392de962bdSlukem 8402de962bdSlukemif test $RC != 0 ; then 841*e670fd5cSchristos echo "ldapsearch failed at consumer ($RC)!" 8422de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 8432de962bdSlukem exit $RC 8442de962bdSlukemfi 8452de962bdSlukem 846*e670fd5cSchristos#echo "Filtering provider results..." 847*e670fd5cSchristos$LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 848*e670fd5cSchristos#echo "Filtering consumer results..." 849*e670fd5cSchristos$LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 8502de962bdSlukem 851*e670fd5cSchristosecho "$CHECK < Comparing retrieved entries from provider and consumer..." 852*e670fd5cSchristos$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 8532de962bdSlukem 8542de962bdSlukemif test $? != 0 ; then 855*e670fd5cSchristos echo "test failed - provider and consumer databases differ (ignored by now)" 856*e670fd5cSchristos #echo "test failed - provider and consumer databases differ" 8572de962bdSlukem #test $KILLSERVERS != no && kill -HUP $KILLPIDS 8582de962bdSlukem #exit 1 8592de962bdSlukemfi 8602de962bdSlukem 8612de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 8622de962bdSlukem 8632de962bdSlukemecho ">>>>> Test succeeded" 8642de962bdSlukem 8652de962bdSlukemtest $KILLSERVERS != no && wait 8662de962bdSlukem 8672de962bdSlukemexit 0 868