allow each (back-config) syncrepl test to use the preferred sync type, but allow changing it via the -s switch for ./run

This commit is contained in:
Pierangelo Masarati 2008-11-15 15:05:12 +00:00
parent f7a8ce8763
commit 2c6b5c0ea9
4 changed files with 146 additions and 22 deletions

View file

@ -13,7 +13,7 @@
## top-level directory of the distribution or, alternatively, at
## <http://www.OpenLDAP.org/license.html>.
USAGE="$0 [-b <backend>] [-c] [-k] [-p] [-u] [-w] <script>"
USAGE="$0 [-b <backend>] [-c] [-k] [-p] [-s {ro|rp}] [-u] [-w] <script>"
# configure generated
SRCDIR="@srcdir@"
@ -80,6 +80,7 @@ CLEAN=no
WAIT=0
KILLSERVERS=yes
PRESERVE=${PRESERVE-no}
SYNCMODE=
USERDATA=no
while test $# -gt 0 ; do
@ -100,6 +101,18 @@ while test $# -gt 0 ; do
PRESERVE=yes
shift ;;
-s | -syncmode)
case "$2" in
ro | rp)
SYNCMODE="$2"
;;
*)
echo "unknown sync mode $2"
echo "$USAGE"; exit 1
;;
esac
shift; shift ;;
-u | -userdata)
USERDATA=yes
shift ;;
@ -137,7 +150,7 @@ BACKENDTYPE=`eval 'echo $AC_'$BACKEND`
if test "x$BACKENDTYPE" = "x" ; then
BACKENDTYPE="unknown"
fi
export BACKEND BACKENDTYPE WAIT KILLSERVERS PRESERVE USERDATA
export BACKEND BACKENDTYPE WAIT KILLSERVERS PRESERVE SYNCMODE USERDATA
if test $# = 0 ; then
echo "$USAGE"; exit 1

View file

@ -32,6 +32,23 @@ mkdir -p $TESTDIR $PRODIR $CONDIR $DBPRO $DBCON $CFPRO $CFCON
$SLAPPASSWD -g -n >$CONFIGPWF
if test x"$SYNCMODE" = x ; then
SYNCMODE=rp
else
case "$SYNCMODE" in
ro)
SYNCTYPE="type=refreshOnly interval=00:00:00:10"
;;
rp)
SYNCTYPE="type=refreshAndPersist"
;;
*)
echo "unknown sync mode $SYNCMODE"
exit 1;
;;
esac
fi
#
# Test replication of dynamic config:
# - start producer
@ -97,8 +114,7 @@ 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=refreshOnly
interval=00:00:00:10
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
-
add: olcUpdateRef
olcUpdateRef: $URI1
@ -154,8 +170,7 @@ 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=refreshOnly
interval=00:00:00:10
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
-
add: olcUpdateRef
olcUpdateRef: $URI1
@ -230,8 +245,7 @@ olcDbDirectory: ./db
olcRootDN: $MANAGERDN
olcRootPW: $PASSWD
olcSyncRepl: rid=002 provider=$URI1 binddn="$MANAGERDN" bindmethod=simple
credentials=$PASSWD searchbase="$BASEDN" type=refreshOnly
interval=00:00:00:10
credentials=$PASSWD searchbase="$BASEDN" $SYNCTYPE
olcUpdateRef: $URI1
dn: olcOverlay=syncprov,olcDatabase={1}${BACKEND},cn=config

View file

@ -31,13 +31,27 @@ CFPRO=$PRODIR/slapd.d
CFCON=$CONDIR/slapd.d
CFCON2=$CONDIR2/slapd.d
SYNCTYPE="type=refreshOnly interval=00:00:00:10"
#SYNCTYPE="type=refreshAndPersist"
mkdir -p $TESTDIR $PRODIR $CONDIR $CONDIR2 $DBPRO $DBCON $DBCON2 $CFPRO $CFCON $CFCON2
$SLAPPASSWD -g -n >$CONFIGPWF
if test x"$SYNCMODE" = x ; then
SYNCMODE=rp
else
case "$SYNCMODE" in
ro)
SYNCTYPE="type=refreshOnly interval=00:00:00:10"
;;
rp)
SYNCTYPE="type=refreshAndPersist"
;;
*)
echo "unknown sync mode $SYNCMODE"
exit 1;
;;
esac
fi
#
# Test replication of dynamic config:
# - start producer
@ -159,13 +173,13 @@ 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
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
-
add: olcMirrorMode
@ -215,13 +229,13 @@ 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
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
-
add: olcMirrorMode
@ -265,13 +279,13 @@ 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
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
olcSyncRepl: rid=002 provider=$URI2 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
olcSyncRepl: rid=003 provider=$URI3 binddn="cn=config" bindmethod=simple
credentials=$CONFIGPW searchbase="cn=config" type=refreshAndPersist
credentials=$CONFIGPW searchbase="cn=config" $SYNCTYPE
retry="5 5 300 5" timeout=3
-
add: olcMirrorMode
@ -393,6 +407,72 @@ SLEEP=20
echo "Waiting $SLEEP seconds for syncrepl to receive changes..."
sleep $SLEEP
echo "Using ldapmodify to add to the producer entries that will be deleted..."
$LDAPMODIFY -D "$MANAGERDN" -H $URI1 -w $PASSWD \
>> $TESTOUT 2>&1 << EOADDS
dn: cn=To be deleted by producer,dc=example,dc=com
changetype: add
objectClass: device
# no distinguished values, will be added by DSA
dn: cn=To be deleted by consumer1,dc=example,dc=com
changetype: add
objectClass: device
# no distinguished values, will be added by DSA
dn: cn=To be deleted by consumer2,dc=example,dc=com
changetype: add
objectClass: device
# no distinguished values, will be added by DSA
dn: cn=To be deleted by producer,dc=example,dc=com
changetype: delete
EOADDS
RC=$?
if test $RC != 0 ; then
echo "ldapmodify failed for producer database ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
SLEEP=20
echo "Waiting $SLEEP seconds for syncrepl to receive changes..."
sleep $SLEEP
echo "Using ldapmodify to delete entries from consumer1..."
$LDAPMODIFY -D "$MANAGERDN" -H $URI2 -w $PASSWD \
>> $TESTOUT 2>&1 << EOADDS
dn: cn=To be deleted by consumer1,dc=example,dc=com
changetype: delete
EOADDS
RC=$?
if test $RC != 0 ; then
echo "ldapmodify failed for consumer2 database ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
SLEEP=20
echo "Waiting $SLEEP seconds for syncrepl to receive changes..."
sleep $SLEEP
echo "Using ldapmodify to delete entries from consumer2..."
$LDAPMODIFY -D "$MANAGERDN" -H $URI3 -w $PASSWD \
>> $TESTOUT 2>&1 << EOADDS
dn: cn=To be deleted by consumer2,dc=example,dc=com
changetype: delete
EOADDS
RC=$?
if test $RC != 0 ; then
echo "ldapmodify failed for consumer2 database ($RC)!"
test $KILLSERVERS != no && kill -HUP $KILLPIDS
exit $RC
fi
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

View file

@ -45,6 +45,23 @@ KILLPIDS=
$SLAPPASSWD -g -n >$CONFIGPWF
if test x"$SYNCMODE" = x ; then
SYNCMODE=rp
else
case "$SYNCMODE" in
ro)
SYNCTYPE="type=refreshOnly interval=00:00:00:10"
;;
rp)
SYNCTYPE="type=refreshAndPersist"
;;
*)
echo "unknown sync mode $SYNCMODE"
exit 1;
;;
esac
fi
echo "Initializing producer configurations..."
$SLAPADD -F $CFPROD -n 0 <<EOF
dn: cn=config
@ -378,7 +395,7 @@ changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=1 provider=$URI2 searchbase="ou=ou1,$BASEDN"
binddn="$MANAGERDN" bindmethod=simple credentials=$PASSWD
type=refreshAndPersist retry="5 5 300 5" timeout=1
$SYNCTYPE retry="5 5 300 5" timeout=1
EOF
RC=$?
@ -395,7 +412,7 @@ changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=1 provider=$URI1 searchbase="$BASEDN"
binddn="$MANAGERDN" bindmethod=simple credentials=$PASSWD
type=refreshAndPersist retry="5 5 300 5" timeout=1
$SYNCTYPE retry="5 5 300 5" timeout=1
EOF
RC=$?