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