From: Rein Tollevik Date: Mon, 27 Jun 2011 12:17:39 +0000 (+0200) Subject: ITS#6716 Extend test where consumer/provider holds CSNs with differing SIDs. X-Git-Tag: OPENLDAP_REL_ENG_2_5_0ALPHA~1312 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=62861cae0ebc17a2538e51e8923b4d999076177a;p=thirdparty%2Fopenldap.git ITS#6716 Extend test where consumer/provider holds CSNs with differing SIDs. --- diff --git a/tests/scripts/test058-syncrepl-asymmetric b/tests/scripts/test058-syncrepl-asymmetric index 6f85720bd0..3fb74b1420 100755 --- a/tests/scripts/test058-syncrepl-asymmetric +++ b/tests/scripts/test058-syncrepl-asymmetric @@ -116,8 +116,8 @@ if test "$BACKEND" = ldif ; then exit 0 fi -echo "Test 058 is currently disabled" -exit 0 +#echo "Test 058 is currently disabled" +#exit 0 echo "running defines.sh" . $SRCDIR/scripts/defines.sh @@ -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