Home | History | Annotate | Line # | Download | only in scripts
      1       1.1     lukem #! /bin/sh
      2   1.1.1.4      tron # $OpenLDAP$
      3       1.1     lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4       1.1     lukem ##
      5  1.1.1.10  christos ## Copyright 1998-2024 The OpenLDAP Foundation.
      6       1.1     lukem ## All rights reserved.
      7       1.1     lukem ##
      8       1.1     lukem ## Redistribution and use in source and binary forms, with or without
      9       1.1     lukem ## modification, are permitted only as authorized by the OpenLDAP
     10       1.1     lukem ## Public License.
     11       1.1     lukem ##
     12       1.1     lukem ## A copy of this license is available in the file LICENSE in the
     13       1.1     lukem ## top-level directory of the distribution or, alternatively, at
     14       1.1     lukem ## <http://www.OpenLDAP.org/license.html>.
     15       1.1     lukem 
     16       1.1     lukem 
     17       1.1     lukem # test now handles known issues
     18       1.1     lukem #if test x"$PROXYSYNC" = x ; then
     19       1.1     lukem #	echo "Test disabled; set PROXYSYNC=yes to enable"
     20       1.1     lukem #	exit 0
     21       1.1     lukem #fi
     22       1.1     lukem 
     23       1.1     lukem echo "running defines.sh"
     24       1.1     lukem . $SRCDIR/scripts/defines.sh
     25       1.1     lukem 
     26       1.1     lukem if test $BACKLDAP = ldapno; then 
     27       1.1     lukem 	echo "LDAP backend not available, test skipped"
     28       1.1     lukem 	exit 0
     29       1.1     lukem fi 
     30       1.1     lukem 
     31       1.1     lukem if test $SYNCPROV = syncprovno; then 
     32       1.1     lukem 	echo "Syncrepl provider overlay not available, test skipped"
     33       1.1     lukem 	exit 0
     34       1.1     lukem fi 
     35       1.1     lukem 
     36       1.1     lukem mkdir -p $TESTDIR $DBDIR1 $DBDIR2
     37       1.1     lukem 
     38       1.1     lukem #
     39       1.1     lukem # Test replication:
     40   1.1.1.9  christos # - start provider
     41   1.1.1.9  christos # - start consumer
     42       1.1     lukem # - populate over ldap
     43       1.1     lukem # - perform some modifies and deleted
     44   1.1.1.9  christos # - attempt to modify the consumer (referral or chain)
     45       1.1     lukem # - retrieve database over ldap and compare against expected results
     46       1.1     lukem #
     47       1.1     lukem 
     48   1.1.1.9  christos echo "Starting provider slapd on TCP/IP port $PORT1..."
     49   1.1.1.9  christos . $CONFFILTER $BACKEND < $SRPROVIDERCONF > $CONF1
     50   1.1.1.9  christos $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     51   1.1.1.9  christos PROVIDERPID=$!
     52       1.1     lukem if test $WAIT != 0 ; then
     53   1.1.1.9  christos     echo PROVIDERPID $PROVIDERPID
     54       1.1     lukem     read foo
     55       1.1     lukem fi
     56   1.1.1.9  christos KILLPIDS="$PROVIDERPID"
     57       1.1     lukem 
     58       1.1     lukem sleep 1
     59       1.1     lukem 
     60   1.1.1.9  christos echo "Using ldapsearch to check that provider slapd is running..."
     61       1.1     lukem for i in 0 1 2 3 4 5; do
     62   1.1.1.9  christos 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
     63       1.1     lukem 		'(objectClass=*)' > /dev/null 2>&1
     64       1.1     lukem 	RC=$?
     65       1.1     lukem 	if test $RC = 0 ; then
     66       1.1     lukem 		break
     67       1.1     lukem 	fi
     68       1.1     lukem 	echo "Waiting 5 seconds for slapd to start..."
     69       1.1     lukem 	sleep 5
     70       1.1     lukem done
     71       1.1     lukem 
     72       1.1     lukem if test $RC != 0 ; then
     73       1.1     lukem 	echo "ldapsearch failed ($RC)!"
     74       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     75       1.1     lukem 	exit $RC
     76       1.1     lukem fi
     77       1.1     lukem 
     78   1.1.1.9  christos echo "Using ldapadd to create the context prefix entry in the provider..."
     79   1.1.1.9  christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
     80       1.1     lukem 	$LDIFORDEREDCP > /dev/null 2>&1
     81       1.1     lukem RC=$?
     82       1.1     lukem if test $RC != 0 ; then
     83       1.1     lukem 	echo "ldapadd failed ($RC)!"
     84       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     85       1.1     lukem 	exit $RC
     86       1.1     lukem fi
     87       1.1     lukem 
     88   1.1.1.9  christos echo "Starting consumer slapd on TCP/IP port $PORT2..."
     89   1.1.1.9  christos . $CONFFILTER $BACKEND < $RCONSUMERCONF > $CONF2
     90   1.1.1.9  christos $SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
     91   1.1.1.9  christos CONSUMERPID=$!
     92       1.1     lukem if test $WAIT != 0 ; then
     93   1.1.1.9  christos     echo CONSUMERPID $CONSUMERPID
     94       1.1     lukem     read foo
     95       1.1     lukem fi
     96   1.1.1.9  christos KILLPIDS="$PROVIDERPID $CONSUMERPID"
     97       1.1     lukem 
     98       1.1     lukem sleep 1
     99       1.1     lukem 
    100   1.1.1.9  christos echo "Using ldapsearch to check that consumer slapd is running..."
    101       1.1     lukem for i in 0 1 2 3 4 5; do
    102   1.1.1.9  christos 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
    103       1.1     lukem 		'(objectClass=*)' > /dev/null 2>&1
    104       1.1     lukem 	RC=$?
    105       1.1     lukem 	if test $RC = 0 ; then
    106       1.1     lukem 		break
    107       1.1     lukem 	fi
    108       1.1     lukem 	echo "Waiting 5 seconds for slapd to start..."
    109       1.1     lukem 	sleep 5
    110       1.1     lukem done
    111       1.1     lukem 
    112       1.1     lukem if test $RC != 0 ; then
    113       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    114       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    115       1.1     lukem 	exit $RC
    116       1.1     lukem fi
    117       1.1     lukem 
    118       1.1     lukem echo "Starting proxy slapd on TCP/IP port $PORT3..."
    119   1.1.1.9  christos . $CONFFILTER $BACKEND < $PLSRCONSUMERCONF > $CONF3
    120   1.1.1.9  christos $SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 &
    121       1.1     lukem PROXYPID=$!
    122       1.1     lukem if test $WAIT != 0 ; then
    123       1.1     lukem     echo PROXYPID $PROXYPID
    124       1.1     lukem     read foo
    125       1.1     lukem fi
    126   1.1.1.9  christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID"
    127       1.1     lukem 
    128       1.1     lukem sleep 1
    129       1.1     lukem 
    130       1.1     lukem echo "Using ldapsearch to check that proxy slapd is running..."
    131       1.1     lukem for i in 0 1 2 3 4 5; do
    132   1.1.1.9  christos 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \
    133       1.1     lukem 		'(objectClass=*)' > /dev/null 2>&1
    134       1.1     lukem 	RC=$?
    135       1.1     lukem 	if test $RC = 0 || test $RC = 53 ; then
    136       1.1     lukem 		break
    137       1.1     lukem 	fi
    138       1.1     lukem 	echo "Waiting 5 seconds for slapd to start..."
    139       1.1     lukem 	sleep 5
    140       1.1     lukem done
    141       1.1     lukem 
    142       1.1     lukem case $RC in
    143       1.1     lukem 0 )
    144       1.1     lukem 	echo "ldapsearch should have failed ($RC)!"
    145       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    146  1.1.1.10  christos 	exit 1
    147       1.1     lukem 	;;
    148       1.1     lukem 53)
    149       1.1     lukem 	;;
    150       1.1     lukem *)
    151       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    152       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    153       1.1     lukem 	exit $RC
    154       1.1     lukem 	;;
    155       1.1     lukem esac
    156       1.1     lukem 
    157       1.1     lukem CHECK=1
    158   1.1.1.9  christos echo "$CHECK > Using ldapadd to populate the provider directory..."
    159   1.1.1.9  christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
    160       1.1     lukem 	$LDIFORDEREDNOCP > /dev/null 2>&1
    161       1.1     lukem RC=$?
    162       1.1     lukem if test $RC != 0 ; then
    163       1.1     lukem 	echo "ldapadd failed ($RC)!"
    164       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    165       1.1     lukem 	exit $RC
    166       1.1     lukem fi
    167       1.1     lukem 
    168   1.1.1.9  christos # get provider contextCSN
    169   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    170   1.1.1.9  christos 	-s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1
    171       1.1     lukem RC=$?
    172       1.1     lukem if test $RC != 0 ; then
    173   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    174       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    175       1.1     lukem 	exit $RC
    176       1.1     lukem fi
    177       1.1     lukem 
    178   1.1.1.9  christos # check consumer contextCSN
    179       1.1     lukem sleep 1
    180       1.1     lukem for i in 1 2 3; do
    181   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    182   1.1.1.9  christos 		-s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1
    183       1.1     lukem 	RC=$?
    184       1.1     lukem 
    185       1.1     lukem 	if test $RC != 0 ; then
    186   1.1.1.9  christos 		echo "ldapsearch failed at consumer ($RC)!"
    187       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    188       1.1     lukem 		exit $RC
    189       1.1     lukem 	fi
    190       1.1     lukem 
    191   1.1.1.9  christos 	$CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT
    192       1.1     lukem 
    193       1.1     lukem 	if test $? = 0 ; then
    194       1.1     lukem 		break
    195       1.1     lukem 	fi
    196       1.1     lukem 
    197   1.1.1.2     lukem 	echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
    198   1.1.1.2     lukem 	sleep $SLEEP1
    199       1.1     lukem done
    200       1.1     lukem 
    201   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the provider..."
    202   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    203   1.1.1.9  christos 	'(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1
    204       1.1     lukem RC=$?
    205       1.1     lukem 
    206       1.1     lukem if test $RC != 0 ; then
    207   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    208       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    209       1.1     lukem 	exit $RC
    210       1.1     lukem fi
    211       1.1     lukem 
    212   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the consumer..."
    213   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    214   1.1.1.9  christos 	'(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1
    215       1.1     lukem RC=$?
    216       1.1     lukem 
    217       1.1     lukem if test $RC != 0 ; then
    218   1.1.1.9  christos 	echo "ldapsearch failed at consumer ($RC)!"
    219       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    220       1.1     lukem 	exit $RC
    221       1.1     lukem fi
    222       1.1     lukem 
    223   1.1.1.9  christos #echo "Filtering provider results..."
    224   1.1.1.9  christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT
    225   1.1.1.9  christos #echo "Filtering consumer results..."
    226   1.1.1.9  christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT
    227       1.1     lukem 
    228   1.1.1.9  christos echo "$CHECK < Comparing retrieved entries from provider and consumer..."
    229   1.1.1.9  christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    230       1.1     lukem 
    231       1.1     lukem if test $? != 0 ; then
    232   1.1.1.9  christos 	echo "test failed - provider and consumer databases differ"
    233       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    234       1.1     lukem 	exit 1
    235       1.1     lukem fi
    236       1.1     lukem 
    237       1.1     lukem CHECK=`expr $CHECK + 1`
    238   1.1.1.2     lukem echo "$CHECK > Stopping the provider, sleeping $SLEEP2 seconds and restarting it..."
    239   1.1.1.9  christos kill -HUP "$PROVIDERPID"
    240   1.1.1.9  christos wait $PROVIDERPID
    241   1.1.1.2     lukem sleep $SLEEP2
    242       1.1     lukem 
    243       1.1     lukem echo "======================= RESTART =======================" >> $LOG1
    244   1.1.1.9  christos $SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 &
    245   1.1.1.9  christos PROVIDERPID=$!
    246       1.1     lukem if test $WAIT != 0 ; then
    247   1.1.1.9  christos     echo PROVIDERPID $PROVIDERPID
    248       1.1     lukem     read foo
    249       1.1     lukem fi
    250   1.1.1.9  christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID"
    251       1.1     lukem 
    252       1.1     lukem sleep 1
    253       1.1     lukem 
    254   1.1.1.9  christos echo "Using ldapsearch to check that provider slapd is running..."
    255       1.1     lukem for i in 0 1 2 3 4 5; do
    256   1.1.1.9  christos 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
    257       1.1     lukem 		'(objectClass=*)' > /dev/null 2>&1
    258       1.1     lukem 	RC=$?
    259       1.1     lukem 	if test $RC = 0 ; then
    260       1.1     lukem 		break
    261       1.1     lukem 	fi
    262       1.1     lukem 	echo "Waiting 5 seconds for slapd to start..."
    263       1.1     lukem 	sleep 5
    264       1.1     lukem done
    265       1.1     lukem 
    266       1.1     lukem if test $RC != 0 ; then
    267       1.1     lukem 	echo "ldapsearch failed ($RC)!"
    268       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    269       1.1     lukem 	exit $RC
    270       1.1     lukem fi
    271       1.1     lukem 
    272   1.1.1.9  christos echo "Using ldapmodify to modify provider directory..."
    273       1.1     lukem 
    274       1.1     lukem #
    275       1.1     lukem # Do some modifications
    276       1.1     lukem #
    277       1.1     lukem 
    278   1.1.1.9  christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
    279       1.1     lukem 	$TESTOUT 2>&1 << EOMODS
    280       1.1     lukem dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
    281       1.1     lukem changetype: modify
    282       1.1     lukem add: drink
    283       1.1     lukem drink: Orange Juice
    284       1.1     lukem -
    285       1.1     lukem delete: sn
    286       1.1     lukem sn: Jones
    287       1.1     lukem -
    288       1.1     lukem add: sn
    289       1.1     lukem sn: Jones
    290       1.1     lukem 
    291       1.1     lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
    292       1.1     lukem changetype: modify
    293       1.1     lukem replace: drink
    294       1.1     lukem drink: Iced Tea
    295       1.1     lukem 
    296       1.1     lukem dn: cn=ITD Staff,ou=Groups,dc=example,dc=com
    297       1.1     lukem changetype: modify
    298       1.1     lukem delete: uniquemember
    299       1.1     lukem uniquemember: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com
    300       1.1     lukem uniquemember: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
    301       1.1     lukem -
    302       1.1     lukem add: uniquemember
    303       1.1     lukem uniquemember: cn=Dorothy Stevens, ou=Alumni Association, ou=People, dc=example,dc=com
    304       1.1     lukem uniquemember: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
    305       1.1     lukem 
    306       1.1     lukem dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc
    307       1.1     lukem  =com
    308       1.1     lukem changetype: modify
    309       1.1     lukem delete: cn
    310       1.1     lukem cn: Biiff Jensen
    311       1.1     lukem 
    312       1.1     lukem dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
    313       1.1     lukem changetype: add
    314       1.1     lukem objectclass: OpenLDAPperson
    315       1.1     lukem cn: Gern Jensen
    316       1.1     lukem sn: Jensen
    317       1.1     lukem uid: gjensen
    318       1.1     lukem title: Chief Investigator, ITD
    319       1.1     lukem postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
    320       1.1     lukem seealso: cn=All Staff, ou=Groups, dc=example,dc=com
    321       1.1     lukem drink: Coffee
    322       1.1     lukem homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
    323       1.1     lukem description: Very odd
    324       1.1     lukem facsimiletelephonenumber: +1 313 555 7557
    325       1.1     lukem telephonenumber: +1 313 555 8343
    326       1.1     lukem mail: gjensen@mailgw.example.com
    327       1.1     lukem homephone: +1 313 555 8844
    328       1.1     lukem 
    329       1.1     lukem dn: ou=Retired, ou=People, dc=example,dc=com
    330       1.1     lukem changetype: add
    331       1.1     lukem objectclass: organizationalUnit
    332       1.1     lukem ou: Retired
    333       1.1     lukem 
    334       1.1     lukem dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com
    335       1.1     lukem changetype: add
    336       1.1     lukem objectclass: OpenLDAPperson
    337       1.1     lukem cn: Rosco P. Coltrane
    338       1.1     lukem sn: Coltrane
    339       1.1     lukem uid: rosco
    340       1.1     lukem description: Fat tycoon
    341       1.1     lukem 
    342       1.1     lukem dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com
    343       1.1     lukem changetype: modrdn
    344       1.1     lukem newrdn: cn=Rosco P. Coltrane
    345       1.1     lukem deleteoldrdn: 1
    346       1.1     lukem newsuperior: ou=Retired, ou=People, dc=example,dc=com
    347       1.1     lukem 
    348       1.1     lukem dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com
    349       1.1     lukem changetype: delete
    350       1.1     lukem EOMODS
    351       1.1     lukem 
    352       1.1     lukem RC=$?
    353       1.1     lukem if test $RC != 0 ; then
    354       1.1     lukem 	echo "ldapmodify failed ($RC)!"
    355       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    356       1.1     lukem 	exit $RC
    357       1.1     lukem fi
    358       1.1     lukem 
    359   1.1.1.9  christos # get provider contextCSN
    360   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    361   1.1.1.9  christos 	-s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1
    362       1.1     lukem RC=$?
    363       1.1     lukem if test $RC != 0 ; then
    364   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    365       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    366       1.1     lukem 	exit $RC
    367       1.1     lukem fi
    368       1.1     lukem 
    369   1.1.1.9  christos # check consumer contextCSN
    370       1.1     lukem for i in 1 2 3; do
    371   1.1.1.2     lukem 	echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
    372   1.1.1.2     lukem 	sleep $SLEEP1
    373       1.1     lukem 
    374   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    375   1.1.1.9  christos 		-s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1
    376       1.1     lukem 	RC=$?
    377       1.1     lukem 
    378       1.1     lukem 	if test $RC != 0 ; then
    379   1.1.1.9  christos 		echo "ldapsearch failed at consumer ($RC)!"
    380       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    381       1.1     lukem 		exit $RC
    382       1.1     lukem 	fi
    383       1.1     lukem 
    384   1.1.1.9  christos 	$CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT
    385       1.1     lukem 
    386       1.1     lukem 	if test $? = 0 ; then
    387       1.1     lukem 		break
    388       1.1     lukem 	fi
    389       1.1     lukem done
    390       1.1     lukem 
    391   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the provider..."
    392   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    393   1.1.1.9  christos 	'(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1
    394       1.1     lukem RC=$?
    395       1.1     lukem 
    396       1.1     lukem if test $RC != 0 ; then
    397   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    398       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    399       1.1     lukem 	exit $RC
    400       1.1     lukem fi
    401       1.1     lukem 
    402   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the consumer..."
    403   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    404   1.1.1.9  christos 	'(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1
    405       1.1     lukem RC=$?
    406       1.1     lukem 
    407       1.1     lukem if test $RC != 0 ; then
    408   1.1.1.9  christos 	echo "ldapsearch failed at consumer ($RC)!"
    409       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    410       1.1     lukem 	exit $RC
    411       1.1     lukem fi
    412       1.1     lukem 
    413   1.1.1.9  christos #echo "Filtering provider results..."
    414   1.1.1.9  christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT
    415   1.1.1.9  christos #echo "Filtering consumer results..."
    416   1.1.1.9  christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT
    417       1.1     lukem 
    418   1.1.1.9  christos echo "$CHECK < Comparing retrieved entries from provider and consumer..."
    419   1.1.1.9  christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    420       1.1     lukem 
    421       1.1     lukem if test $? != 0 ; then
    422   1.1.1.9  christos 	echo "test failed - provider and consumer databases differ"
    423       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    424       1.1     lukem 	exit 1
    425       1.1     lukem fi
    426       1.1     lukem 
    427       1.1     lukem CHECK=`expr $CHECK + 1`
    428       1.1     lukem echo "$CHECK > Stopping proxy to test recovery..."
    429       1.1     lukem kill -HUP $PROXYPID
    430       1.1     lukem wait $PROXYPID
    431       1.1     lukem 
    432   1.1.1.9  christos echo "Modifying more entries on the provider..."
    433   1.1.1.9  christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \
    434       1.1     lukem 	$TESTOUT 2>&1 << EOMODS
    435       1.1     lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
    436       1.1     lukem changetype: modify
    437       1.1     lukem add: description
    438       1.1     lukem description: proxy is down...
    439       1.1     lukem 
    440       1.1     lukem dn: cn=James T. Kirk, ou=Retired, ou=People, dc=example,dc=com
    441       1.1     lukem changetype: add
    442       1.1     lukem objectclass: OpenLDAPperson
    443       1.1     lukem sn: Kirk
    444       1.1     lukem uid: jtk
    445       1.1     lukem cn: James T. Kirk
    446       1.1     lukem 
    447       1.1     lukem dn: cn=Tiberius J. Hooker, ou=Retired, ou=People, dc=example,dc=com
    448       1.1     lukem changetype: add
    449       1.1     lukem objectclass: OpenLDAPperson
    450       1.1     lukem sn: Hooker
    451       1.1     lukem uid: tjh
    452       1.1     lukem cn: Tiberius J. Hooker
    453       1.1     lukem 
    454       1.1     lukem EOMODS
    455       1.1     lukem 
    456       1.1     lukem echo "Restarting proxy..."
    457       1.1     lukem echo "======================= RESTART =======================" >> $LOG3
    458   1.1.1.9  christos $SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 &
    459       1.1     lukem PROXYPID=$!
    460       1.1     lukem if test $WAIT != 0 ; then
    461       1.1     lukem     echo PROXYPID $PROXYPID
    462       1.1     lukem     read foo
    463       1.1     lukem fi
    464   1.1.1.9  christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID"
    465       1.1     lukem 
    466   1.1.1.9  christos # get provider contextCSN
    467   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    468   1.1.1.9  christos 	-s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1
    469       1.1     lukem RC=$?
    470       1.1     lukem if test $RC != 0 ; then
    471   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    472       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    473       1.1     lukem 	exit $RC
    474       1.1     lukem fi
    475       1.1     lukem 
    476   1.1.1.9  christos # check consumer contextCSN
    477       1.1     lukem for i in 1 2 3 4 5; do
    478   1.1.1.2     lukem 	echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
    479   1.1.1.2     lukem 	sleep $SLEEP1
    480       1.1     lukem 
    481   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    482   1.1.1.9  christos 		-s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1
    483       1.1     lukem 	RC=$?
    484       1.1     lukem 
    485       1.1     lukem 	if test $RC != 0 ; then
    486   1.1.1.9  christos 		echo "ldapsearch failed at consumer ($RC)!"
    487       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    488       1.1     lukem 		exit $RC
    489       1.1     lukem 	fi
    490       1.1     lukem 
    491   1.1.1.9  christos 	$CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT
    492       1.1     lukem 
    493       1.1     lukem 	if test $? = 0 ; then
    494       1.1     lukem 		break
    495       1.1     lukem 	fi
    496       1.1     lukem done
    497       1.1     lukem 
    498   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the provider..."
    499   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    500   1.1.1.9  christos 	'(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1
    501       1.1     lukem RC=$?
    502       1.1     lukem 
    503       1.1     lukem if test $RC != 0 ; then
    504   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    505       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    506       1.1     lukem 	exit $RC
    507       1.1     lukem fi
    508       1.1     lukem 
    509   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the consumer..."
    510   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    511   1.1.1.9  christos 	'(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1
    512       1.1     lukem RC=$?
    513       1.1     lukem 
    514       1.1     lukem if test $RC != 0 ; then
    515   1.1.1.9  christos 	echo "ldapsearch failed at consumer ($RC)!"
    516       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    517       1.1     lukem 	exit $RC
    518       1.1     lukem fi
    519       1.1     lukem 
    520   1.1.1.9  christos #echo "Filtering provider results..."
    521   1.1.1.9  christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT
    522   1.1.1.9  christos #echo "Filtering consumer results..."
    523   1.1.1.9  christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT
    524       1.1     lukem 
    525   1.1.1.9  christos echo "$CHECK < Comparing retrieved entries from provider and consumer..."
    526   1.1.1.9  christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    527       1.1     lukem 
    528       1.1     lukem if test $? != 0 ; then
    529   1.1.1.9  christos 	echo "test failed - provider and consumer databases differ"
    530       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    531       1.1     lukem 	exit 1
    532       1.1     lukem fi
    533       1.1     lukem 
    534       1.1     lukem CHECK=`expr $CHECK + 1`
    535   1.1.1.9  christos echo "$CHECK > Try updating the consumer slapd..."
    536   1.1.1.9  christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI2 -w $PASSWD > \
    537       1.1     lukem 	$TESTOUT 2>&1 << EOMODS
    538       1.1     lukem dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com
    539       1.1     lukem changetype: modify
    540       1.1     lukem add: description
    541       1.1     lukem description: This write must fail because directed to a shadow context,
    542       1.1     lukem description: unless the chain overlay is configured appropriately ;)
    543       1.1     lukem 
    544       1.1     lukem EOMODS
    545       1.1     lukem 
    546       1.1     lukem RC=$?
    547       1.1     lukem if test $RC != 0 ; then
    548       1.1     lukem 	echo "ldapmodify failed ($RC)!"
    549       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    550       1.1     lukem 	exit $RC
    551       1.1     lukem fi
    552       1.1     lukem 
    553   1.1.1.9  christos # get provider contextCSN
    554   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    555   1.1.1.9  christos 	-s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1
    556       1.1     lukem RC=$?
    557       1.1     lukem if test $RC != 0 ; then
    558   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    559       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    560       1.1     lukem 	exit $RC
    561       1.1     lukem fi
    562       1.1     lukem 
    563   1.1.1.9  christos # check consumer contextCSN
    564       1.1     lukem sleep 1
    565       1.1     lukem 
    566       1.1     lukem for i in 1 2 3; do
    567   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    568   1.1.1.9  christos 		-s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1
    569       1.1     lukem 	RC=$?
    570       1.1     lukem 
    571       1.1     lukem 	if test $RC != 0 ; then
    572   1.1.1.9  christos 		echo "ldapsearch failed at consumer ($RC)!"
    573       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    574       1.1     lukem 		exit $RC
    575       1.1     lukem 	fi
    576       1.1     lukem 
    577   1.1.1.9  christos 	$CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT
    578       1.1     lukem 
    579       1.1     lukem 	if test $? = 0 ; then
    580       1.1     lukem 		break
    581       1.1     lukem 	fi
    582       1.1     lukem 
    583   1.1.1.2     lukem 	echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
    584   1.1.1.2     lukem 	sleep $SLEEP1
    585       1.1     lukem done
    586       1.1     lukem 
    587   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the provider..."
    588   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    589   1.1.1.9  christos 	'(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1
    590       1.1     lukem RC=$?
    591       1.1     lukem 
    592       1.1     lukem if test $RC != 0 ; then
    593   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    594       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    595       1.1     lukem 	exit $RC
    596       1.1     lukem fi
    597       1.1     lukem 
    598   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the consumer..."
    599   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    600   1.1.1.9  christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1
    601       1.1     lukem RC=$?
    602       1.1     lukem 
    603       1.1     lukem if test $RC != 0 ; then
    604   1.1.1.9  christos 	echo "ldapsearch failed at consumer ($RC)!"
    605       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    606       1.1     lukem 	exit $RC
    607       1.1     lukem fi
    608       1.1     lukem 
    609   1.1.1.9  christos #echo "Filtering provider results..."
    610   1.1.1.9  christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT
    611   1.1.1.9  christos #echo "Filtering consumer results..."
    612   1.1.1.9  christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT
    613       1.1     lukem 
    614   1.1.1.9  christos echo "$CHECK < Comparing retrieved entries from provider and consumer..."
    615   1.1.1.9  christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    616       1.1     lukem 
    617       1.1     lukem if test $? != 0 ; then
    618   1.1.1.9  christos 	echo "test failed - provider and consumer databases differ"
    619       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    620       1.1     lukem 	exit 1
    621       1.1     lukem fi
    622       1.1     lukem 
    623       1.1     lukem CHECK=`expr $CHECK + 1`
    624       1.1     lukem echo "$CHECK > Stopping consumer to test recovery..."
    625   1.1.1.9  christos kill -HUP $CONSUMERPID
    626   1.1.1.9  christos wait $CONSUMERPID
    627       1.1     lukem 
    628   1.1.1.9  christos echo "Modifying more entries on the provider..."
    629   1.1.1.9  christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \
    630       1.1     lukem 	$TESTOUT 2>&1 << EOMODS
    631       1.1     lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
    632       1.1     lukem changetype: modify
    633       1.1     lukem add: drink
    634       1.1     lukem drink: Mad Dog 20/20
    635       1.1     lukem 
    636       1.1     lukem EOMODS
    637       1.1     lukem 
    638   1.1.1.2     lukem echo "Waiting $SLEEP2 seconds for syncrepl to retry..."
    639   1.1.1.2     lukem sleep $SLEEP2
    640       1.1     lukem 
    641       1.1     lukem echo "Restarting consumer..."
    642       1.1     lukem echo "======================= RESTART =======================" >> $LOG2
    643   1.1.1.9  christos $SLAPD -f $CONF2 -h $URI2 -d $LVL >> $LOG2 2>&1 &
    644   1.1.1.9  christos CONSUMERPID=$!
    645       1.1     lukem if test $WAIT != 0 ; then
    646   1.1.1.9  christos     echo CONSUMERPID $CONSUMERPID
    647       1.1     lukem     read foo
    648       1.1     lukem fi
    649   1.1.1.9  christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID"
    650       1.1     lukem 
    651   1.1.1.9  christos # get provider contextCSN
    652   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    653   1.1.1.9  christos 	-s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1
    654       1.1     lukem RC=$?
    655       1.1     lukem if test $RC != 0 ; then
    656   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    657       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    658       1.1     lukem 	exit $RC
    659       1.1     lukem fi
    660       1.1     lukem 
    661   1.1.1.9  christos # check consumer contextCSN
    662       1.1     lukem 
    663       1.1     lukem for i in 1 2 3 4 5; do
    664   1.1.1.2     lukem 	echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
    665   1.1.1.2     lukem 	sleep $SLEEP1
    666       1.1     lukem 
    667   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    668   1.1.1.9  christos 		-s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1
    669       1.1     lukem 	RC=$?
    670       1.1     lukem 
    671       1.1     lukem 	if test $RC != 0 ; then
    672   1.1.1.9  christos 		echo "ldapsearch failed at consumer ($RC)!"
    673       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    674       1.1     lukem 		exit $RC
    675       1.1     lukem 	fi
    676       1.1     lukem 
    677   1.1.1.9  christos 	$CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT
    678       1.1     lukem 
    679       1.1     lukem 	if test $? = 0 ; then
    680       1.1     lukem 		break
    681       1.1     lukem 	fi
    682       1.1     lukem done
    683       1.1     lukem 
    684   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the provider..."
    685   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    686   1.1.1.9  christos 	'(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1
    687       1.1     lukem RC=$?
    688       1.1     lukem 
    689       1.1     lukem if test $RC != 0 ; then
    690   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    691       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    692       1.1     lukem 	exit $RC
    693       1.1     lukem fi
    694       1.1     lukem 
    695   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the consumer..."
    696   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    697   1.1.1.9  christos 	'(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1
    698       1.1     lukem RC=$?
    699       1.1     lukem 
    700       1.1     lukem if test $RC != 0 ; then
    701   1.1.1.9  christos 	echo "ldapsearch failed at consumer ($RC)!"
    702       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    703       1.1     lukem 	exit $RC
    704       1.1     lukem fi
    705       1.1     lukem 
    706   1.1.1.9  christos #echo "Filtering provider results..."
    707   1.1.1.9  christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT
    708   1.1.1.9  christos #echo "Filtering consumer results..."
    709   1.1.1.9  christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT
    710       1.1     lukem 
    711   1.1.1.9  christos echo "$CHECK < Comparing retrieved entries from provider and consumer..."
    712   1.1.1.9  christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    713       1.1     lukem 
    714       1.1     lukem if test $? != 0 ; then
    715       1.1     lukem 	# FIXME: keep the original workaround in place, in case we needed again
    716       1.1     lukem 	if test 1 = 1 ; then
    717   1.1.1.9  christos 		echo "test failed - provider and consumer databases differ"
    718       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    719       1.1     lukem 		exit 1
    720       1.1     lukem 	fi
    721       1.1     lukem 
    722   1.1.1.9  christos 	echo "	test failed - provider and consumer databases differ (ignored by now)"
    723       1.1     lukem 	echo "	Stopping proxy to see if it auto-recovers..."
    724       1.1     lukem 	kill -HUP $PROXYPID
    725       1.1     lukem 	wait $PROXYPID
    726       1.1     lukem 
    727       1.1     lukem 	echo "	${CHECK}.1 > Restarting proxy..."
    728       1.1     lukem 	echo "======================= RESTART =======================" >> $LOG3
    729   1.1.1.9  christos 	$SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 &
    730       1.1     lukem 	PROXYPID=$!
    731       1.1     lukem 	if test $WAIT != 0 ; then
    732       1.1     lukem 		echo PROXYPID $PROXYPID
    733       1.1     lukem 		read foo
    734       1.1     lukem 	fi
    735   1.1.1.9  christos 	KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID"
    736       1.1     lukem 
    737   1.1.1.2     lukem 	echo "	Waiting $SLEEP2 seconds for syncrepl to receive changes..."
    738   1.1.1.2     lukem 	sleep $SLEEP2
    739       1.1     lukem 
    740   1.1.1.9  christos 	#echo "Using ldapsearch to read all the entries from the consumer..."
    741   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    742   1.1.1.9  christos 		'(objectClass=*)' > "${CONSUMEROUT}.5.1" 2>&1
    743       1.1     lukem 	RC=$?
    744       1.1     lukem 
    745       1.1     lukem 	if test $RC != 0 ; then
    746   1.1.1.9  christos 		echo "	ldapsearch failed at consumer ($RC)!"
    747       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    748       1.1     lukem 		exit $RC
    749       1.1     lukem 	fi
    750       1.1     lukem 
    751   1.1.1.9  christos 	#echo "Filtering consumer results..."
    752   1.1.1.9  christos 	$LDIFFILTER < "${CONSUMEROUT}.5.1" > $CONSUMERFLT
    753       1.1     lukem 
    754   1.1.1.9  christos 	echo "	${CHECK}.1 < Comparing retrieved entries from provider and consumer..."
    755   1.1.1.9  christos 	$CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    756       1.1     lukem 
    757       1.1     lukem 	if test $? != 0 ; then
    758   1.1.1.9  christos 		echo "	test failed - provider and consumer databases differ"
    759       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    760       1.1     lukem 		exit 1
    761       1.1     lukem 	fi
    762       1.1     lukem fi
    763       1.1     lukem 
    764       1.1     lukem #
    765       1.1     lukem # Modifications formerly known to fail
    766       1.1     lukem #
    767       1.1     lukem CHECK=`expr $CHECK + 1`
    768       1.1     lukem echo "$CHECK > Performing modifications that were formerly known to fail..."
    769   1.1.1.9  christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
    770       1.1     lukem 	$TESTOUT 2>&1 << EOMODS
    771       1.1     lukem # First, back out previous change
    772       1.1     lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
    773       1.1     lukem changetype: modify
    774       1.1     lukem delete: drink
    775       1.1     lukem drink: Mad Dog 20/20
    776       1.1     lukem 
    777       1.1     lukem # From now on, perform modifications that were formerly known to fail
    778       1.1     lukem dn: cn=All Staff,ou=Groups,dc=example,dc=com
    779       1.1     lukem changetype: modify
    780       1.1     lukem delete: description
    781       1.1     lukem 
    782       1.1     lukem EOMODS
    783       1.1     lukem 
    784       1.1     lukem RC=$?
    785       1.1     lukem if test $RC != 0 ; then
    786       1.1     lukem 	echo "ldapmodify failed ($RC)!"
    787       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    788       1.1     lukem 	exit $RC
    789       1.1     lukem fi
    790       1.1     lukem 
    791   1.1.1.9  christos # get provider contextCSN
    792   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    793   1.1.1.9  christos 	-s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1
    794       1.1     lukem RC=$?
    795       1.1     lukem if test $RC != 0 ; then
    796   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    797       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    798       1.1     lukem 	exit $RC
    799       1.1     lukem fi
    800       1.1     lukem 
    801   1.1.1.9  christos # check consumer contextCSN
    802       1.1     lukem sleep 1
    803       1.1     lukem for i in 1 2 3; do
    804   1.1.1.9  christos 	$LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    805   1.1.1.9  christos 		-s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1
    806       1.1     lukem 	RC=$?
    807       1.1     lukem 
    808       1.1     lukem 	if test $RC != 0 ; then
    809   1.1.1.9  christos 		echo "ldapsearch failed at consumer ($RC)!"
    810       1.1     lukem 		test $KILLSERVERS != no && kill -HUP $KILLPIDS
    811       1.1     lukem 		exit $RC
    812       1.1     lukem 	fi
    813       1.1     lukem 
    814   1.1.1.9  christos 	$CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT
    815       1.1     lukem 
    816       1.1     lukem 	if test $? = 0 ; then
    817       1.1     lukem 		break
    818       1.1     lukem 	fi
    819       1.1     lukem 
    820   1.1.1.2     lukem 	echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
    821   1.1.1.2     lukem 	sleep $SLEEP1
    822       1.1     lukem done
    823       1.1     lukem 
    824   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the provider..."
    825   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
    826   1.1.1.9  christos 	'(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1
    827       1.1     lukem RC=$?
    828       1.1     lukem 
    829       1.1     lukem if test $RC != 0 ; then
    830   1.1.1.9  christos 	echo "ldapsearch failed at provider ($RC)!"
    831       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    832       1.1     lukem 	exit $RC
    833       1.1     lukem fi
    834       1.1     lukem 
    835   1.1.1.9  christos #echo "Using ldapsearch to read all the entries from the consumer..."
    836   1.1.1.9  christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
    837   1.1.1.9  christos 	'(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1
    838       1.1     lukem RC=$?
    839       1.1     lukem 
    840       1.1     lukem if test $RC != 0 ; then
    841   1.1.1.9  christos 	echo "ldapsearch failed at consumer ($RC)!"
    842       1.1     lukem 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    843       1.1     lukem 	exit $RC
    844       1.1     lukem fi
    845       1.1     lukem 
    846   1.1.1.9  christos #echo "Filtering provider results..."
    847   1.1.1.9  christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT
    848   1.1.1.9  christos #echo "Filtering consumer results..."
    849   1.1.1.9  christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT
    850       1.1     lukem 
    851   1.1.1.9  christos echo "$CHECK < Comparing retrieved entries from provider and consumer..."
    852   1.1.1.9  christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
    853       1.1     lukem 
    854       1.1     lukem if test $? != 0 ; then
    855   1.1.1.9  christos 	echo "test failed - provider and consumer databases differ (ignored by now)"
    856   1.1.1.9  christos 	#echo "test failed - provider and consumer databases differ"
    857       1.1     lukem 	#test $KILLSERVERS != no && kill -HUP $KILLPIDS
    858       1.1     lukem 	#exit 1
    859       1.1     lukem fi
    860       1.1     lukem 
    861       1.1     lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
    862       1.1     lukem 
    863       1.1     lukem echo ">>>>> Test succeeded"
    864       1.1     lukem 
    865       1.1     lukem test $KILLSERVERS != no && wait
    866       1.1     lukem 
    867       1.1     lukem exit 0
    868