12de962bdSlukem#! /bin/sh 22de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 32de962bdSlukem## 4*e670fd5cSchristos## Copyright 2004-2021 The OpenLDAP Foundation. 52de962bdSlukem## All rights reserved. 62de962bdSlukem## 72de962bdSlukem## Redistribution and use in source and binary forms, with or without 82de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 92de962bdSlukem## Public License. 102de962bdSlukem## 112de962bdSlukem## A copy of this license is available in the file LICENSE in the 122de962bdSlukem## top-level directory of the distribution or, alternatively, at 132de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 142de962bdSlukem 152de962bdSlukemecho "running defines.sh" 162de962bdSlukem. $SRCDIR/scripts/defines.sh 172de962bdSlukem 182de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 192de962bdSlukem 20*e670fd5cSchristos. $CONFFILTER $BACKEND < $EMPTYDNCONF > $CONF1 212de962bdSlukem 222de962bdSlukemecho "Running slapadd to build \"dc=example,dc=com\" slapd database..." 232de962bdSlukem$SLAPADD -f $CONF1 -n 1 -l $LDIFEMPTYDN1 242de962bdSlukemRC=$? 252de962bdSlukemif test $RC != 0 ; then 262de962bdSlukem echo "slapadd failed ($RC)!" 272de962bdSlukem exit $RC 282de962bdSlukemfi 292de962bdSlukem 302de962bdSlukemecho "Running slapadd to build empty DN slapd database..." 312de962bdSlukem$SLAPADD -f $CONF1 -b "" -l $LDIFEMPTYDN2 322de962bdSlukemRC=$? 332de962bdSlukemif test $RC != 0 ; then 342de962bdSlukem echo "slapadd failed ($RC)!" 352de962bdSlukem exit $RC 362de962bdSlukemfi 372de962bdSlukem 382de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 39*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 402de962bdSlukemPID=$! 412de962bdSlukemif test $WAIT != 0 ; then 422de962bdSlukem echo PID $PID 432de962bdSlukem read foo 442de962bdSlukemfi 452de962bdSlukemKILLPIDS="$PID" 462de962bdSlukem 472de962bdSlukemsleep 1 482de962bdSlukem 492de962bdSlukemecho "Testing slapd empty DN handling..." 502de962bdSlukemfor i in 0 1 2 3 4 5; do 51*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 522de962bdSlukem 'objectclass=*' > /dev/null 2>&1 532de962bdSlukem RC=$? 542de962bdSlukem if test $RC = 0 ; then 552de962bdSlukem break 562de962bdSlukem fi 572de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 582de962bdSlukem sleep 5 592de962bdSlukemdone 602de962bdSlukem 612de962bdSlukemif test $RC != 0 ; then 622de962bdSlukem echo "ldapsearch failed ($RC)!" 632de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 642de962bdSlukem exit $RC 652de962bdSlukemfi 662de962bdSlukem 672de962bdSlukemecho "Searching database..." 682de962bdSlukem 69*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -H $URI1 > $SEARCHOUT 2>&1 702de962bdSlukem 712de962bdSlukemRC=$? 722de962bdSlukemif test $RC != 0 ; then 732de962bdSlukem echo "ldapsearch failed ($RC)!" 742de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 752de962bdSlukem exit $RC 762de962bdSlukemfi 772de962bdSlukem 782de962bdSlukemkill -HUP $KILLPIDS 792de962bdSlukemwait 802de962bdSlukem 812de962bdSlukemecho "Filtering ldapsearch results..." 82ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 83ef2f90d3Sadamecho "Filtering expected results..." 84ef2f90d3Sadam$LDIFFILTER < $EMPTYDNOUT1 > $LDIFFLT 852de962bdSlukemecho "Comparing ldapsearch results against original..." 86ef2f90d3Sadam$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 872de962bdSlukem 882de962bdSlukemif test $? != 0 ; then 892de962bdSlukem echo "comparison failed - empty DN write operations did not complete correctly" 902de962bdSlukem exit 1 912de962bdSlukemfi 922de962bdSlukem 932de962bdSlukemecho "Comparison of database generated via slapadd succeeded" 942de962bdSlukem 952de962bdSlukemecho "Cleaning up database directories..." 962de962bdSlukem/bin/rm -rf $TESTDIR/db.* 972de962bdSlukem 982de962bdSlukemmkdir -p $TESTDIR $DBDIR1 $DBDIR2 992de962bdSlukem 1002de962bdSlukemecho "Starting slapd on TCP/IP port $PORT1..." 101*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 1022de962bdSlukemPID=$! 1032de962bdSlukemif test $WAIT != 0 ; then 1042de962bdSlukem echo PID $PID 1052de962bdSlukem read foo 1062de962bdSlukemfi 1072de962bdSlukemKILLPIDS="$PID" 1082de962bdSlukem 1092de962bdSlukemsleep 1 1102de962bdSlukem 1112de962bdSlukemecho "Testing slapd empty DN handling..." 1122de962bdSlukemfor i in 0 1 2 3 4 5; do 113*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 1142de962bdSlukem 'objectclass=*' > /dev/null 2>&1 1152de962bdSlukem RC=$? 1162de962bdSlukem if test $RC = 0 ; then 1172de962bdSlukem break 1182de962bdSlukem fi 1192de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 1202de962bdSlukem sleep 5 1212de962bdSlukemdone 1222de962bdSlukem 1232de962bdSlukemif test $RC != 0 ; then 1242de962bdSlukem echo "ldapsearch failed ($RC)!" 1252de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1262de962bdSlukem exit $RC 1272de962bdSlukemfi 1282de962bdSlukem 1292de962bdSlukemecho "Loading database..." 130*e670fd5cSchristos$LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD \ 1312de962bdSlukem -f $LDIFEMPTYDN1 > /dev/null 2>&1 132*e670fd5cSchristos$LDAPADD -D "$EMPTYDNDN" -H $URI1 -w $PASSWD \ 1332de962bdSlukem -f $LDIFEMPTYDN2 > /dev/null 2>&1 1342de962bdSlukem 135*e670fd5cSchristos$LDAPMODIFY -D "$EMPTYDNDN" -H $URI1 -w $PASSWD \ 1362de962bdSlukem > /dev/null 2>&1 << EOF 1372de962bdSlukemdn: o=Beispiel,c=DE 1382de962bdSlukemchangetype: delete 1392de962bdSlukem 1402de962bdSlukemdn: c=DE 1412de962bdSlukemchangetype: delete 1422de962bdSlukemEOF 1432de962bdSlukem 1442de962bdSlukemecho "Searching database..." 1452de962bdSlukem 146*e670fd5cSchristos$LDAPSEARCH -S "" -b "" -H $URI1 > $SEARCHOUT 2>&1 1472de962bdSlukem 1482de962bdSlukemRC=$? 1492de962bdSlukemif test $RC != 0 ; then 1502de962bdSlukem echo "ldapsearch failed ($RC)!" 1512de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1522de962bdSlukem exit $RC 1532de962bdSlukemfi 1542de962bdSlukem 1552de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 1562de962bdSlukem 1572de962bdSlukemecho "Filtering ldapsearch results..." 158ef2f90d3Sadam$LDIFFILTER < $SEARCHOUT > $SEARCHFLT 159ef2f90d3Sadamecho "Filtering expected results..." 160ef2f90d3Sadam$LDIFFILTER < $EMPTYDNOUT2 > $LDIFFLT 1612de962bdSlukemecho "Comparing ldapsearch results against original..." 162ef2f90d3Sadam$CMP $SEARCHFLT $LDIFFLT > $CMPOUT 1632de962bdSlukem 1642de962bdSlukemif test $? != 0 ; then 1652de962bdSlukem echo "comparison failed - empty DN write operations did not complete correctly" 1662de962bdSlukem exit 1 1672de962bdSlukemfi 1682de962bdSlukem 1692de962bdSlukem##### 1702de962bdSlukem 1712de962bdSlukemecho ">>>>> Test succeeded" 1722de962bdSlukem 1732de962bdSlukemtest $KILLSERVERS != no && wait 1742de962bdSlukem 1752de962bdSlukemexit 0 176