Home | History | Annotate | Line # | Download | only in lloadd
      1 #! /bin/sh
      2 # $OpenLDAP$
      3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
      4 ##
      5 ## Copyright 1998-2024 The OpenLDAP Foundation.
      6 ## All rights reserved.
      7 ##
      8 ## Redistribution and use in source and binary forms, with or without
      9 ## modification, are permitted only as authorized by the OpenLDAP
     10 ## Public License.
     11 ##
     12 ## A copy of this license is available in the file LICENSE in the
     13 ## top-level directory of the distribution or, alternatively, at
     14 ## <http://www.OpenLDAP.org/license.html>.
     15 
     16 echo "running defines.sh"
     17 . $SRCDIR/scripts/defines.sh
     18 
     19 if test x$TESTLOOPS = x ; then
     20     TESTLOOPS=50
     21 fi
     22 
     23 if test x$TESTCHILDREN = x ; then
     24     TESTCHILDREN=20
     25 fi
     26 
     27 if test x$MAXRETRIES = x ; then
     28     MAXRETRIES=5
     29 fi
     30 
     31 mkdir -p $TESTDIR $DBDIR1 $DBDIR2
     32 
     33 $SLAPPASSWD -g -n >$CONFIGPWF
     34 echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
     35 
     36 echo "Running slapadd to build slapd database..."
     37 . $CONFFILTER $BACKEND < $CONF > $CONF2
     38 $SLAPADD -f $CONF2 -l $LDIFORDERED
     39 RC=$?
     40 if test $RC != 0 ; then
     41     echo "slapadd failed ($RC)!"
     42     exit $RC
     43 fi
     44 
     45 echo "Starting a slapd on TCP/IP port $PORT2..."
     46 $SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
     47 PID=$!
     48 if test $WAIT != 0 ; then
     49     echo PID $PID
     50     read foo
     51 fi
     52 PID2="$PID"
     53 KILLPIDS="$PID"
     54 
     55 for i in 0 1 2 3 4 5; do
     56     $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
     57         '(objectclass=*)' > /dev/null 2>&1
     58     RC=$?
     59     if test $RC = 0 ; then
     60         break
     61     fi
     62     echo "Waiting $SLEEP1 seconds for slapd to start..."
     63     sleep $SLEEP1
     64 done
     65 if test $RC != 0 ; then
     66     echo "ldapsearch failed ($RC)!"
     67     test $KILLSERVERS != no && kill -HUP $KILLPIDS
     68     exit $RC
     69 fi
     70 
     71 echo "Running slapadd to build slapd database..."
     72 . $CONFFILTER $BACKEND < $CONFTWO > $CONF3
     73 $SLAPADD -f $CONF3 -l $LDIFORDERED
     74 RC=$?
     75 if test $RC != 0 ; then
     76     echo "slapadd failed ($RC)!"
     77     test $KILLSERVERS != no && kill -HUP $KILLPIDS
     78     exit $RC
     79 fi
     80 
     81 echo "Running slapindex to index slapd database..."
     82 $SLAPINDEX -f $CONF3
     83 RC=$?
     84 if test $RC != 0 ; then
     85     echo "warning: slapindex failed ($RC)"
     86     echo "  assuming no indexing support"
     87 fi
     88 
     89 echo "Starting second slapd on TCP/IP port $PORT3..."
     90 $SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 &
     91 PID=$!
     92 if test $WAIT != 0 ; then
     93     echo PID $PID
     94     read foo
     95 fi
     96 PID2="$PID"
     97 KILLPIDS="$KILLPIDS $PID"
     98 
     99 sleep $SLEEP0
    100 
    101 echo "Testing slapd searching..."
    102 for i in 0 1 2 3 4 5; do
    103     $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \
    104         '(objectclass=*)' > /dev/null 2>&1
    105     RC=$?
    106     if test $RC = 0 ; then
    107         break
    108     fi
    109     echo "Waiting $SLEEP1 seconds for slapd to start..."
    110     sleep $SLEEP1
    111 done
    112 if test $RC != 0 ; then
    113     echo "ldapsearch failed ($RC)!"
    114     test $KILLSERVERS != no && kill -HUP $KILLPIDS
    115     exit $RC
    116 fi
    117 
    118 echo "Starting lloadd on TCP/IP port $PORT1..."
    119 . $CONFFILTER $BACKEND < $LLOADDCONF > $CONF1.lloadd
    120 if test $AC_lloadd = lloaddyes; then
    121     $LLOADD -f $CONF1.lloadd -h $URI1 -d $LVL > $LOG1 2>&1 &
    122 else
    123     . $CONFFILTER $BACKEND < $SLAPDLLOADCONF > $CONF1.slapd
    124     # FIXME: this won't work on Windows, but lloadd doesn't support Windows yet
    125     $SLAPD -f $CONF1.slapd -h $URI6 -d $LVL > $LOG1 2>&1 &
    126 fi
    127 PID=$!
    128 if test $WAIT != 0 ; then
    129     echo PID $PID
    130     read foo
    131 fi
    132 KILLPIDS="$KILLPIDS $PID"
    133 
    134 echo "Testing slapd searching..."
    135 for i in 0 1 2 3 4 5; do
    136     $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
    137         '(objectclass=*)' > /dev/null 2>&1
    138     RC=$?
    139     if test $RC = 0 ; then
    140         break
    141     fi
    142     echo "Waiting $SLEEP1 seconds for lloadd to start..."
    143     sleep $SLEEP1
    144 done
    145 
    146 if test $RC != 0 ; then
    147     echo "ldapsearch failed ($RC)!"
    148     test $KILLSERVERS != no && kill -HUP $KILLPIDS
    149     exit $RC
    150 fi
    151 
    152 # fix test data to include back-monitor, if available
    153 # NOTE: copies do_* files from $DATADIR to $TESTDIR
    154 $MONITORDATA "$DATADIR" "$TESTDIR"
    155 
    156 
    157 echo "Using tester for concurrent server access ($TESTCHILDREN x $TESTLOOPS ops)..."
    158 $SLAPDTESTER -P "$PROGDIR" -d "$TESTDIR" \
    159     -H $URI1 -D "$MANAGERDN" -w $PASSWD \
    160     -t 1 -l $TESTLOOPS -r $MAXRETRIES -j $TESTCHILDREN \
    161     -i '*INVALID_CREDENTIALS,*BUSY,UNWILLING_TO_PERFORM'
    162 RC=$?
    163 
    164 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    165 
    166 if test $RC != 0 ; then
    167     echo "slapd-tester failed ($RC)!"
    168     exit $RC
    169 fi
    170 
    171 echo ">>>>> Test succeeded"
    172 
    173 test $KILLSERVERS != no && wait
    174 
    175 exit 0
    176