From 465b19af47541588159d3d4c39c23ceee0374601 Mon Sep 17 00:00:00 2001 From: Gavin Henry Date: Mon, 19 Nov 2007 18:20:31 +0000 Subject: [PATCH] test050 extended to run with 3 slapd instances. Please test. --- tests/scripts/defines.sh | 2 + tests/scripts/test050-syncrepl-multimaster | 178 ++++++++++++++++++++- 2 files changed, 177 insertions(+), 3 deletions(-) diff --git a/tests/scripts/defines.sh b/tests/scripts/defines.sh index e2e611554d..7bfd2e6503 100755 --- a/tests/scripts/defines.sh +++ b/tests/scripts/defines.sh @@ -291,7 +291,9 @@ SERVER6FLT=$TESTDIR/server6.flt MASTEROUT=$SERVER1OUT MASTERFLT=$SERVER1FLT SLAVEOUT=$SERVER2OUT +SLAVE2OUT=$SERVER3OUT SLAVEFLT=$SERVER2FLT +SLAVE2FLT=$SERVER3FLT # original outputs for cmp PROXYCACHEOUT=$DATADIR/proxycache.out diff --git a/tests/scripts/test050-syncrepl-multimaster b/tests/scripts/test050-syncrepl-multimaster index ee2989c45d..8b2d4baee2 100755 --- a/tests/scripts/test050-syncrepl-multimaster +++ b/tests/scripts/test050-syncrepl-multimaster @@ -23,12 +23,15 @@ fi PRODIR=$TESTDIR/pro CONDIR=$TESTDIR/con +CONDIR2=$TESTDIR/con2 DBPRO=$PRODIR/db DBCON=$CONDIR/db +DBCON2=$CONDIR2/db CFPRO=$PRODIR/slapd.d CFCON=$CONDIR/slapd.d +CFCON2=$CONDIR2/slapd.d -mkdir -p $TESTDIR $PRODIR $CONDIR $DBPRO $DBCON $CFPRO $CFCON +mkdir -p $TESTDIR $PRODIR $CONDIR $CONDIR2 $DBPRO $DBCON $DBCON2 $CFPRO $CFCON $CFCON2 $SLAPPASSWD -g -n >$CONFIGPWF @@ -36,6 +39,7 @@ $SLAPPASSWD -g -n >$CONFIGPWF # Test replication of dynamic config: # - start producer # - start consumer +# - start consumer2 # - configure over ldap # - populate over ldap # - configure syncrepl over ldap @@ -43,6 +47,18 @@ $SLAPPASSWD -g -n >$CONFIGPWF # echo "Initializing server configurations..." +$SLAPADD -F $CFCON2 -n 0 < $LOG3 2>&1 & +SLAVE2PID=$! +if test $WAIT != 0 ; then + echo SLAVE2PID $SLAVE2PID + read foo +fi +KILLPIDS="$KILLPIDS $SLAVE2PID" +cd $TESTWD + +sleep 1 + +echo "Using ldapsearch to check that consumer2 slapd is running..." +for i in 0 1 2 3 4 5; do + $LDAPSEARCH -s base -b "" -H $URI3 \ + 'objectclass=*' > /dev/null 2>&1 + RC=$? + if test $RC = 0 ; then + break + fi + echo "Waiting 5 seconds for slapd to start..." + sleep 5 +done + +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +echo "Configuring syncrepl on consumer2..." +$LDAPMODIFY -D cn=config -H $URI3 -y $CONFIGPWF <>$TESTOUT 2>&1 +dn: olcDatabase={0}config,cn=config +changetype: modify +add: olcSyncRepl +olcSyncRepl: rid=001 provider=$URI1 binddn="cn=config" bindmethod=simple + credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist + retry="5 5 300 5" timeout=1 +olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple + credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist + retry="5 5 300 5" timeout=1 +olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple + credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist + retry="5 5 300 5" timeout=1 - add: olcMirrorMode olcMirrorMode: TRUE @@ -246,10 +319,13 @@ olcSuffix: $BASEDN olcDbDirectory: ./db olcRootDN: $MANAGERDN olcRootPW: $PASSWD -olcSyncRepl: rid=003 provider=$URI1 binddn="$MANAGERDN" bindmethod=simple +olcSyncRepl: rid=004 provider=$URI1 binddn="$MANAGERDN" bindmethod=simple credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 -olcSyncRepl: rid=004 provider=$URI2 binddn="$MANAGERDN" bindmethod=simple +olcSyncRepl: rid=005 provider=$URI2 binddn="$MANAGERDN" bindmethod=simple + credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly + interval=00:00:00:10 retry="5 5 300 5" timeout=1 +olcSyncRepl: rid=006 provider=$URI3 binddn="$MANAGERDN" bindmethod=simple credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcMirrorMode: TRUE @@ -301,6 +377,26 @@ if test $RC != 0 ; then exit $RC fi +echo "Using ldapsearch to check that syncrepl received database changes on consumer2..." +RC=32 +for i in 0 1 2 3 4 5; do + RESULT=`$LDAPSEARCH -H $URI3 \ + -s base -b "cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com" \ + '(objectClass=*)' 2>&1 | awk '/^dn:/ {print "OK"}'` + if test "x$RESULT" = "xOK" ; then + RC=0 + break + fi + echo "Waiting 5 seconds for syncrepl to receive changes..." + sleep 5 +done + +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + echo "Using ldapsearch to read config from the producer..." $LDAPSEARCH -b cn=config -D cn=config -H $URI1 -y $CONFIGPWF \ 'objectclass=*' > $MASTEROUT 2>&1 @@ -323,10 +419,23 @@ if test $RC != 0 ; then exit $RC fi +echo "Using ldapsearch to read config from consumer2..." +$LDAPSEARCH -b cn=config -D cn=config -H $URI3 -y $CONFIGPWF \ + 'objectclass=*' > $SLAVE2OUT 2>&1 +RC=$? + +if test $RC != 0 ; then + echo "ldapsearch failed at consumer2 ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + echo "Filtering producer results..." . $LDIFFILTER < $MASTEROUT > $MASTERFLT echo "Filtering consumer results..." . $LDIFFILTER < $SLAVEOUT > $SLAVEFLT +echo "Filtering consumer2 results..." +. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT echo "Comparing retrieved configs from producer and consumer..." $CMP $MASTERFLT $SLAVEFLT > $CMPOUT @@ -337,6 +446,15 @@ if test $? != 0 ; then exit 1 fi +echo "Comparing retrieved configs from producer and consumer2..." +$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT + +if test $? != 0 ; then + echo "test failed - producer and consumer2 configs differ" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit 1 +fi + echo "Using ldapsearch to read all the entries from the producer..." $LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI1 -w $PASSWD \ 'objectclass=*' > $MASTEROUT 2>&1 @@ -359,12 +477,26 @@ if test $RC != 0 ; then exit $RC fi +echo "Using ldapsearch to read all the entries from the consumer2..." +$LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI3 -w $PASSWD \ + 'objectclass=*' > $SLAVE2OUT 2>&1 +RC=$? + +if test $RC != 0 ; then + echo "ldapsearch failed at consumer2 ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + + test $KILLSERVERS != no && kill -HUP $KILLPIDS echo "Filtering producer results..." . $LDIFFILTER < $MASTEROUT > $MASTERFLT echo "Filtering consumer results..." . $LDIFFILTER < $SLAVEOUT > $SLAVEFLT +echo "Filtering consumer2 results..." +. $LDIFFILTER < $SLAVE2OUT > $SLAVE2FLT echo "Comparing retrieved entries from producer and consumer..." $CMP $MASTERFLT $SLAVEFLT > $CMPOUT @@ -374,6 +506,14 @@ if test $? != 0 ; then exit 1 fi +echo "Comparing retrieved entries from producer and consumer2..." +$CMP $MASTERFLT $SLAVE2FLT > $CMPOUT + +if test $? != 0 ; then + echo "test failed - producer and consumer2 databases differ" + exit 1 +fi + test $KILLSERVERS != no && wait echo "Restarting servers..." @@ -438,6 +578,38 @@ if test $RC != 0 ; then exit $RC fi +echo "Starting consumer2 slapd on TCP/IP port $PORT3..." +cd $CONDIR2 +echo "======================= RESTART =======================" >> $LOG3 +$SLAPD -F ./slapd.d -h $URI3 -d $LVL $TIMING >> $LOG3 2>&1 & +SLAVE2PID=$! +if test $WAIT != 0 ; then + echo SLAVE2PID $SLAVE2PID + read foo +fi +KILLPIDS="$KILLPIDS $SLAVE2PID" +cd $TESTWD + +sleep 1 + +echo "Using ldapsearch to check that consumer2 slapd is running..." +for i in 0 1 2 3 4 5; do + $LDAPSEARCH -s base -b "" -H $URI3 \ + 'objectclass=*' > /dev/null 2>&1 + RC=$? + if test $RC = 0 ; then + break + fi + echo "Waiting 5 seconds for slapd to start..." + sleep 5 +done + +if test $RC != 0 ; then + echo "ldapsearch failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + # Insert modifications and more tests here. SLEEP=10 echo "Waiting $SLEEP seconds for servers to resync..." -- 2.39.5