Home | History | Annotate | Line # | Download | only in scripts
      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 mkdir -p $TESTDIR $DBDIR1
     20 
     21 echo "Starting slapd on TCP/IP port $PORT..."
     22 . $CONFFILTER $BACKEND < $SCHEMACONF > $CONF1
     23 $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
     24 PID=$!
     25 if test $WAIT != 0 ; then
     26     echo PID $PID
     27     read foo
     28 fi
     29 KILLPIDS="$PID"
     30 
     31 sleep 1
     32 
     33 echo "Using ldapsearch to check that slapd is running..."
     34 for i in 0 1 2 3 4 5; do
     35 	$LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
     36 		'objectclass=*' > /dev/null 2>&1
     37 	RC=$?
     38 	if test $RC = 0 ; then
     39 		break
     40 	fi
     41 	echo "Waiting 5 seconds for slapd to start..."
     42 	sleep 5
     43 done
     44 
     45 echo "Using ldapsearch to read connection monitor entries..."
     46 $LDAPSEARCH -S "" -b "$CONNECTIONSMONITORDN" -H $URI1 \
     47 	'objectclass=*' \
     48 	structuralObjectClass entryDN \
     49 	monitorConnectionProtocol monitorConnectionOpsReceived \
     50 	monitorConnectionOpsExecuting monitorConnectionOpsPending \
     51 	monitorConnectionOpsCompleted monitorConnectionGet \
     52 	monitorConnectionRead monitorConnectionWrite \
     53 	monitorConnectionMask monitorConnectionAuthzDN \
     54 	monitorConnectionListener monitorConnectionLocalAddress \
     55 	> $SEARCHOUT 2>&1
     56 RC=$?
     57 
     58 if test $RC != 0 ; then
     59         echo "ldapsearch failed ($RC)!"
     60 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     61         exit $RC
     62 fi
     63 
     64 # Compare results, ignoring possible difference of IPv4/IPv6 localhost address
     65 localrewrite='s/=127\.0\.0\.1:/=LOCAL:/; s/=\[::1\]:/=LOCAL:/'
     66 echo "Filtering ldapsearch results..."
     67 sed -e "$localrewrite" < $SEARCHOUT | $LDIFFILTER > $SEARCHFLT
     68 echo "Filtering expected data..."
     69 . $CONFFILTER < $MONITOROUT1 | sed -e "$localrewrite" | $LDIFFILTER > $LDIFFLT
     70 echo "Comparing filter output..."
     71 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
     72 
     73 if test $? != 0 ; then
     74         echo "comparison failed - connection monitor output is not correct"
     75 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     76         exit 1
     77 fi
     78 
     79 echo "Using ldapsearch to read database monitor entries..."
     80 $LDAPSEARCH -S "" -b "$DATABASESMONITORDN" -H $URI1 \
     81 	'objectclass=*' \
     82 	structuralObjectClass entryDN namingContexts readOnly \
     83 	monitorIsShadow monitorContext \
     84 	> $SEARCHOUT 2>&1
     85 RC=$?
     86 
     87 if test $RC != 0 ; then
     88         echo "ldapsearch failed ($RC)!"
     89 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
     90         exit $RC
     91 fi
     92 
     93 echo "Filtering ldapsearch results..."
     94 $LDIFFILTER -b monitor < $SEARCHOUT > $SEARCHFLT
     95 
     96 echo "Comparing filter output..."
     97 $CMP $SEARCHFLT $MONITOROUT2 > $CMPOUT
     98 
     99 if test $? != 0 ; then
    100         echo "comparison failed - database monitor output is not correct"
    101 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    102         exit 1
    103 fi
    104 
    105 echo "Using ldapsearch to read statistics monitor entries..."
    106 $LDAPSEARCH -S "" -b "$STATISTICSMONITORDN" -H $URI1 \
    107 	'(|(cn=Entries)(cn=PDU)(cn=Referrals))' \
    108 	structuralObjectClass monitorCounter entryDN \
    109 	> $SEARCHOUT 2>&1
    110 RC=$?
    111 
    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 "Filtering ldapsearch results..."
    119 $LDIFFILTER -b monitor < $SEARCHOUT > $SEARCHFLT
    120 
    121 echo "Comparing filter output..."
    122 $CMP $SEARCHFLT $MONITOROUT3 > $CMPOUT
    123 
    124 if test $? != 0 ; then
    125         echo "comparison failed - statistics monitor output is not correct"
    126 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    127         exit 1
    128 fi
    129 
    130 echo "Using ldapsearch to read operation monitor entries..."
    131 $LDAPSEARCH -S "" -b "$OPERATIONSMONITORDN" -H $URI1 \
    132 	'objectclass=*' \
    133 	structuralObjectClass monitorOpInitiated monitorOpCompleted entryDN \
    134 	> $SEARCHOUT 2>&1
    135 RC=$?
    136 
    137 if test $RC != 0 ; then
    138         echo "ldapsearch failed ($RC)!"
    139 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    140         exit $RC
    141 fi
    142 
    143 echo "Filtering ldapsearch results..."
    144 $LDIFFILTER -b monitor < $SEARCHOUT > $SEARCHFLT
    145 
    146 echo "Comparing filter output..."
    147 $CMP $SEARCHFLT $MONITOROUT4 > $CMPOUT
    148 
    149 if test $? != 0 ; then
    150         echo "comparison failed - operations monitor output is not correct"
    151 	test $KILLSERVERS != no && kill -HUP $KILLPIDS
    152         exit 1
    153 fi
    154 
    155 test $KILLSERVERS != no && kill -HUP $KILLPIDS
    156 
    157 echo ">>>>> Test succeeded"
    158 
    159 test $KILLSERVERS != no && wait
    160 
    161 exit 0
    162 
    163