Skip to content
Snippets Groups Projects
Commit b12a395b authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

make sure replication finished before comparing data (under valgrind, replication may take ages)

parent 08ddb6f1
No related branches found
No related tags found
No related merge requests found
......@@ -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 <<EOF > $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 <<EOF >>$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 <<EOF >>$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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment