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 $BACKLDAP = ldapno ; then 222de962bdSlukem echo "ldap backend not available, test skipped" 232de962bdSlukem exit 0 242de962bdSlukemfi 252de962bdSlukem 262de962bdSlukemif test $RWM = rwmno ; then 272de962bdSlukem echo "rwm (rewrite/remap) overlay not available, test skipped" 282de962bdSlukem exit 0 292de962bdSlukemfi 302de962bdSlukem 312de962bdSlukemif test x$TESTLOOPS = x ; then 322de962bdSlukem TESTLOOPS=50 332de962bdSlukemfi 342de962bdSlukem 352de962bdSlukemif test x$TESTOLOOPS = x ; then 362de962bdSlukem TESTOLOOPS=1 372de962bdSlukemfi 382de962bdSlukem 39d11b170bStronif test x$TESTCHILDREN = x ; then 40d11b170bStron TESTCHILDREN=20 41d11b170bStronfi 42d11b170bStron 432de962bdSlukemrm -rf $TESTDIR 442de962bdSlukem 452de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 462de962bdSlukem 472de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 48*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF1 > $CONF1 49*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 502de962bdSlukemPID=$! 512de962bdSlukemif test $WAIT != 0 ; then 522de962bdSlukem echo PID $PID 532de962bdSlukem read foo 542de962bdSlukemfi 552de962bdSlukemKILLPIDS="$PID" 562de962bdSlukem 572de962bdSlukemsleep 1 582de962bdSlukem 592de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 602de962bdSlukemfor i in 0 1 2 3 4 5; do 61*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 622de962bdSlukem 'objectclass=*' > /dev/null 2>&1 632de962bdSlukem RC=$? 642de962bdSlukem if test $RC = 0 ; then 652de962bdSlukem break 662de962bdSlukem fi 672de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 682de962bdSlukem sleep 5 692de962bdSlukemdone 702de962bdSlukemif test $RC != 0 ; then 712de962bdSlukem echo "ldapsearch failed ($RC)!" 722de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 732de962bdSlukem exit $RC 742de962bdSlukemfi 752de962bdSlukem 762de962bdSlukemecho "Using ldapadd to populate the database..." 77*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 782de962bdSlukem $LDIFORDERED > $TESTOUT 2>&1 792de962bdSlukemRC=$? 802de962bdSlukemif test $RC != 0 ; then 812de962bdSlukem echo "ldapadd failed ($RC)!" 822de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 832de962bdSlukem exit $RC 842de962bdSlukemfi 852de962bdSlukem 862de962bdSlukemecho "Starting slapd on TCP/IP port $PORT2..." 87*e670fd5cSchristos. $CONFFILTER $BACKEND < $METACONF2 > $CONF2 88*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 & 892de962bdSlukemPID=$! 902de962bdSlukemif test $WAIT != 0 ; then 912de962bdSlukem echo PID $PID 922de962bdSlukem read foo 932de962bdSlukemfi 942de962bdSlukemKILLPIDS="$KILLPIDS $PID" 952de962bdSlukem 962de962bdSlukemsleep 1 972de962bdSlukem 982de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 992de962bdSlukemfor i in 0 1 2 3 4 5; do 100*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 1012de962bdSlukem 'objectclass=*' > /dev/null 2>&1 1022de962bdSlukem RC=$? 1032de962bdSlukem if test $RC = 0 ; then 1042de962bdSlukem break 1052de962bdSlukem fi 1062de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1072de962bdSlukem sleep 5 1082de962bdSlukemdone 1092de962bdSlukemif test $RC != 0 ; then 1102de962bdSlukem echo "ldapsearch failed ($RC)!" 1112de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1122de962bdSlukem exit $RC 1132de962bdSlukemfi 1142de962bdSlukem 1152de962bdSlukemecho "Using ldapadd to populate the database..." 116*e670fd5cSchristos$LDAPADD -D "$METAMANAGERDN" -H $URI2 -w $PASSWD < \ 1172de962bdSlukem $LDIFMETA >> $TESTOUT 2>&1 1182de962bdSlukemRC=$? 1192de962bdSlukemif test $RC != 0 ; then 1202de962bdSlukem echo "ldapadd failed ($RC)!" 1212de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1222de962bdSlukem exit $RC 1232de962bdSlukemfi 1242de962bdSlukem 1252de962bdSlukemecho "Starting slapd on TCP/IP port $PORT3..." 126*e670fd5cSchristos. $CONFFILTER $BACKEND < $GLUELDAPCONF > $CONF3 127*e670fd5cSchristos$SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 & 1282de962bdSlukemPID=$! 1292de962bdSlukemif test $WAIT != 0 ; then 1302de962bdSlukem echo PID $PID 1312de962bdSlukem read foo 1322de962bdSlukemfi 1332de962bdSlukemKILLPIDS="$KILLPIDS $PID" 1342de962bdSlukem 1352de962bdSlukemsleep 1 1362de962bdSlukem 1372de962bdSlukemecho "Using ldapsearch to check that slapd is running..." 1382de962bdSlukemfor i in 0 1 2 3 4 5; do 139*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \ 1402de962bdSlukem 'objectclass=*' > /dev/null 2>&1 1412de962bdSlukem RC=$? 1422de962bdSlukem if test $RC = 0 ; then 1432de962bdSlukem break 1442de962bdSlukem fi 1452de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1462de962bdSlukem sleep 5 1472de962bdSlukemdone 1482de962bdSlukemif test $RC != 0 ; then 1492de962bdSlukem echo "ldapsearch failed ($RC)!" 1502de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1512de962bdSlukem exit $RC 1522de962bdSlukemfi 1532de962bdSlukem 1542de962bdSlukemcat /dev/null > $SEARCHOUT 1552de962bdSlukem 1562de962bdSlukemmkdir -p $TESTDIR/$DATADIR 1572de962bdSlukemMETABASEDN="o=Example,c=US" 1582de962bdSlukemfor f in $DATADIR/do_* ; do 1592de962bdSlukem sed -e "s;$BASEDN;$METABASEDN;" $f > $TESTDIR/$f 1602de962bdSlukemdone 1612de962bdSlukem 1622de962bdSlukem# add a read that matches only the local database, but selects 1632de962bdSlukem# also the remote as candidate; this should be removed to compare 1642de962bdSlukem# execution times with test008... 1652de962bdSlukemfor f in $TESTDIR/$DATADIR/do_read.* ; do 1662de962bdSlukem echo "ou=Meta,$METABASEDN" >> $f 1672de962bdSlukemdone 1682de962bdSlukem 1692de962bdSlukem# add a read that matches a referral in the local database only, 1702de962bdSlukem# but selects also the remote as candidate; this should be removed 1712de962bdSlukem# to compare execution times with test008... 1722de962bdSlukemfor f in $TESTDIR/$DATADIR/do_read.* ; do 1732de962bdSlukem echo "cn=Somewhere,ou=Meta,$METABASEDN" >> $f 1742de962bdSlukemdone 1752de962bdSlukem 1762de962bdSlukem# add a bind that resolves to a referral 1772de962bdSlukemfor f in $TESTDIR/$DATADIR/do_bind.* ; do 1782de962bdSlukem echo "cn=Foo,ou=Meta,$METABASEDN" >> $f 1792de962bdSlukem echo "bar" >> $f 1802de962bdSlukem echo "" >> $f 1812de962bdSlukem echo "" >> $f 1822de962bdSlukemdone 1832de962bdSlukem 1844e6df137Slukem# fix test data to include back-monitor, if available 1854e6df137Slukem# NOTE: copies do_* files from $TESTDIR/$DATADIR to $TESTDIR 186*e670fd5cSchristos$MONITORDATA "$TESTDIR/$DATADIR" "$TESTDIR" 1874e6df137Slukem 1882de962bdSlukemecho "Using tester for concurrent server access..." 189d11b170bStronBINDDN="cn=Manager,o=Local" 190d11b170bStronPASSWD="secret" 191*e670fd5cSchristos$SLAPDTESTER -P "$PROGDIR" -d "$TESTDIR" -H $URI3 \ 192d11b170bStron -D "$BINDDN" -w $PASSWD \ 193d11b170bStron -l $TESTLOOPS -L $TESTOLOOPS -j $TESTCHILDREN -r 20 \ 194d11b170bStron -i '!REFERRAL' -i '*INVALID_CREDENTIALS' -SS 1952de962bdSlukemRC=$? 1962de962bdSlukem 1972de962bdSlukemif test $RC != 0 ; then 1982de962bdSlukem echo "slapd-tester failed ($RC)!" 1992de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 2002de962bdSlukem exit $RC 2012de962bdSlukemfi 2022de962bdSlukem 2032de962bdSlukemecho "Using ldapsearch to retrieve all the entries..." 204*e670fd5cSchristos$LDAPSEARCH -S "" -b "$METABASEDN" -H $URI3 \ 2052de962bdSlukem '(objectClass=*)' > $SEARCHOUT 2>&1 2062de962bdSlukemRC=$? 2072de962bdSlukem 2082de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 2092de962bdSlukem 2102de962bdSlukemif test $RC != 0 ; then 2112de962bdSlukem echo "ldapsearch failed ($RC)!" 2122de962bdSlukem exit $RC 2132de962bdSlukemfi 2142de962bdSlukem 2152de962bdSlukemecho "Filtering ldapsearch results..." 216ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 2172de962bdSlukemecho "Filtering original ldif used to create database..." 218ef2f90d3Sadam$LDIFFILTER < $METACONCURRENCYOUT > $LDIFFLT 2192de962bdSlukemecho "Comparing filter output..." 2202de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 2212de962bdSlukem 2222de962bdSlukemif test $? != 0 ; then 2232de962bdSlukem echo "comparison failed - slapd-ldap search/modification didn't succeed" 2242de962bdSlukem exit 1 2252de962bdSlukemfi 2262de962bdSlukem 2272de962bdSlukemecho ">>>>> Test succeeded" 2282de962bdSlukem 2292de962bdSlukemtest $KILLSERVERS != no && wait 2302de962bdSlukem 2312de962bdSlukemexit 0 232