1#! /bin/sh 2# $OpenLDAP$ 3## This work is part of OpenLDAP Software <http://www.openldap.org/>. 4## 5## Copyright 1998-2021 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 16echo "running defines.sh" 17. $SRCDIR/scripts/defines.sh 18 19mkdir -p $TESTDIR $DBDIR1 20 21echo "Starting slapd on TCP/IP port $PORT..." 22. $CONFFILTER $BACKEND < $SCHEMACONF > $CONF1 23$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 24PID=$! 25if test $WAIT != 0 ; then 26 echo PID $PID 27 read foo 28fi 29KILLPIDS="$PID" 30 31sleep 1 32 33echo "Using ldapsearch to check that slapd is running..." 34for 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 43done 44 45echo "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 56RC=$? 57 58if test $RC != 0 ; then 59 echo "ldapsearch failed ($RC)!" 60 test $KILLSERVERS != no && kill -HUP $KILLPIDS 61 exit $RC 62fi 63 64# Compare results, ignoring possible difference of IPv4/IPv6 localhost address 65localrewrite='s/=127\.0\.0\.1:/=LOCAL:/; s/=\[::1\]:/=LOCAL:/' 66echo "Filtering ldapsearch results..." 67sed -e "$localrewrite" < $SEARCHOUT | $LDIFFILTER > $SEARCHFLT 68echo "Filtering expected data..." 69. $CONFFILTER < $MONITOROUT1 | sed -e "$localrewrite" | $LDIFFILTER > $LDIFFLT 70echo "Comparing filter output..." 71$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 72 73if test $? != 0 ; then 74 echo "comparison failed - connection monitor output is not correct" 75 test $KILLSERVERS != no && kill -HUP $KILLPIDS 76 exit 1 77fi 78 79echo "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 85RC=$? 86 87if test $RC != 0 ; then 88 echo "ldapsearch failed ($RC)!" 89 test $KILLSERVERS != no && kill -HUP $KILLPIDS 90 exit $RC 91fi 92 93echo "Filtering ldapsearch results..." 94$LDIFFILTER -b monitor < $SEARCHOUT > $SEARCHFLT 95 96echo "Comparing filter output..." 97$CMP $SEARCHFLT $MONITOROUT2 > $CMPOUT 98 99if test $? != 0 ; then 100 echo "comparison failed - database monitor output is not correct" 101 test $KILLSERVERS != no && kill -HUP $KILLPIDS 102 exit 1 103fi 104 105echo "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 110RC=$? 111 112if test $RC != 0 ; then 113 echo "ldapsearch failed ($RC)!" 114 test $KILLSERVERS != no && kill -HUP $KILLPIDS 115 exit $RC 116fi 117 118echo "Filtering ldapsearch results..." 119$LDIFFILTER -b monitor < $SEARCHOUT > $SEARCHFLT 120 121echo "Comparing filter output..." 122$CMP $SEARCHFLT $MONITOROUT3 > $CMPOUT 123 124if test $? != 0 ; then 125 echo "comparison failed - statistics monitor output is not correct" 126 test $KILLSERVERS != no && kill -HUP $KILLPIDS 127 exit 1 128fi 129 130echo "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 135RC=$? 136 137if test $RC != 0 ; then 138 echo "ldapsearch failed ($RC)!" 139 test $KILLSERVERS != no && kill -HUP $KILLPIDS 140 exit $RC 141fi 142 143echo "Filtering ldapsearch results..." 144$LDIFFILTER -b monitor < $SEARCHOUT > $SEARCHFLT 145 146echo "Comparing filter output..." 147$CMP $SEARCHFLT $MONITOROUT4 > $CMPOUT 148 149if test $? != 0 ; then 150 echo "comparison failed - operations monitor output is not correct" 151 test $KILLSERVERS != no && kill -HUP $KILLPIDS 152 exit 1 153fi 154 155test $KILLSERVERS != no && kill -HUP $KILLPIDS 156 157echo ">>>>> Test succeeded" 158 159test $KILLSERVERS != no && wait 160 161exit 0 162 163