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