From b12a395b1232a2e2c2ef78a5559d64529c788aaf Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sun, 28 Jan 2007 10:35:50 +0000 Subject: [PATCH] make sure replication finished before comparing data (under valgrind, replication may take ages) --- tests/scripts/test049-sync-config | 102 +++++++++++++++++++++--------- 1 file changed, 72 insertions(+), 30 deletions(-) diff --git a/tests/scripts/test049-sync-config b/tests/scripts/test049-sync-config index d8f29fa9c4..80406de47f 100755 --- a/tests/scripts/test049-sync-config +++ b/tests/scripts/test049-sync-config @@ -34,15 +34,15 @@ mkdir -p $TESTDIR $PRODIR $CONDIR $DBPRO $DBCON $CFPRO $CFCON # # Test replication of dynamic config: -# - start master -# - start slave +# - start producer +# - start consumer # - configure over ldap # - populate over ldap # - configure syncrepl over ldap # - retrieve database over ldap and compare against expected results # -echo "Starting master slapd on TCP/IP port $PORT1..." +echo "Starting producer slapd on TCP/IP port $PORT1..." $SLAPADD -F $CFPRO -n 0 -l $DYNAMICCONF cd $PRODIR $SLAPD -F ./slapd.d -h $URI1 -d $LVL $TIMING > ../$LOG1 2>&1 & @@ -56,7 +56,7 @@ cd ../.. sleep 1 -echo "Using ldapsearch to check that master slapd is running..." +echo "Using ldapsearch to check that producer slapd is running..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "" -H $URI1 \ 'objectclass=*' > /dev/null 2>&1 @@ -74,7 +74,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Inserting syncprov overlay on master..." +echo "Inserting syncprov overlay on producer..." if [ "$SYNCPROV" = syncprovmod ]; then $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF < $TESTOUT 2>&1 dn: cn=module,cn=config @@ -115,7 +115,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Starting slave slapd on TCP/IP port $PORT2..." +echo "Starting consumer slapd on TCP/IP port $PORT2..." $SLAPADD -F $CFCON -n 0 -l $DYNAMICCONF cd $CONDIR $SLAPD -F ./slapd.d -h $URI2 -d $LVL $TIMING > ../$LOG2 2>&1 & @@ -129,7 +129,7 @@ cd ../.. sleep 1 -echo "Using ldapsearch to check that slave slapd is running..." +echo "Using ldapsearch to check that consumer slapd is running..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "" -H $URI2 \ 'objectclass=*' > /dev/null 2>&1 @@ -147,7 +147,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Configuring syncrepl on slave..." +echo "Configuring syncrepl on consumer..." $LDAPMODIFY -D cn=config -H $URI2 -y $CONFIGPWF <>$TESTOUT 2>&1 dn: olcDatabase={0}config,cn=config changetype: modify @@ -160,10 +160,31 @@ add: olcUpdateRef olcUpdateRef: $URI1 EOF -echo "Waiting 10 seconds for syncrepl to receive changes..." -sleep 10 +SLEEP=10 +echo "Waiting $SLEEP seconds for syncrepl to receive changes..." +sleep $SLEEP -echo "Adding schema and databases on master..." +echo "Using ldapsearch to check that syncrepl received config changes..." +RC=32 +for i in 0 1 2 3 4 5; do + RESULT=`$LDAPSEARCH -H $URI2 -D cn=config -y $CONFIGPWF \ + -s base -b "olcDatabase={0}config,cn=config" \ + '(olcUpdateRef=*)' 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 "Adding schema and databases on producer..." $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <>$TESTOUT 2>&1 include: file:$SCHEMADIR/core.ldif @@ -225,7 +246,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Using ldapadd to populate master..." +echo "Using ldapadd to populate producer..." $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD -f $LDIFORDERED \ >> $TESTOUT 2>&1 RC=$? @@ -235,79 +256,100 @@ if test $RC != 0 ; then exit $RC fi -echo "Waiting 20 seconds for syncrepl to receive changes..." -sleep 20 +SLEEP=20 +echo "Waiting $SLEEP seconds for syncrepl to receive changes..." +sleep $SLEEP + +echo "Using ldapsearch to check that syncrepl received database changes..." +RC=32 +for i in 0 1 2 3 4 5; do + RESULT=`$LDAPSEARCH -H $URI2 \ + -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 master..." +echo "Using ldapsearch to read config from the producer..." $LDAPSEARCH -b cn=config -D cn=config -H $URI1 -y $CONFIGPWF \ 'objectclass=*' > $MASTEROUT 2>&1 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed at master ($RC)!" + echo "ldapsearch failed at producer ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -echo "Using ldapsearch to read config from the slave..." +echo "Using ldapsearch to read config from the consumer..." $LDAPSEARCH -b cn=config -D cn=config -H $URI2 -y $CONFIGPWF \ 'objectclass=*' > $SLAVEOUT 2>&1 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed at slave ($RC)!" + echo "ldapsearch failed at consumer ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -echo "Filtering master results..." +echo "Filtering producer results..." . $LDIFFILTER < $MASTEROUT > $MASTERFLT -echo "Filtering slave results..." +echo "Filtering consumer results..." . $LDIFFILTER < $SLAVEOUT > $SLAVEFLT -echo "Comparing retrieved entries from master and slave..." +echo "Comparing retrieved configs from producer and consumer..." $CMP $MASTERFLT $SLAVEFLT > $CMPOUT if test $? != 0 ; then - echo "test failed - master and slave databases differ" + echo "test failed - producer and consumer configs differ" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit 1 fi -echo "Using ldapsearch to read all the entries from the master..." +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 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed at master ($RC)!" + echo "ldapsearch failed at producer ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -echo "Using ldapsearch to read all the entries from the slave..." +echo "Using ldapsearch to read all the entries from the consumer..." $LDAPSEARCH -S "" -b "$BASEDN" -D "$MANAGERDN" -H $URI2 -w $PASSWD \ 'objectclass=*' > $SLAVEOUT 2>&1 RC=$? if test $RC != 0 ; then - echo "ldapsearch failed at slave ($RC)!" + echo "ldapsearch failed at consumer ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi test $KILLSERVERS != no && kill -HUP $KILLPIDS -echo "Filtering master results..." +echo "Filtering producer results..." . $LDIFFILTER < $MASTEROUT > $MASTERFLT -echo "Filtering slave results..." +echo "Filtering consumer results..." . $LDIFFILTER < $SLAVEOUT > $SLAVEFLT -echo "Comparing retrieved entries from master and slave..." +echo "Comparing retrieved entries from producer and consumer..." $CMP $MASTERFLT $SLAVEFLT > $CMPOUT if test $? != 0 ; then - echo "test failed - master and slave databases differ" + echo "test failed - producer and consumer databases differ" exit 1 fi -- 2.39.2