Home | History | Annotate | Line # | Download | only in scripts
      1      1.1      tron #! /bin/sh
      2      1.1      tron # $OpenLDAP$
      3      1.1      tron ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4      1.1      tron ##
      5  1.1.1.7  christos ## Copyright 1998-2024 The OpenLDAP Foundation.
      6      1.1      tron ## All rights reserved.
      7      1.1      tron ##
      8      1.1      tron ## Redistribution and use in source and binary forms, with or without
      9      1.1      tron ## modification, are permitted only as authorized by the OpenLDAP
     10      1.1      tron ## Public License.
     11      1.1      tron ##
     12      1.1      tron ## A copy of this license is available in the file LICENSE in the
     13      1.1      tron ## top-level directory of the distribution or, alternatively, at
     14      1.1      tron ## <http://www.OpenLDAP.org/license.html>.
     15      1.1      tron 
     16      1.1      tron # The default debug level logs more than 1Gb:
     17      1.1      tron case "$SLAPD_DEBUG_MT_HOT/$SLAPD_DEBUG" in
     18      1.1      tron /0 | /0x0 | /0X0 | /none | /NONE | /32768 | /0x8000 | 0X8000 | /0100000) :;;
     19      1.1      tron *) SLAPD_DEBUG=${SLAPD_DEBUG_MT_HOT-stats} ;;
     20      1.1      tron esac
     21      1.1      tron 
     22      1.1      tron echo "running defines.sh"
     23      1.1      tron . $SRCDIR/scripts/defines.sh
     24      1.1      tron 
     25      1.1      tron if test x$TESTLOOPS = x ; then
     26      1.1      tron 	TESTLOOPS=50
     27      1.1      tron fi
     28      1.1      tron 
     29      1.1      tron mkdir -p $TESTDIR $DBDIR1
     30      1.1      tron 
     31      1.1      tron #
     32      1.1      tron # Populate and start up slapd server with some random data
     33      1.1      tron #
     34      1.1      tron 
     35      1.1      tron echo "Running slapadd to build slapd database..."
     36  1.1.1.6  christos . $CONFFILTER $BACKEND < $MCONF > $ADDCONF
     37      1.1      tron $SLAPADD -f $ADDCONF -l $LDIFORDERED
     38      1.1      tron RC=$?
     39      1.1      tron if test $RC != 0 ; then
     40      1.1      tron 	echo "slapadd failed ($RC)!"
     41      1.1      tron 	exit $RC
     42      1.1      tron fi
     43      1.1      tron 
     44      1.1      tron echo "Running slapindex to index slapd database..."
     45  1.1.1.6  christos . $CONFFILTER $BACKEND < $CONF > $CONF1
     46      1.1      tron $SLAPINDEX -f $CONF1
     47      1.1      tron RC=$?
     48      1.1      tron if test $RC != 0 ; then
     49      1.1      tron 	echo "warning: slapindex failed ($RC)"
     50      1.1      tron 	echo "  assuming no indexing support"
     51      1.1      tron fi
     52      1.1      tron 
     53      1.1      tron echo "Starting slapd on TCP/IP port $PORT1..."
     54  1.1.1.6  christos echo $SLAPD -f $CONF1 -h $URI1 -d $LVL
     55  1.1.1.6  christos $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     56      1.1      tron PID=$!
     57      1.1      tron if test $WAIT != 0 ; then
     58      1.1      tron     echo PID $PID
     59      1.1      tron     read foo
     60      1.1      tron fi
     61      1.1      tron KILLPIDS="$PID"
     62      1.1      tron 
     63      1.1      tron sleep 1
     64      1.1      tron 
     65      1.1      tron # Perform a basic search, make sure of a functional setup
     66      1.1      tron echo "Testing basic monitor search..."
     67      1.1      tron for i in 0 1 2 3 4 5; do
     68      1.1      tron 	$LDAPSEARCH -s base -b "$MONITORDN" -H $URI1 \
     69      1.1      tron 		'(objectclass=*)' > /dev/null 2>&1
     70      1.1      tron 	RC=$?
     71      1.1      tron 	if test $RC = 0 ; then
     72      1.1      tron 		break
     73      1.1      tron 	fi
     74      1.1      tron 	echo "Waiting 5 seconds for slapd to start..."
     75      1.1      tron 	sleep 5
     76      1.1      tron done
     77      1.1      tron 
     78      1.1      tron if test $RC != 0 ; then
     79      1.1      tron 	echo "mt-hot read failed ($RC)!"
     80      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     81      1.1      tron 	exit $RC
     82      1.1      tron fi
     83      1.1      tron 
     84      1.1      tron cat /dev/null > $MTREADOUT
     85      1.1      tron 
     86      1.1      tron echo "Monitor searches"
     87      1.1      tron # Perform a basic single threaded search on a single connection
     88      1.1      tron THR=1
     89      1.1      tron OUTER=1
     90      1.1      tron INNER=`expr $TESTLOOPS \* 1000`
     91      1.1      tron echo "Testing basic mt-hot search: $THR threads ($OUTER x $INNER) loops..."
     92      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
     93      1.1      tron 	-e "$MONITORDN" \
     94      1.1      tron 	-m $THR -L $OUTER -l $INNER
     95      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
     96      1.1      tron 	-e "$MONITORDN" -f "(objectclass=*)" \
     97      1.1      tron 	-m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
     98      1.1      tron RC=$?
     99      1.1      tron if test $RC != 0 ; then
    100      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    101      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    102      1.1      tron 	exit $RC
    103      1.1      tron fi
    104      1.1      tron 
    105      1.1      tron # Perform a basic multi-threaded search on a single connection
    106      1.1      tron THR=5
    107      1.1      tron OUTER=1
    108      1.1      tron INNER=`expr $TESTLOOPS \* 200`
    109      1.1      tron echo "Testing basic mt-hot search: $THR threads ($OUTER x $INNER) loops..."
    110      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    111      1.1      tron 	-e "$MONITORDN" \
    112      1.1      tron 	-m $THR -L $OUTER -l $INNER
    113      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    114      1.1      tron 	-e "$MONITORDN" -f "(objectclass=*)" \
    115      1.1      tron 	-m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    116      1.1      tron RC=$?
    117      1.1      tron if test $RC != 0 ; then
    118      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    119      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    120      1.1      tron 	exit $RC
    121      1.1      tron fi
    122      1.1      tron 
    123      1.1      tron # Perform a basic multi-threaded search on a single connection
    124      1.1      tron THR=100
    125      1.1      tron OUTER=5
    126      1.1      tron INNER=`expr $TESTLOOPS \* 2`
    127      1.1      tron echo "Testing basic mt-hot search: $THR threads ($OUTER x $INNER) loops..."
    128      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    129      1.1      tron 	-e "$MONITORDN" \
    130      1.1      tron 	-m $THR -L $OUTER -l $INNER
    131      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    132      1.1      tron 	-e "$MONITORDN" -f "(objectclass=*)" \
    133      1.1      tron 	-m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    134      1.1      tron RC=$?
    135      1.1      tron if test $RC != 0 ; then
    136      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    137      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    138      1.1      tron 	exit $RC
    139      1.1      tron fi
    140      1.1      tron 
    141      1.1      tron # Perform a single threaded random DB search on a single connection
    142      1.1      tron echo "Random searches"
    143      1.1      tron THR=1
    144      1.1      tron OUTER=1
    145      1.1      tron INNER=`expr $TESTLOOPS \* 1000`
    146      1.1      tron echo "Testing random mt-hot search: $THR threads ($OUTER x $INNER) loops..."
    147      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    148      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    149      1.1      tron 	-m $THR -L $OUTER -l $INNER
    150      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    151      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    152      1.1      tron 	-m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    153      1.1      tron RC=$?
    154      1.1      tron if test $RC != 0 ; then
    155      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    156      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    157      1.1      tron 	exit $RC
    158      1.1      tron fi
    159      1.1      tron 
    160      1.1      tron # Perform a multi-threaded random DB search on a single connection
    161      1.1      tron THR=5
    162      1.1      tron OUTER=1
    163      1.1      tron INNER=`expr $TESTLOOPS \* 200`
    164      1.1      tron echo "Testing random mt-hot search: $THR threads ($OUTER x $INNER) loops..."
    165      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    166      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    167      1.1      tron 	-m $THR -L $OUTER -l $INNER
    168      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    169      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    170      1.1      tron 	-m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    171      1.1      tron RC=$?
    172      1.1      tron if test $RC != 0 ; then
    173      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    174      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    175      1.1      tron 	exit $RC
    176      1.1      tron fi
    177      1.1      tron 
    178      1.1      tron # Perform a multi-threaded random DB search on a single connection
    179      1.1      tron THR=100
    180      1.1      tron OUTER=5
    181      1.1      tron INNER=`expr $TESTLOOPS \* 2`
    182      1.1      tron echo "Testing random mt-hot search: $THR threads ($OUTER x $INNER) loops..."
    183      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    184      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    185      1.1      tron 	-m $THR -L $OUTER -l $INNER
    186      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    187      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    188      1.1      tron 	-m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    189      1.1      tron RC=$?
    190      1.1      tron if test $RC != 0 ; then
    191      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    192      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    193      1.1      tron 	exit $RC
    194      1.1      tron fi
    195      1.1      tron 
    196      1.1      tron # Perform a basic multi-threaded search using multiple connections
    197      1.1      tron echo "Multiple threads and connection searches"
    198      1.1      tron CONN=5
    199      1.1      tron THR=5
    200      1.1      tron OUTER=1
    201      1.1      tron INNER=`expr $TESTLOOPS \* 200`
    202      1.1      tron echo "Testing basic mt-hot search: $THR threads $CONN conns ($OUTER x $INNER) loops..."
    203      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    204      1.1      tron 	-e "$MONITORDN" \
    205      1.1      tron 	-c $CONN -m $THR -L $OUTER -l $INNER
    206      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    207      1.1      tron 	-e "$MONITORDN" -f "(objectclass=*)" \
    208      1.1      tron 	-c $CONN -m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    209      1.1      tron RC=$?
    210      1.1      tron if test $RC != 0 ; then
    211      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    212      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    213      1.1      tron 	exit $RC
    214      1.1      tron fi
    215      1.1      tron 
    216      1.1      tron # Perform a basic multi-threaded search using multiple connections
    217      1.1      tron CONN=5
    218      1.1      tron THR=50
    219      1.1      tron OUTER=5
    220      1.1      tron INNER=`expr $TESTLOOPS \* 20`
    221      1.1      tron echo "Testing basic mt-hot search: $THR threads $CONN conns ($OUTER x $INNER) loops..."
    222      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    223      1.1      tron 	-e "$MONITORDN" \
    224      1.1      tron 	-c $CONN -m $THR -L $OUTER -l $INNER
    225      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    226      1.1      tron 	-e "$MONITORDN" -f "(objectclass=*)" \
    227      1.1      tron 	-c $CONN -m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    228      1.1      tron RC=$?
    229      1.1      tron if test $RC != 0 ; then
    230      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    231      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    232      1.1      tron 	exit $RC
    233      1.1      tron fi
    234      1.1      tron 
    235      1.1      tron # Perform a multi-threaded random DB search using multiple connections
    236      1.1      tron CONN=5
    237      1.1      tron THR=100
    238      1.1      tron OUTER=5
    239      1.1      tron INNER=`expr $TESTLOOPS \* 2`
    240      1.1      tron echo "Testing random mt-hot search: $THR threads $CONN conns ($OUTER x $INNER) loops..."
    241      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    242      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    243      1.1      tron 	-c $CONN -m $THR -L $OUTER -l $INNER
    244      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    245      1.1      tron 	-e "$BASEDN" -f "(objectclass=*)" \
    246      1.1      tron 	-c $CONN -m $THR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    247      1.1      tron RC=$?
    248      1.1      tron if test $RC != 0 ; then
    249      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    250      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    251      1.1      tron 	exit $RC
    252      1.1      tron fi
    253      1.1      tron 
    254      1.1      tron # Perform a multi-threaded random reads and writes using single connection
    255      1.1      tron CONN=1
    256      1.1      tron THR=10
    257      1.1      tron WTHR=10
    258      1.1      tron OUTER=5
    259      1.1      tron INNER=`expr $TESTLOOPS \* 2`
    260      1.1      tron echo "Testing random mt-hot r/w search: $THR read threads $WTHR write threads $CONN conns ($OUTER x $INNER) loops..."
    261      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    262      1.1      tron 	-e "$BASEDN" -f "(&(!(cn=rwtest*))(objectclass=*))" \
    263      1.1      tron 	-c $CONN -m $THR -M $WTHR -L $OUTER -l $INNER
    264      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    265      1.1      tron 	-e "$BASEDN" -f "(&(!(cn=rwtest*))(objectclass=*))" \
    266      1.1      tron 	-c $CONN -m $THR -M $WTHR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    267      1.1      tron RC=$?
    268      1.1      tron if test $RC != 0 ; then
    269      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    270      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    271      1.1      tron 	exit $RC
    272      1.1      tron fi
    273      1.1      tron 
    274      1.1      tron # Perform a multi-threaded random reads and writes using multiple connections
    275      1.1      tron CONN=5
    276      1.1      tron THR=10
    277      1.1      tron WTHR=10
    278      1.1      tron OUTER=5
    279      1.1      tron INNER=`expr $TESTLOOPS \* 2`
    280      1.1      tron echo "Testing random mt-hot r/w search: $THR read threads $WTHR write threads $CONN conns ($OUTER x $INNER) loops..."
    281      1.1      tron echo $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    282      1.1      tron 	-e "$BASEDN" -f "(&(!(cn=rwtest*))(objectclass=*))" \
    283      1.1      tron 	-c $CONN -m $THR -M $WTHR -L $OUTER -l $INNER
    284      1.1      tron $SLAPDMTREAD -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    285      1.1      tron 	-e "$BASEDN" -f "(&(!(cn=rwtest*))(objectclass=*))" \
    286      1.1      tron 	-c $CONN -m $THR -M $WTHR -L $OUTER -l $INNER >> $MTREADOUT 2>&1
    287      1.1      tron RC=$?
    288      1.1      tron if test $RC != 0 ; then
    289      1.1      tron 	echo "slapd-mtread failed ($RC)!"
    290      1.1      tron 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    291      1.1      tron 	exit $RC
    292      1.1      tron fi
    293      1.1      tron 
    294      1.1      tron 
    295      1.1      tron test $KILLSERVERS != no && kill -HUP $KILLPIDS
    296      1.1      tron 
    297      1.1      tron echo ">>>>> Test succeeded"
    298      1.1      tron 
    299      1.1      tron exit 0
    300