12de962bdSlukem#! /bin/sh 2d11b170bStron# $OpenLDAP$ */ 32de962bdSlukem## This work is part of OpenLDAP Software <http://www.openldap.org/>. 42de962bdSlukem## 5*e670fd5cSchristos## Copyright 1998-2021 The OpenLDAP Foundation. 62de962bdSlukem## All rights reserved. 72de962bdSlukem## 82de962bdSlukem## Redistribution and use in source and binary forms, with or without 92de962bdSlukem## modification, are permitted only as authorized by the OpenLDAP 102de962bdSlukem## Public License. 112de962bdSlukem## 122de962bdSlukem## A copy of this license is available in the file LICENSE in the 132de962bdSlukem## top-level directory of the distribution or, alternatively, at 142de962bdSlukem## <http://www.OpenLDAP.org/license.html>. 152de962bdSlukem 162de962bdSlukemecho "running defines.sh" 172de962bdSlukem. $SRCDIR/scripts/defines.sh 182de962bdSlukem 192de962bdSlukemif test $SYNCPROV = syncprovno; then 202de962bdSlukem echo "Syncrepl provider overlay not available, test skipped" 212de962bdSlukem exit 0 222de962bdSlukemfi 232de962bdSlukem 242de962bdSlukemmkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR1C $DBDIR2A $DBDIR2B 252de962bdSlukem 262de962bdSlukemecho "Running slapadd to build glued slapd databases..." 27*e670fd5cSchristos. $CONFFILTER $BACKEND < $GLUECONF > $CONF1 282de962bdSlukem$SLAPADD -d $LVL -f $CONF1 -l $LDIFORDERED > $SLAPADDLOG1 2>&1 292de962bdSlukemRC=$? 302de962bdSlukemif test $RC != 0 ; then 312de962bdSlukem echo "slapadd failed ($RC)!" 322de962bdSlukem exit $RC 332de962bdSlukemfi 342de962bdSlukem 354e6df137Slukemrm -rf $DBDIR1A/* $DBDIR1B/* 362de962bdSlukemcp -pr $DBDIR1C $DBDIR2C 372de962bdSlukem 382de962bdSlukemecho "Starting slapd 1 on TCP/IP port $PORT1..." 39*e670fd5cSchristos. $CONFFILTER $BACKEND < $GLUESYNCCONF1 > $CONF1 40*e670fd5cSchristos$SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 412de962bdSlukemPID=$! 422de962bdSlukemif test $WAIT != 0 ; then 432de962bdSlukem echo PID $PID 442de962bdSlukem read foo 452de962bdSlukemfi 462de962bdSlukemKILLPIDS="$PID" 472de962bdSlukem 482de962bdSlukemsleep 1 492de962bdSlukem 502de962bdSlukemecho "Using ldapsearch to check that slapd 1 is running..." 512de962bdSlukemfor i in 0 1 2 3 4 5; do 52*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 532de962bdSlukem '(objectclass=*)' > /dev/null 2>&1 542de962bdSlukem RC=$? 552de962bdSlukem if test $RC = 0 ; then 562de962bdSlukem break 572de962bdSlukem fi 582de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 592de962bdSlukem sleep 5 602de962bdSlukemdone 612de962bdSlukem 622de962bdSlukemecho "Starting slapd 2 on TCP/IP port $PORT2..." 63*e670fd5cSchristos. $CONFFILTER $BACKEND < $GLUESYNCCONF2 > $CONF2 64*e670fd5cSchristos$SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 & 652de962bdSlukemPID=$! 662de962bdSlukemif test $WAIT != 0 ; then 672de962bdSlukem echo PID $PID 682de962bdSlukem read foo 692de962bdSlukemfi 702de962bdSlukemKILLPIDS="$KILLPIDS $PID" 712de962bdSlukem 722de962bdSlukemsleep 1 732de962bdSlukem 742de962bdSlukemecho "Using ldapsearch to check that slapd 2 is running..." 752de962bdSlukemfor i in 0 1 2 3 4 5; do 76*e670fd5cSchristos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 772de962bdSlukem '(objectclass=*)' > /dev/null 2>&1 782de962bdSlukem RC=$? 792de962bdSlukem if test $RC = 0 ; then 802de962bdSlukem break 812de962bdSlukem fi 822de962bdSlukem echo "Waiting 5 seconds for slapd to start..." 832de962bdSlukem sleep 5 842de962bdSlukemdone 852de962bdSlukem 862de962bdSlukemSUBTREE1="ou=Information Technology Division,ou=People,dc=example,dc=com" 872de962bdSlukemSUBTREE2="ou=Groups,dc=example,dc=com" 882de962bdSlukem 892de962bdSlukemecho "Using ldapadd to populate subtree=\"${SUBTREE1}\" on port $PORT1..." 90*e670fd5cSchristos$LDAPADD -D "cn=Manager 1,$BASEDN" -w $PASSWD -H $URI1 \ 912de962bdSlukem -f $LDIFORDERED -c \ 922de962bdSlukem > /dev/null 2>&1 932de962bdSlukemRC=$? 942de962bdSlukemcase $RC in 952de962bdSlukem0) 962de962bdSlukem echo "ldapadd should have failed ($RC)!" 972de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 982de962bdSlukem exit -1 992de962bdSlukem ;; 1002de962bdSlukem10|68) 1012de962bdSlukem # Fine if we get alreadyExists or referrals 1022de962bdSlukem ;; 1032de962bdSlukem*) 1042de962bdSlukem echo "ldapadd failed ($RC)!" 1052de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1062de962bdSlukem exit $RC 1072de962bdSlukem ;; 1082de962bdSlukemesac 1092de962bdSlukem 1102de962bdSlukemecho "Using ldapadd to populate subtree=\"${SUBTREE2}\" on port $PORT2..." 111*e670fd5cSchristos$LDAPADD -D "cn=Manager 2,$BASEDN" -w $PASSWD -H $URI2 \ 1122de962bdSlukem -f $LDIFORDERED -c \ 1132de962bdSlukem > /dev/null 2>&1 1142de962bdSlukemRC=$? 1152de962bdSlukemcase $RC in 1162de962bdSlukem0) 1172de962bdSlukem echo "ldapadd should have failed ($RC)!" 1182de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1192de962bdSlukem exit -1 1202de962bdSlukem ;; 1212de962bdSlukem10|68) 1222de962bdSlukem # Fine if we get alreadyExists or referrals 1232de962bdSlukem ;; 1242de962bdSlukem*) 1252de962bdSlukem echo "ldapadd failed ($RC)!" 1262de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1272de962bdSlukem exit $RC 1282de962bdSlukem ;; 1292de962bdSlukemesac 1302de962bdSlukem 1314e6df137Slukemecho "Waiting $SLEEP1 seconds for shadow subtrees to sync..." 1324e6df137Slukemsleep $SLEEP1 1332de962bdSlukem 1342de962bdSlukemecho "Filtering original ldif used to create database..." 135ef2f90d3Sadam$LDIFFILTER < $GLUESYNCOUT > $LDIFFLT 1362de962bdSlukem 137*e670fd5cSchristosfor n in 1 2 ; do 138*e670fd5cSchristos URI=`eval echo '$URI'$n` 139*e670fd5cSchristos echo "Using ldapsearch to read all the entries from server $n..." 140*e670fd5cSchristos $LDAPSEARCH -b "$BASEDN" -H $URI \ 141*e670fd5cSchristos -S "" '(objectclass=*)' > "${SEARCHOUT}.${n}" 2>&1 1422de962bdSlukem RC=$? 1432de962bdSlukem 1442de962bdSlukem if test $RC != 0 ; then 1452de962bdSlukem echo "ldapsearch failed ($RC)!" 1462de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1472de962bdSlukem exit $RC 1482de962bdSlukem fi 1492de962bdSlukem 1502de962bdSlukem echo "Filtering ldapsearch results..." 151*e670fd5cSchristos $LDIFFILTER < "${SEARCHOUT}.${n}" > $SEARCHFLT 1522de962bdSlukem echo "Comparing filter output..." 1532de962bdSlukem $CMP $SEARCHFLT $LDIFFLT > $CMPOUT 1542de962bdSlukem 1552de962bdSlukem if test $? != 0 ; then 1562de962bdSlukem echo "comparison failed - database was not created correctly" 1572de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1582de962bdSlukem exit 1 1592de962bdSlukem fi 1602de962bdSlukemdone 1612de962bdSlukem 1622de962bdSlukemecho "Testing ldapdelete propagation..." 1632de962bdSlukem$LDAPDELETE -D "cn=Manager 1,$BASEDN" -w $PASSWD -H $URI1 "$BABSDN" \ 1642de962bdSlukem > $TESTOUT 2>&1 1652de962bdSlukemRC=$? 1662de962bdSlukemif test $RC != 0 ; then 1672de962bdSlukem echo "ldapdelete failed ($RC)!" 1682de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1692de962bdSlukem exit $RC 1702de962bdSlukemfi 1712de962bdSlukem 1722de962bdSlukem# This usually propagates immediately 1732de962bdSlukemsleep 1 1742de962bdSlukem 1752de962bdSlukem$LDAPSEARCH -H $URI2 -b "$BABSDN" > $TESTOUT 2>&1 1762de962bdSlukemRC=$? 177ef2f90d3Sadamif test $RC = 0 && test $BACKEND != null ; then 1782de962bdSlukem echo "ldapsearch should have failed ($RC)!" 1792de962bdSlukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 1802de962bdSlukem exit -1 1812de962bdSlukemfi 1822de962bdSlukem 1832de962bdSlukemtest $KILLSERVERS != no && kill -HUP $KILLPIDS 1842de962bdSlukem 1852de962bdSlukemecho ">>>>> Test succeeded" 1862de962bdSlukem 1872de962bdSlukemtest $KILLSERVERS != no && wait 1882de962bdSlukem 1892de962bdSlukemexit 0 190