12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation. 62de962bdSlukem## All rights reserved. 72de962bdSlukem## 82de962bdSlukem## Redistribution and use in source and binary forms, with or without 92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 102de962bdSlukem## Public License. 112de962bdSlukem## 122de962bdSlukem## A copy of this license is available in the file LICENSE in the 132de962bdSlukem## top-level directory of the distribution or, alternatively, at 142de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 152de962bdSlukem 162de962bdSlukemecho "running defines.sh" 172de962bdSlukem. $SRCDIR/scripts/defines.sh 182de962bdSlukem 192de962bdSlukemecho "" 202de962bdSlukem 212de962bdSlukemif test $BACKMETA = metano ; then 222de962bdSlukem echo "meta backend not available, test skipped" 232de962bdSlukem exit 0 242de962bdSlukemfi 252de962bdSlukem 26bb30016cSlukemif test $BACKLDAP = ldapno ; then 27bb30016cSlukem echo "ldap backend not available, test skipped" 28bb30016cSlukem exit 0 29bb30016cSlukemfi 30bb30016cSlukem 312de962bdSlukemif test x$TESTLOOPS = x ; then 322de962bdSlukem TESTLOOPS=50 332de962bdSlukemfi 342de962bdSlukem 35d11b170bStronif test x$TESTCHILDREN = x ; then 36d11b170bStron TESTCHILDREN=20 37d11b170bStronfi 38d11b170bStron 392de962bdSlukemrm -rf $TESTDIR 402de962bdSlukem 412de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 422de962bdSlukem 432de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 44*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF1 > $CONF1 45*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 462de962bdSlukemPID=$! 472de962bdSlukemif test $WAIT != 0 ; then 482de962bdSlukem echo PID $PID 492de962bdSlukem read foo 502de962bdSlukemfi 512de962bdSlukemKILLPIDS="$PID" 522de962bdSlukem 532de962bdSlukemsleep 1 542de962bdSlukem 552de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 562de962bdSlukemfor i in 0 1 2 3 4 5; do 57*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 582de962bdSlukem 'objectclass=*' > /dev/null 2>&1 592de962bdSlukem RC=$? 602de962bdSlukem if test $RC = 0 ; then 612de962bdSlukem break 622de962bdSlukem fi 632de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 642de962bdSlukem sleep 5 652de962bdSlukemdone 662de962bdSlukemif test $RC != 0 ; then 672de962bdSlukem echo "ldapsearch failed ($RC)!" 682de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 692de962bdSlukem exit $RC 702de962bdSlukemfi 712de962bdSlukem 722de962bdSlukemecho "Using ldapadd to populate the database..." 73*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 742de962bdSlukem $LDIFORDERED > $TESTOUT 2>&1 752de962bdSlukemRC=$? 762de962bdSlukemif test $RC != 0 ; then 772de962bdSlukem echo "ldapadd failed ($RC)!" 782de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 792de962bdSlukem exit $RC 802de962bdSlukemfi 812de962bdSlukem 822de962bdSlukemecho "Starting slapd on TCP/IP port $PORT2..." 83*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF2 > $CONF2 84*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 & 852de962bdSlukemPID=$! 862de962bdSlukemif test $WAIT != 0 ; then 872de962bdSlukem echo PID $PID 882de962bdSlukem read foo 892de962bdSlukemfi 902de962bdSlukemKILLPIDS="$KILLPIDS $PID" 912de962bdSlukem 922de962bdSlukemsleep 1 932de962bdSlukem 942de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 952de962bdSlukemfor i in 0 1 2 3 4 5; do 96*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 972de962bdSlukem 'objectclass=*' > /dev/null 2>&1 982de962bdSlukem RC=$? 992de962bdSlukem if test $RC = 0 ; then 1002de962bdSlukem break 1012de962bdSlukem fi 1022de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1032de962bdSlukem sleep 5 1042de962bdSlukemdone 1052de962bdSlukemif test $RC != 0 ; then 1062de962bdSlukem echo "ldapsearch failed ($RC)!" 1072de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1082de962bdSlukem exit $RC 1092de962bdSlukemfi 1102de962bdSlukem 1112de962bdSlukemecho "Using ldapadd to populate the database..." 112*e670fd5cSchristos$LDAPADD -D "$METAMANAGERDN" -H $URI2 -w $PASSWD < \ 1132de962bdSlukem $LDIFMETA >> $TESTOUT 2>&1 1142de962bdSlukemRC=$? 1152de962bdSlukemif test $RC != 0 ; then 1162de962bdSlukem echo "ldapadd failed ($RC)!" 1172de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1182de962bdSlukem exit $RC 1192de962bdSlukemfi 1202de962bdSlukem 1212de962bdSlukemecho "Starting slapd on TCP/IP port $PORT3..." 122*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF > $CONF3 123*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 & 1242de962bdSlukemPID=$! 1252de962bdSlukemif test $WAIT != 0 ; then 1262de962bdSlukem echo PID $PID 1272de962bdSlukem read foo 1282de962bdSlukemfi 1292de962bdSlukemKILLPIDS="$KILLPIDS $PID" 1302de962bdSlukem 1312de962bdSlukemsleep 1 1322de962bdSlukem 1332de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 1342de962bdSlukemfor i in 0 1 2 3 4 5; do 135*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \ 1362de962bdSlukem 'objectclass=*' > /dev/null 2>&1 1372de962bdSlukem RC=$? 1382de962bdSlukem if test $RC = 0 ; then 1392de962bdSlukem break 1402de962bdSlukem fi 1412de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1422de962bdSlukem sleep 5 1432de962bdSlukemdone 1442de962bdSlukemif test $RC != 0 ; then 1452de962bdSlukem echo "ldapsearch failed ($RC)!" 1462de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1472de962bdSlukem exit $RC 1482de962bdSlukemfi 1492de962bdSlukem 1502de962bdSlukemcat /dev/null > $SEARCHOUT 1512de962bdSlukem 1522de962bdSlukemmkdir -p $TESTDIR/$DATADIR 1532de962bdSlukemMETABASEDN="o=Example,c=US" 1542de962bdSlukemfor f in $DATADIR/do_* ; do 1552de962bdSlukem sed -e "s;$BASEDN;$METABASEDN;" $f > $TESTDIR/$f 1562de962bdSlukemdone 1572de962bdSlukem 1582de962bdSlukem# add a read that matches only the local database, but selects 1592de962bdSlukem# also the remote as candidate; this should be removed to compare 1602de962bdSlukem# execution times with test008... 1612de962bdSlukemfor f in $TESTDIR/$DATADIR/do_read.* ; do 1622de962bdSlukem echo "ou=Meta,$METABASEDN" >> $f 1632de962bdSlukemdone 1642de962bdSlukem 1652de962bdSlukem# add a read that matches a referral in the local database only, 1662de962bdSlukem# but selects also the remote as candidate; this should be removed 1672de962bdSlukem# to compare execution times with test008... 1682de962bdSlukemfor f in $TESTDIR/$DATADIR/do_read.* ; do 1692de962bdSlukem echo "cn=Somewhere,ou=Meta,$METABASEDN" >> $f 1702de962bdSlukemdone 1712de962bdSlukem 1722de962bdSlukem# add a bind that resolves to a referral 1732de962bdSlukemfor f in $TESTDIR/$DATADIR/do_bind.* ; do 1742de962bdSlukem echo "cn=Foo,ou=Meta,$METABASEDN" >> $f 1752de962bdSlukem echo "bar" >> $f 1762de962bdSlukem echo "" >> $f 1772de962bdSlukem echo "" >> $f 1782de962bdSlukemdone 1792de962bdSlukem 1804e6df137Slukem# NOTE: copies do_* files from $TESTDIR/$DATADIR to $TESTDIR 181*e670fd5cSchristos$MONITORDATA "$TESTDIR/$DATADIR" "$TESTDIR" 1824e6df137Slukem 183d11b170bStronBINDDN="cn=Manager,o=Local" 184d11b170bStronPASSWD="secret" 1852de962bdSlukemecho "Using tester for concurrent server access..." 186*e670fd5cSchristos$SLAPDTESTER -P "$PROGDIR" -d "$TESTDIR" -H $URI3 \ 187d11b170bStron -D "$BINDDN" -w $PASSWD -l $TESTLOOPS -j $TESTCHILDREN \ 188d11b170bStron -r 20 -i '!REFERRAL' -i '*INVALID_CREDENTIALS' -SS 1892de962bdSlukemRC=$? 1902de962bdSlukem 1912de962bdSlukemif test $RC != 0 ; then 1922de962bdSlukem echo "slapd-tester failed ($RC)!" 1932de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1942de962bdSlukem exit $RC 1952de962bdSlukemfi 1962de962bdSlukem 1972de962bdSlukemecho "Using ldapsearch to retrieve all the entries..." 198*e670fd5cSchristos$LDAPSEARCH -S "" -b "$METABASEDN" -H $URI3 \ 1992de962bdSlukem 'objectClass=*' > $SEARCHOUT 2>&1 2002de962bdSlukemRC=$? 2012de962bdSlukem 2022de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 2032de962bdSlukem 2042de962bdSlukemif test $RC != 0 ; then 2052de962bdSlukem echo "ldapsearch failed ($RC)!" 2062de962bdSlukem exit $RC 2072de962bdSlukemfi 2082de962bdSlukem 2092de962bdSlukemecho "Filtering ldapsearch results..." 210ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 2112de962bdSlukemecho "Filtering original ldif used to create database..." 212ef2f90d3Sadam$LDIFFILTER < $METACONCURRENCYOUT > $LDIFFLT 2132de962bdSlukemecho "Comparing filter output..." 2142de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 2152de962bdSlukem 2162de962bdSlukemif test $? != 0 ; then 2172de962bdSlukem echo "comparison failed - slapd-meta search/modification didn't succeed" 2182de962bdSlukem exit 1 2192de962bdSlukemfi 2202de962bdSlukem 2212de962bdSlukemecho ">>>>> Test succeeded" 2222de962bdSlukem 2232de962bdSlukemtest $KILLSERVERS != no && wait 2242de962bdSlukem 2252de962bdSlukemexit 0 226