From a1d98cf0fbab7cb5b1ede8c5f4672b75a4676a6d Mon Sep 17 00:00:00 2001 From: Rein Tollevik Date: Mon, 27 Jun 2011 14:17:39 +0200 Subject: [PATCH] ITS#6716 Extend test where consumer/provider holds CSNs with differing SIDs. --- tests/scripts/test058-syncrepl-asymmetric | 65 ++++++++++++++++++++++- 1 file changed, 63 insertions(+), 2 deletions(-) diff --git a/tests/scripts/test058-syncrepl-asymmetric b/tests/scripts/test058-syncrepl-asymmetric index 2326b3df9d..3fb74b1420 100755 --- a/tests/scripts/test058-syncrepl-asymmetric +++ b/tests/scripts/test058-syncrepl-asymmetric @@ -134,6 +134,8 @@ SS1_DIR=$TESTDIR/ss1 SS2_DIR=$TESTDIR/ss2 SSC_DIR=$TESTDIR/ssc +MNUM=1 + mkdir -p $TESTDIR for dir in $SMC_DIR $SM1_DIR $SM2_DIR $SS1_DIR $SS2_DIR $SSC_DIR; do @@ -979,6 +981,29 @@ if test $RC != 0 ; then exit $RC fi +# Test for ITS#6716, modify on central master to ensure that the CSN +# order is "sid2 < sid3 < sid1". When site1 master starts it is likely +# to sync with central master before it syncs with site1 master. When +# central master syncs with site1 master they will share the sid1 and +# sid3 CSNs, the additonal sid2 CSN hold by site1 master will be the +# oldest. Central master will not receive the changes made on site1 +# master unless it completely ignores the CSNs presented by central +# master. +echo "Using ldapmodify to modify central master..." +$LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD <> $TESTOUT 2>&1 +dn: dc=example,dc=com +changetype: modify +add: description +description: Modify$MNUM + +EOF +RC=$? +if test $RC != 0 ; then + echo "ldapmodify failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + if test -z "$SM1_PID" ; then echo "Restarting site1 master slapd on TCP/IP port $PORT2..." cd $SM1_DIR @@ -1027,6 +1052,44 @@ if test $RC != 0 ; then exit $RC fi +echo "Using ldapsearch to check that site1 master received central master update..." +RC=32 +for i in 1 2 3 4 5; do + RESULT=`$LDAPSEARCH -H $URI2 \ + -s base -b "$BASEDN" \ + "(description=Modify$MNUM)" 2>&1 | awk '/^dn:/ {print "OK"}'` + if test "x$RESULT$nullOK" = "xOK" ; then + RC=0 + break + fi + echo "Waiting $i seconds for syncrepl to receive changes..." + sleep $i +done +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +echo "Using ldapsearch to check that site2 master received central master update..." +RC=32 +for i in 1 2 3 4 5; do + RESULT=`$LDAPSEARCH -H $URI3 \ + -s base -b "$BASEDN" \ + "(description=Modify$MNUM)" 2>&1 | awk '/^dn:/ {print "OK"}'` + if test "x$RESULT$nullOK" = "xOK" ; then + RC=0 + break + fi + echo "Waiting $i seconds for syncrepl to receive changes..." + sleep $i +done +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + # Test done, now some more intialization... echo "Adding syncrepl consumer on central search..." @@ -1519,8 +1582,6 @@ chmod +x $TESTDIR/checkcsn.sh echo "Checking contextCSN after initial replication..." . $TESTDIR/checkcsn.sh -MNUM=1 - # TEST: # Test that updates to the first backend on central master, which should # be replicated to all servers actually is so, and that the contextCSN is -- 2.39.5