xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/sql-test001-concurrency (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
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
192de962bdSlukemif test $BACKSQL = "sqlno" ; then
202de962bdSlukem	echo "SQL backend not available, test skipped"
212de962bdSlukem	exit 0
222de962bdSlukemfi
232de962bdSlukem
242de962bdSlukemif test $RDBMS = "rdbmsno" ; then
252de962bdSlukem	echo "SQL test not requested, test skipped"
262de962bdSlukem	exit 0
272de962bdSlukemfi
282de962bdSlukem
294e6df137Slukemif test "x$TESTLOOPS" = "x" ; then
304e6df137Slukem	TESTLOOPS=5
312de962bdSlukemfi
322de962bdSlukem
332de962bdSlukemif test "x$CHILDREN" = "x" ; then
342de962bdSlukem	CHILDREN="-j 4"
352de962bdSlukemelse
362de962bdSlukem	CHILDREN="-j $CHILDREN"
372de962bdSlukemfi
382de962bdSlukem
392de962bdSlukemSQLDATADIR=$TESTDIR/sql-concurrency
402de962bdSlukemmkdir -p $TESTDIR $SQLDATADIR
412de962bdSlukem
422de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..."
43*e670fd5cSchristos. $CONFFILTER $BACKEND < $SQLCONF > $CONF1
44*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
452de962bdSlukemPID=$!
462de962bdSlukemif test $WAIT != 0 ; then
472de962bdSlukem    echo PID $PID
482de962bdSlukem    read foo
492de962bdSlukemfi
502de962bdSlukemKILLPIDS="$PID"
512de962bdSlukem
522de962bdSlukemecho "Testing SQL backend concurrency..."
532de962bdSlukemfor i in 0 1 2 3 4 5; do
54*e670fd5cSchristos	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
552de962bdSlukem		'objectclass=*' > /dev/null 2>&1
562de962bdSlukem	RC=$?
572de962bdSlukem	if test $RC = 0 ; then
582de962bdSlukem		break
592de962bdSlukem	fi
602de962bdSlukem	echo "Waiting 5 seconds for slapd to start..."
612de962bdSlukem	sleep 5
622de962bdSlukemdone
632de962bdSlukem
642de962bdSlukemif test $RC != 0 ; then
652de962bdSlukem	echo "ldapsearch failed ($RC)!"
662de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
672de962bdSlukem	exit $RC
682de962bdSlukemfi
692de962bdSlukem
702de962bdSlukemecho "Using ldapsearch to retrieve all the entries..."
71*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
722de962bdSlukem			'(objectClass=*)' > $SEARCHOUT 2>&1
732de962bdSlukemRC=$?
742de962bdSlukem
752de962bdSlukemif test $RC != 0 ; then
762de962bdSlukem	echo "ldapsearch failed ($RC)!"
772de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
782de962bdSlukem	exit $RC
792de962bdSlukemfi
802de962bdSlukem
812de962bdSlukemecho "Filtering original ldif used to create database..."
82ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $LDIFFLT
832de962bdSlukem
842de962bdSlukemif test "${RDBMSWRITE}" != "yes"; then
852de962bdSlukem	echo "write test disabled for ${RDBMS}; set SLAPD_USE_SQLWRITE=yes to enable"
862de962bdSlukem	cp $SQLCONCURRENCYDIR/do_read* $SQLCONCURRENCYDIR/do_search* \
872de962bdSlukem		$SQLCONCURRENCYDIR/do_bind* $SQLDATADIR
882de962bdSlukemelse
892de962bdSlukem	case ${RDBMS} in
902de962bdSlukem		# list here the RDBMSes whose mapping allows writes
912de962bdSlukem	pgsql|ibmdb2)
922de962bdSlukem		cp $SQLCONCURRENCYDIR/do_* $SQLDATADIR
932de962bdSlukem		;;
942de962bdSlukem	*)
952de962bdSlukem		echo "write is not supported for ${RDBMS}; performing read-only concurrency test"
962de962bdSlukem		cp $SQLCONCURRENCYDIR/do_read* $SQLCONCURRENCYDIR/do_search* \
972de962bdSlukem			$SQLCONCURRENCYDIR/do_bind* $SQLDATADIR
982de962bdSlukem		;;
992de962bdSlukem	esac
1002de962bdSlukemfi
1012de962bdSlukem
1022de962bdSlukemecho "Using tester for concurrent server access..."
1032de962bdSlukem$SLAPDTESTER -P "$PROGDIR" -d "$SQLDATADIR" \
104*e670fd5cSchristos	-H $URI1 -D "$MANAGERDN" -w $PASSWD \
1054e6df137Slukem	-l $TESTLOOPS $CHILDREN -FF
1062de962bdSlukemRC=$?
1072de962bdSlukem
1082de962bdSlukemif test $RC != 0 ; then
1092de962bdSlukem	echo "slapd-tester failed ($RC)!"
1102de962bdSlukem	test $KILLSERVERS != no && kill -HUP $KILLPIDS
1112de962bdSlukem	exit $RC
1122de962bdSlukemfi
1132de962bdSlukem
1142de962bdSlukemecho "Using ldapsearch to retrieve all the entries..."
115*e670fd5cSchristos$LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
1162de962bdSlukem			'(objectClass=*)' > $SEARCHOUT 2>&1
1172de962bdSlukemRC=$?
1182de962bdSlukem
1192de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS
1202de962bdSlukem
1212de962bdSlukemif test $RC != 0 ; then
1222de962bdSlukem	echo "ldapsearch failed ($RC)!"
1232de962bdSlukem	exit $RC
1242de962bdSlukemfi
1252de962bdSlukem
1262de962bdSlukemecho "Filtering ldapsearch results..."
127ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT
1282de962bdSlukemecho "Comparing filter output..."
1292de962bdSlukem$CMP $SEARCHFLT $LDIFFLT > $CMPOUT
1302de962bdSlukem
1312de962bdSlukemif test $? != 0 ; then
1322de962bdSlukem	echo "comparison failed - database was not created correctly"
1332de962bdSlukem	exit 1
1342de962bdSlukemfi
1352de962bdSlukem
1362de962bdSlukemecho ">>>>> Test succeeded"
1372de962bdSlukemexit 0
1382de962bdSlukem
139