]> git.sur5r.net Git - openldap/blob - tests/data/regressions/its8752/its8752
Fix script so it exits
[openldap] / tests / data / regressions / its8752 / its8752
1 #! /bin/sh
2 # $OpenLDAP$
3 ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 ##
5 ## Copyright 1998-2017 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 if test $SYNCPROV = syncprovno; then
20         echo "Syncrepl provider overlay not available, test skipped"
21         exit 0
22 fi
23 if test $ACCESSLOG = accesslogno; then
24         echo "Accesslog overlay not available, test skipped"
25         exit 0
26 fi
27 if test $BACKEND = ldif ; then
28         echo "$BACKEND backend unsuitable, test skipped"
29         exit 0
30 fi
31
32
33 MMR=4
34 XDIR=$TESTDIR/srv
35
36 mkdir -p $TESTDIR
37
38 ITS=8752
39 ITSDIR=$DATADIR/regressions/its$ITS
40
41 n=1
42 while [ $n -le $MMR ]; do
43         DBDIR=${XDIR}$n/db
44         mkdir -p ${XDIR}$n $DBDIR.1 $DBDIR.2
45         n=`expr $n + 1`
46 done
47
48 KILLPIDS=
49
50 echo "Starting slapd on TCP/IP port $PORT1..."
51 . $CONFFILTER $BACKEND $MONITORDB < $ITSDIR/slapd.conf > $CONF1
52 $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
53 PID=$!
54 if test $WAIT != 0 ; then
55         echo PID $PID
56         read foo
57 fi
58 KILLPIDS="$PID"
59
60 sleep 1
61
62 echo "Using ldapsearch to check that slapd is running..."
63 for i in 0 1 2 3 4 5; do
64         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
65                 'objectclass=*' > /dev/null 2>&1
66         RC=$?
67         if test $RC = 0 ; then
68                 break
69         fi
70         echo "Waiting 5 seconds for slapd to start..."
71         sleep 5
72 done
73
74 if test $RC != 0 ; then
75         echo "ldapsearch failed ($RC)!"
76         test $KILLSERVERS != no && kill -HUP $KILLPIDS
77         exit $RC
78 fi
79
80 echo "Populating database on first provider..."
81 $LDAPADD -D $MANAGERDN -H $URI1 -w $PASSWD << EOMODS >> $TESTOUT 2>&1
82 dn: $BASEDN
83 objectClass: organization
84 objectClass: dcObject
85 o: Example, Inc.
86 dc: example
87
88 dn: ou=People,$BASEDN
89 objectClass: organizationalUnit
90 ou: People
91
92 dn: ou=Groups,$BASEDN
93 objectClass: organizationalUnit
94 ou: Groups
95
96 dn: cn=Roger Rabbit,ou=People,$BASEDN
97 objectClass: inetOrgPerson
98 cn: Roger Rabbit
99 sn: Rabbit
100
101 dn: cn=Baby Herman,ou=People,$BASEDN
102 objectClass: inetOrgPerson
103 cn: Baby Herman
104 sn: Herman
105
106 dn: cn=Jessica_Rabbit,ou=People,$BASEDN
107 objectClass: inetOrgPerson
108 cn: Jessica_Rabbit
109 sn: Rabbit
110
111 dn: cn=Bugs_Bunny,ou=People,$BASEDN
112 objectClass: inetOrgPerson
113 cn: Bugs_Bunny
114 sn: Bunny
115
116 dn: cn=Daffy_Duck,ou=People,$BASEDN
117 objectClass: inetOrgPerson
118 cn: Daffy_Duck
119 sn: Duck
120
121 dn: cn=Elmer_Fudd,ou=People,$BASEDN
122 objectClass: inetOrgPerson
123 cn: Elmer_Fudd
124 sn: Fudd
125
126 dn: cn=Cartoonia,ou=Groups,$BASEDN
127 objectClass: groupOfNames
128 cn: Cartoonia
129 member: cn=Roger Rabbit,ou=People,$BASEDN
130 member: cn=Baby Herman,ou=People,$BASEDN
131 EOMODS
132
133 RC=$?
134
135 if test $RC != 0 ; then
136         echo "ldapadd failed ($RC)!"
137         test $KILLSERVERS != no && kill -HUP $KILLPIDS
138         exit $RC
139 fi
140
141 echo "Stopping slapd and reworking configuration for MMR..."
142
143 test $KILLSERVERS != no && kill -HUP $KILLPIDS
144
145 KILLPIDS=
146 n=1
147 while [ $n -le $MMR ]; do
148         MYURI=`eval echo '$URI'$n`
149         MYLOG=`eval echo '$LOG'$n`
150         MYCONF=`eval echo '$CONF'$n`
151         echo "Starting provider slapd on TCP/IP URI $MYURI"
152         . $CONFFILTER $BACKEND $MONITORDB < $ITSDIR/slapd.conf.mmr > $CONF
153         sed -e "s/MMR/$n/g" $CONF > $MYCONF
154         j=1
155         while [ $j -le $MMR ]; do
156                 MMCURI=`eval echo '$URI'$j`
157                 sed -e "s|MMC${j}|${MMCURI}|" $MYCONF > $CONF
158                 mv $CONF $MYCONF
159                 j=`expr $j + 1`
160         done
161         if [ -f $CONF ]; then
162                 rm -f $CONF
163         fi
164         $SLAPD -f $MYCONF -h $MYURI  -d $LVL $TIMING > $MYLOG 2>&1 &
165         PID=$!
166         if test $WAIT != 0 ; then
167                 echo PID $PID
168                 read foo
169         fi
170         KILLPIDS="$PID $KILLPIDS"
171         sleep 1
172
173         echo "Using ldapsearch to check that provider slapd is running..."
174         for i in 0 1 2 3 4 5; do
175                 $LDAPSEARCH -s base -b "" -H $MYURI \
176                         'objectclass=*' > /dev/null 2>&1
177                 RC=$?
178                 if test $RC = 0 ; then
179                         break
180                 fi
181                 echo "Waiting 5 seconds for slapd to start..."
182                 sleep 5
183         done
184         
185         if test $RC != 0 ; then
186                 echo "ldapsearch failed ($RC)!"
187                 test $KILLSERVERS != no && kill -HUP $KILLPIDS
188                 exit $RC
189         fi
190         n=`expr $n + 1`
191 done
192
193 n=1
194 while [ $n -le $MMR ]; do
195         echo "Modifying dn: cn=Elmer_Fudd,ou=People,dc=example,dc=com on master $n"
196         MYURI=`eval echo '$URI'$n`
197         $LDAPMODIFY -v -D "$MANAGERDN" -H $MYURI -w $PASSWD > \
198                 $TESTOUT 2>&1 << EOMODS
199
200 dn: cn=Elmer_Fudd,ou=People,$BASEDN
201 changetype: modify
202 replace: sn
203 sn: Fudd
204 EOMODS
205         sleep 1
206         n=`expr $n + 1`
207 done
208
209 test $KILLSERVERS != no && kill -HUP $KILLPIDS
210
211 echo ">>>>> Test succeeded"
212
213 test $KILLSERVERS != no && wait
214
215 exit 0