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