xref: /netbsd-src/external/bsd/openldap/dist/tests/scripts/test033-glue-syncrepl (revision e670fd5c413e99c2f6a37901bb21c537fcd322d2)
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