X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=tests%2Fscripts%2Ftest053-syncprov-glue;h=9c419d6bda567b31788075cdd13cee61ceec9ce2;hb=3743a5a68e4d608949d5fd04904733ee5c1ac959;hp=8c87fa053fc31f30e3310513bde00f30c848042c;hpb=2c6b5c0ea9168cca0288c6864ceee17641e0681c;p=openldap diff --git a/tests/scripts/test053-syncprov-glue b/tests/scripts/test053-syncprov-glue index 8c87fa053f..9c419d6bda 100755 --- a/tests/scripts/test053-syncprov-glue +++ b/tests/scripts/test053-syncprov-glue @@ -2,7 +2,7 @@ # $OpenLDAP$ ## This work is part of OpenLDAP Software . ## -## Copyright 1998-2008 The OpenLDAP Foundation. +## Copyright 1998-2012 The OpenLDAP Foundation. ## All rights reserved. ## ## Redistribution and use in source and binary forms, with or without @@ -47,22 +47,21 @@ $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..." +case "$SYNCMODE" in + ro) + SYNCTYPE="type=refreshOnly interval=00:00:00:03" + ;; + rp) + SYNCTYPE="type=refreshAndPersist" + ;; + *) + echo "unknown sync mode $SYNCMODE" + exit 1; + ;; +esac + +echo "Initializing provider configurations..." $SLAPADD -F $CFPROD -n 0 < $LOG1 2>&1 & PID=$! @@ -111,7 +110,7 @@ fi KILLPIDS="$KILLPIDS $PID" cd $TESTWD sleep 1 -echo "Using ldapsearch to check that producer slapd is running..." +echo "Using ldapsearch to check that provider slapd is running..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "" -H $URI1 \ 'objectclass=*' > /dev/null 2>&1 @@ -128,7 +127,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Starting producer2 slapd on TCP/IP port $PORT2..." +echo "Starting provider2 slapd on TCP/IP port $PORT2..." cd $PRO2DIR $SLAPD -F slapd.d -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 & PID=$! @@ -139,7 +138,7 @@ fi KILLPIDS="$KILLPIDS $PID" cd $TESTWD sleep 1 -echo "Using ldapsearch to check that producer slapd is running..." +echo "Using ldapsearch to check that provider slapd is running..." for i in 0 1 2 3 4 5; do $LDAPSEARCH -s base -b "" -H $URI2 \ 'objectclass=*' > /dev/null 2>&1 @@ -211,7 +210,7 @@ EOF dn: cn=module,cn=config objectClass: olcModuleList cn: module -olcModulePath: ../../../servers/slapd/back-$BACKEND +olcModulePath: $TESTWD/../servers/slapd/back-$BACKEND olcModuleLoad: back_$BACKEND.la EOF RC=$? @@ -222,13 +221,13 @@ EOF fi done -echo "Adding databases on producer..." +echo "Adding databases on provider..." if [ "$SYNCPROV" = syncprovmod ]; then $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: cn=module,cn=config objectClass: olcModuleList cn: module -olcModulePath: ../../../servers/slapd/overlays +olcModulePath: $TESTWD/../servers/slapd/overlays olcModuleLoad: syncprov.la EOF @@ -240,12 +239,15 @@ EOF fi fi +nullExclude="" nullOK="" +test $BACKEND = null && nullExclude="# " nullOK="OK" + $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: olcDatabase={1}$BACKEND,cn=config objectClass: olcDatabaseConfig -objectClass: olc${BACKEND}Config +${nullExclude}objectClass: olc${BACKEND}Config olcDatabase: {1}$BACKEND -olcDbDirectory: $PRODDIR/db +${nullExclude}olcDbDirectory: $PRODDIR/db olcSuffix: $BASEDN olcRootDN: $MANAGERDN olcRootPW: $PASSWD @@ -253,7 +255,7 @@ olcRootPW: $PASSWD EOF RC=$? if test $RC != 0 ; then - echo "ldapadd failed for producer database config1 ($RC)!" + echo "ldapadd failed for provider database config1 ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi @@ -270,9 +272,9 @@ olcOverlay: {1}syncprov dn: olcDatabase={1}$BACKEND,cn=config objectClass: olcDatabaseConfig -objectClass: olc${BACKEND}Config +${nullExclude}objectClass: olc${BACKEND}Config olcDatabase: {1}$BACKEND -olcDbDirectory: $PRODDIR/ou1 +${nullExclude}olcDbDirectory: $PRODDIR/ou1 olcSubordinate: TRUE olcSuffix: ou=ou1,$BASEDN olcRootDN: $MANAGERDN @@ -280,18 +282,18 @@ olcRootDN: $MANAGERDN EOF RC=$? if test $RC != 0 ; then - echo "ldapadd failed for producer database config ($RC)!" + echo "ldapadd failed for provider database config ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -echo "Adding databases on producer2..." +echo "Adding databases on provider2..." if [ "$SYNCPROV" = syncprovmod ]; then $LDAPADD -D cn=config -H $URI2 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: cn=module,cn=config objectClass: olcModuleList cn: module -olcModulePath: ../../../servers/slapd/overlays +olcModulePath: $TESTWD/../servers/slapd/overlays olcModuleLoad: syncprov.la EOF @@ -306,9 +308,9 @@ fi $LDAPADD -D cn=config -H $URI2 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: olcDatabase={1}$BACKEND,cn=config objectClass: olcDatabaseConfig -objectClass: olc${BACKEND}Config +${nullExclude}objectClass: olc${BACKEND}Config olcDatabase: {1}$BACKEND -olcDbDirectory: $PRO2DIR/db +${nullExclude}olcDbDirectory: $PRO2DIR/db olcSuffix: $BASEDN olcRootDN: $MANAGERDN olcRootPW: $PASSWD @@ -321,7 +323,7 @@ olcOverlay: {0}syncprov EOF RC=$? if test $RC != 0 ; then - echo "ldapadd failed for producer database config ($RC)!" + echo "ldapadd failed for provider database config ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi @@ -330,9 +332,9 @@ echo "Adding databases on consumer..." $LDAPADD -D cn=config -H $URI3 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: olcDatabase={1}$BACKEND,cn=config objectClass: olcDatabaseConfig -objectClass: olc${BACKEND}Config +${nullExclude}objectClass: olc${BACKEND}Config olcDatabase: {1}$BACKEND -olcDbDirectory: $CONSDIR/db +${nullExclude}olcDbDirectory: $CONSDIR/db olcSuffix: $BASEDN olcRootDN: $MANAGERDN @@ -344,7 +346,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Populating producer..." +echo "Populating provider..." $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD <> $TESTOUT 2>&1 dn: dc=example,dc=com objectClass: top @@ -361,12 +363,12 @@ ou: ou1 EOF RC=$? if test $RC != 0 ; then - echo "ldapadd failed to populate producer entry ($RC)!" + echo "ldapadd failed to populate provider entry ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -echo "Populating producer2..." +echo "Populating provider2..." $LDAPADD -D "$MANAGERDN" -H $URI2 -w $PASSWD <> $TESTOUT 2>&1 dn: dc=example,dc=com objectClass: top @@ -383,19 +385,19 @@ ou: ou1 EOF RC=$? if test $RC != 0 ; then - echo "ldapadd failed to populate producer entry ($RC)!" + echo "ldapadd failed to populate provider entry ($RC)!" test $KILLSERVERS != no && kill -HUP $KILLPIDS exit $RC fi -echo "Adding syncrepl on producer..." +echo "Adding syncrepl on provider..." $LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <> $TESTOUT 2>&1 dn: olcDatabase={1}$BACKEND,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=1 provider=$URI2 searchbase="ou=ou1,$BASEDN" binddn="$MANAGERDN" bindmethod=simple credentials=$PASSWD - $SYNCTYPE retry="5 5 300 5" timeout=1 + $SYNCTYPE retry="3 5 300 5" timeout=1 EOF RC=$? @@ -412,7 +414,7 @@ changetype: modify add: olcSyncRepl olcSyncRepl: rid=1 provider=$URI1 searchbase="$BASEDN" binddn="$MANAGERDN" bindmethod=simple credentials=$PASSWD - $SYNCTYPE retry="5 5 300 5" timeout=1 + $SYNCTYPE retry="3 5 300 5" timeout=1 EOF RC=$? @@ -428,12 +430,12 @@ for i in 0 1 2 3 4 5; do RESULT=`$LDAPSEARCH -H $URI3 \ -s base -b "ou=ou1,$BASEDN" \ '(objectClass=*)' 2>&1 | awk '/^dn:/ {print "OK"}'` - if test "x$RESULT" = "xOK" ; then + if test "x$RESULT$nullOK" = "xOK" ; then RC=0 break fi - echo "Waiting 5 seconds for syncrepl to receive changes..." - sleep 5 + echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." + sleep $SLEEP1 done if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" @@ -441,7 +443,7 @@ if test $RC != 0 ; then exit $RC fi -echo "Using ldapmodify to modify producer2..." +echo "Using ldapmodify to modify provider2..." $LDAPADD -D "$MANAGERDN" -H $URI2 -w $PASSWD <> $TESTOUT 2>&1 dn: ou=ou1,dc=example,dc=com changetype: modify @@ -464,12 +466,12 @@ for i in 0 1 2 3 4 5; do RESULT=`$LDAPSEARCH -H $URI3 \ -s base -b "ou=ou1,$BASEDN" \ '(description=Modify1)' 2>&1 | awk '/^dn:/ {print "OK"}'` - if test "x$RESULT" = "xOK" ; then + if test "x$RESULT$nullOK" = "xOK" ; then RC=0 break fi - echo "Waiting 5 seconds for syncrepl to receive changes..." - sleep 5 + echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." + sleep $SLEEP1 done if test $RC != 0 ; then echo "ldapsearch failed ($RC)!" @@ -477,20 +479,30 @@ if test $RC != 0 ; then exit $RC fi -type db_stat >/dev/null 2>&1 -RC=$? -if test $RC != 0 ; then - echo "Could not find db_stat ($RC)!" +case $BACKEND in bdb | hdb) +db_stat= +for path in `echo "$PATH" | sed -e 's/:/ /g'`; do + if test -f "$path/db_stat" && \ + "$path/db_stat" -E -h $PRODDIR/db > /dev/null 2>&1 + then + db_stat="$path/db_stat" + break + fi +done + +if test -z "$db_stat" ; then + echo "Could not find a working db_stat in PATH!" lock_bug=1 -elif db_stat -E -h $PRODDIR/db | egrep -q 'HELD .* len:'; then +elif "$db_stat" -E -h $PRODDIR/db | egrep -q 'HELD .* len:'; then echo "WARNING: Glue lock bug hit, next modify could deadlock" lock_bug=2 else echo "Glue lock bug not found :-)" lock_bug=0 fi +esac -echo "Using ldapmodify to modify glue suffix on producer..." +echo "Using ldapmodify to modify glue suffix on provider..." $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD <> $TESTOUT 2>&1 dn: dc=example,dc=com changetype: modify