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