From 53a41a22da46927e42dddf20fd35fbc499723ed1 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Wed, 4 Oct 2017 20:36:25 -0700 Subject: [PATCH] ITS#8752 - Add regression test --- tests/data/regressions/its8752/its8752 | 213 ++++++++++++++++++ tests/data/regressions/its8752/slapd.conf | 43 ++++ tests/data/regressions/its8752/slapd.conf.mmr | 143 ++++++++++++ 3 files changed, 399 insertions(+) create mode 100755 tests/data/regressions/its8752/its8752 create mode 100644 tests/data/regressions/its8752/slapd.conf create mode 100644 tests/data/regressions/its8752/slapd.conf.mmr diff --git a/tests/data/regressions/its8752/its8752 b/tests/data/regressions/its8752/its8752 new file mode 100755 index 0000000000..30a51846bf --- /dev/null +++ b/tests/data/regressions/its8752/its8752 @@ -0,0 +1,213 @@ +#! /bin/sh +# $OpenLDAP$ +## This work is part of OpenLDAP Software . +## +## Copyright 1998-2017 The OpenLDAP Foundation. +## All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted only as authorized by the OpenLDAP +## Public License. +## +## A copy of this license is available in the file LICENSE in the +## top-level directory of the distribution or, alternatively, at +## . + +echo "running defines.sh" +. $SRCDIR/scripts/defines.sh + +if test $SYNCPROV = syncprovno; then + echo "Syncrepl provider overlay not available, test skipped" + exit 0 +fi +if test $ACCESSLOG = accesslogno; then + echo "Accesslog overlay not available, test skipped" + exit 0 +fi +if test $BACKEND = ldif ; then + echo "$BACKEND backend unsuitable, test skipped" + exit 0 +fi + + +MMR=4 +XDIR=$TESTDIR/srv + +mkdir -p $TESTDIR + +ITS=8752 +ITSDIR=$DATADIR/regressions/its$ITS + +n=1 +while [ $n -le $MMR ]; do + DBDIR=${XDIR}$n/db + mkdir -p ${XDIR}$n $DBDIR.1 $DBDIR.2 + n=`expr $n + 1` +done + +KILLPIDS= + +echo "Starting slapd on TCP/IP port $PORT1..." +. $CONFFILTER $BACKEND $MONITORDB < $ITSDIR/slapd.conf > $CONF1 +$SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 & +PID=$! +if test $WAIT != 0 ; then + echo PID $PID + read foo +fi +KILLPIDS="$PID" + +sleep 1 + +echo "Using ldapsearch to check that slapd is running..." +for i in 0 1 2 3 4 5; do + $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \ + '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 "Populating database on first provider..." +$LDAPADD -D $MANAGERDN -H $URI1 -w $PASSWD << EOMODS >> $TESTOUT 2>&1 +dn: $BASEDN +objectClass: organization +objectClass: dcObject +o: Example, Inc. +dc: example + +dn: ou=People,$BASEDN +objectClass: organizationalUnit +ou: People + +dn: ou=Groups,$BASEDN +objectClass: organizationalUnit +ou: Groups + +dn: cn=Roger Rabbit,ou=People,$BASEDN +objectClass: inetOrgPerson +cn: Roger Rabbit +sn: Rabbit + +dn: cn=Baby Herman,ou=People,$BASEDN +objectClass: inetOrgPerson +cn: Baby Herman +sn: Herman + +dn: cn=Jessica_Rabbit,ou=People,$BASEDN +objectClass: inetOrgPerson +cn: Jessica_Rabbit +sn: Rabbit + +dn: cn=Bugs_Bunny,ou=People,$BASEDN +objectClass: inetOrgPerson +cn: Bugs_Bunny +sn: Bunny + +dn: cn=Daffy_Duck,ou=People,$BASEDN +objectClass: inetOrgPerson +cn: Daffy_Duck +sn: Duck + +dn: cn=Elmer_Fudd,ou=People,$BASEDN +objectClass: inetOrgPerson +cn: Elmer_Fudd +sn: Fudd + +dn: cn=Cartoonia,ou=Groups,$BASEDN +objectClass: groupOfNames +cn: Cartoonia +member: cn=Roger Rabbit,ou=People,$BASEDN +member: cn=Baby Herman,ou=People,$BASEDN +EOMODS + +RC=$? + +if test $RC != 0 ; then + echo "ldapadd failed ($RC)!" + test $KILLSERVERS != no && kill -HUP $KILLPIDS + exit $RC +fi + +echo "Stopping slapd and reworking configuration for MMR..." + +test $KILLSERVERS != no && kill -HUP $KILLPIDS + +KILLPIDS= +n=1 +while [ $n -le $MMR ]; do + MYURI=`eval echo '$URI'$n` + MYLOG=`eval echo '$LOG'$n` + MYCONF=`eval echo '$CONF'$n` + echo "Starting provider slapd on TCP/IP URI $MYURI" + . $CONFFILTER $BACKEND $MONITORDB < $ITSDIR/slapd.conf.mmr > $CONF + sed -e "s/MMR/$n/g" $CONF > $MYCONF + j=1 + while [ $j -le $MMR ]; do + MMCURI=`eval echo '$URI'$j` + sed -e "s|MMC${j}|${MMCURI}|" $MYCONF > $CONF + mv $CONF $MYCONF + j=`expr $j + 1` + done + if [ -f $CONF ]; then + rm -f $CONF + fi + $SLAPD -f $MYCONF -h $MYURI -d $LVL $TIMING > $MYLOG 2>&1 & + PID=$! + if test $WAIT != 0 ; then + echo PID $PID + read foo + fi + KILLPIDS="$PID $KILLPIDS" + sleep 1 + + 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 $MYURI \ + '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 + n=`expr $n + 1` +done + +n=1 +while [ $n -le $MMR ]; do + echo "Modifying dn: cn=Elmer_Fudd,ou=People,dc=example,dc=com on master $n" + MYURI=`eval echo '$URI'$n` + $LDAPMODIFY -v -D "$MANAGERDN" -H $MYURI -w $PASSWD > \ + $TESTOUT 2>&1 << EOMODS + +dn: cn=Elmer_Fudd,ou=People,$BASEDN +changetype: modify +replace: sn +sn: Fudd +EOMODS + + n=`expr $n + 1` +done + +echo ">>>>> Test succeeded" + +test $KILLSERVERS != no && wait + +exit 0 diff --git a/tests/data/regressions/its8752/slapd.conf b/tests/data/regressions/its8752/slapd.conf new file mode 100644 index 0000000000..105bb08042 --- /dev/null +++ b/tests/data/regressions/its8752/slapd.conf @@ -0,0 +1,43 @@ +# stand-alone slapd config -- for testing (with indexing) +# $OpenLDAP$ +## This work is part of OpenLDAP Software . +## +## Copyright 1998-2017 The OpenLDAP Foundation. +## All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted only as authorized by the OpenLDAP +## Public License. +## +## A copy of this license is available in the file LICENSE in the +## top-level directory of the distribution or, alternatively, at +## . + +include @SCHEMADIR@/core.schema +include @SCHEMADIR@/cosine.schema +include @SCHEMADIR@/inetorgperson.schema +include @SCHEMADIR@/openldap.schema +include @SCHEMADIR@/nis.schema +include @DATADIR@/test.schema + +# +pidfile @TESTDIR@/slapd.1.pid +argsfile @TESTDIR@/slapd.1.args + +#mod#modulepath ../servers/slapd/back-@BACKEND@/:../servers/slapd/overlays +#mod#moduleload back_@BACKEND@.la +#monitormod#modulepath ../servers/slapd/back-monitor/ +#monitormod#moduleload back_monitor.la + +database config +rootpw config + +database @BACKEND@ +suffix "dc=example,dc=com" +rootdn "cn=Manager,dc=example,dc=com" +rootpw secret +#~null~#directory @TESTDIR@/srv1/db.1 +#indexdb#index objectClass eq +#indexdb#index cn,sn,uid pres,eq,sub + +#monitor#database monitor diff --git a/tests/data/regressions/its8752/slapd.conf.mmr b/tests/data/regressions/its8752/slapd.conf.mmr new file mode 100644 index 0000000000..ff70b80d0b --- /dev/null +++ b/tests/data/regressions/its8752/slapd.conf.mmr @@ -0,0 +1,143 @@ +# stand-alone slapd config -- for testing (with indexing) +# $OpenLDAP$ +## This work is part of OpenLDAP Software . +## +## Copyright 1998-2017 The OpenLDAP Foundation. +## All rights reserved. +## +## Redistribution and use in source and binary forms, with or without +## modification, are permitted only as authorized by the OpenLDAP +## Public License. +## +## A copy of this license is available in the file LICENSE in the +## top-level directory of the distribution or, alternatively, at +## . + +include @SCHEMADIR@/core.schema +include @SCHEMADIR@/cosine.schema +include @SCHEMADIR@/inetorgperson.schema +include @SCHEMADIR@/openldap.schema +include @SCHEMADIR@/nis.schema +include @DATADIR@/test.schema + +# +pidfile @TESTDIR@/slapd.MMR.pid +argsfile @TESTDIR@/slapd.MMR.args + +serverid MMR +#mod#modulepath ../servers/slapd/back-@BACKEND@/:../servers/slapd/overlays +#mod#moduleload back_@BACKEND@.la +#monitormod#modulepath ../servers/slapd/back-monitor/ +#monitormod#moduleload back_monitor.la +#syncprovmod#modulepath ../servers/slapd/overlays/ +#syncprovmod#moduleload syncprov.la +#accesslogmod#modulepath ../servers/slapd/overlays/ +#accesslogmod#moduleload accesslog.la + +database config +rootpw config + +database @BACKEND@ +suffix "dc=example,dc=com" +rootdn "cn=Manager,dc=example,dc=com" +rootpw secret +#~null~#directory @TESTDIR@/srvMMR/db.1 +#indexdb#index objectClass eq +#indexdb#index cn,sn,uid pres,eq,sub + +syncrepl + rid=001 + provider=MMC1 + bindmethod=simple + binddn="cn=Manager,dc=example,dc=com" + credentials=secret + type=refreshAndPersist + searchbase="dc=example,dc=com" + filter="(objectclass=*)" + scope=sub + schemachecking=on + retry="5 10 60 +" + logbase="cn=accesslog" + logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" + syncdata=accesslog + sizeLimit=unlimited + timelimit=unlimited + +syncrepl + rid=002 + provider=MMC2 + bindmethod=simple + binddn="cn=Manager,dc=example,dc=com" + credentials=secret + type=refreshAndPersist + searchbase="dc=example,dc=com" + filter="(objectclass=*)" + scope=sub + schemachecking=on + retry="5 10 60 +" + logbase="cn=accesslog" + logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" + syncdata=accesslog + sizeLimit=unlimited + timelimit=unlimited + +syncrepl + rid=003 + provider=MMC3 + bindmethod=simple + binddn="cn=Manager,dc=example,dc=com" + credentials=secret + type=refreshAndPersist + searchbase="dc=example,dc=com" + filter="(objectclass=*)" + scope=sub + schemachecking=on + retry="5 10 60 +" + logbase="cn=accesslog" + logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" + syncdata=accesslog + sizeLimit=unlimited + timelimit=unlimited + +syncrepl + rid=004 + provider=MMC4 + bindmethod=simple + binddn="cn=Manager,dc=example,dc=com" + credentials=secret + type=refreshAndPersist + searchbase="dc=example,dc=com" + filter="(objectclass=*)" + scope=sub + schemachecking=on + retry="5 10 60 +" + logbase="cn=accesslog" + logfilter="(&(objectClass=auditWriteObject)(reqResult=0))" + syncdata=accesslog + sizeLimit=unlimited + timelimit=unlimited + +mirrormode TRUE + +overlay syncprov +syncprov-sessionlog 100 +syncprov-checkpoint 100 10 + +overlay accesslog +logdb cn=log +logops writes +logsuccess TRUE +logpurge 24:00 01+00:00 + +database @BACKEND@ +suffix "cn=log" +rootdn "cn=Manager,dc=example,dc=com" +#~null~#directory @TESTDIR@/srvMMR/db.2 +#indexdb#index objectClass eq +#indexdb#index entryCSN,entryUUID,reqEnd,reqResult,reqStart eq + +overlay syncprov +syncprov-reloadhint true +syncprov-nopresent true + +#monitor#database monitor -- 2.39.2