]> git.sur5r.net Git - openldap/blob - tests/scripts/test020-syncreplication-cascading
Context CSN patch (1)
[openldap] / tests / scripts / test020-syncreplication-cascading
1 #! /bin/sh
2 # $OpenLDAP$
3
4 SRCDIR="."
5 if test $# -ge 1 ; then
6         SRCDIR=$1; shift
7 fi
8
9 . $SRCDIR/scripts/args.sh $*
10
11 echo "running defines.sh"
12 . $SRCDIR/scripts/defines.sh
13
14 echo "test020-syncreplication-cascading is temporarily disabled"
15 exit 0
16
17 #
18 # Test replication:
19 # - start master
20 # - start slave
21 # - populate over ldap
22 # - perform some modifies and deleted
23 # - retrieve database over ldap and compare against expected results
24 #
25
26 echo "Cleaning up in $DBDIR..."
27 rm -f $DBDIR/[!C]*
28 echo "Resetting $R1REPLDIR..."
29 rm -rf $R1REPLDIR
30 mkdir $R1REPLDIR
31 echo "Resetting $R2REPLDIR..."
32 rm -rf $R2REPLDIR
33 mkdir $R2REPLDIR
34 echo "Resetting $P1REPLDIR..."
35 rm -rf $P1REPLDIR
36 mkdir $P1REPLDIR
37 echo "Resetting $P2REPLDIR..."
38 rm -rf $P2REPLDIR
39 mkdir $P2REPLDIR
40 echo "Resetting $P3REPLDIR..."
41 rm -rf $P3REPLDIR
42 mkdir $P3REPLDIR
43
44 SAVE=$BACKEND
45 BACKEND=bdb
46 echo "Starting master slapd on TCP/IP port $PORT..."
47 . $CONFFILTER $BACKEND $MONITORDB < $SRMASTERCONF > $DBCONF
48 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
49 PID=$!
50 if test $WAIT != 0 ; then
51     echo PID $PID
52     read foo
53 fi
54 BACKEND=$SAVE
55
56 echo "Waiting 5 seconds to wait for master to start..."
57 sleep 5
58
59 echo "Using ldapsearch to check that master slapd is running..."
60 for i in 0 1 2 3 4 5; do
61         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
62                 'objectclass=*' > /dev/null 2>&1
63         RC=$?
64         if test $RC = 0 ; then
65                 break
66         fi
67         echo "Waiting 5 seconds for slapd to start..."
68         sleep 5
69 done
70
71 echo "Using ldapadd to create the context prefix entry in the master..."
72 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
73         $LDIFORDEREDCP > /dev/null 2>&1
74 RC=$?
75 if test $RC != 0 ; then
76         echo "ldapadd failed ($RC)!"
77         kill -HUP $PID
78         exit $RC
79 fi
80
81 SAVE=$BACKEND
82 BACKEND=bdb
83 echo "Starting R1 slave slapd on TCP/IP port $R1SLAVEPORT..."
84 . $CONFFILTER $BACKEND $MONITORDB < $R1SRSLAVECONF > $R1REPLCONF
85 $SLAPD -f $R1REPLCONF -h $R1SLAVEURI -d $LVL $TIMING > $R1SLAVELOG 2>&1 &
86 R1SLAVEPID=$!
87 if test $WAIT != 0 ; then
88     echo SLAVE R1 PID $R1SLAVEPID
89     read foo
90 fi
91 BACKEND=$SAVE
92
93 echo "Using ldapsearch to check that R1 slave slapd is running..."
94 for i in 0 1 2 3 4 5; do
95         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $R1SLAVEPORT \
96                 'objectclass=*' > /dev/null 2>&1
97         RC=$?
98         if test $RC = 0 ; then
99                 break
100         fi
101         echo "Waiting 5 seconds for R1 slapd to start..."
102         sleep 5
103 done
104
105 echo "Waiting for the R1 slave to replicate..."
106 sleep 10
107
108 echo "Starting R2 slave slapd on TCP/IP port $R2SLAVEPORT..."
109 . $CONFFILTER $BACKEND $MONITORDB < $R2SRSLAVECONF > $R2REPLCONF
110 $SLAPD -f $R2REPLCONF -h $R2SLAVEURI -d $LVL $TIMING > $R2SLAVELOG 2>&1 &
111 R2SLAVEPID=$!
112 if test $WAIT != 0 ; then
113     echo SLAVE R2 PID $R2SLAVEPID
114     read foo
115 fi
116
117 echo "Using ldapsearch to check that the R2 slave slapd is running..."
118 for i in 0 1 2 3 4 5; do
119         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $R2SLAVEPORT \
120                 'objectclass=*' > /dev/null 2>&1
121         RC=$?
122         if test $RC = 0 ; then
123                 break
124         fi
125         echo "Waiting 5 seconds for R2 slave slapd to start..."
126         sleep 5
127 done
128
129 echo "Waiting for the R2 slave to replicate..."
130 sleep 10
131
132 SAVE=$BACKEND
133 BACKEND=bdb
134 echo "Starting P1 slave slapd on TCP/IP port $P1SLAVEPORT..."
135 . $CONFFILTER $BACKEND $MONITORDB < $P1SRSLAVECONF > $P1REPLCONF
136 $SLAPD -f $P1REPLCONF -h $P1SLAVEURI -d $LVL $TIMING > $P1SLAVELOG 2>&1 &
137 P1SLAVEPID=$!
138 if test $WAIT != 0 ; then
139     echo SLAVE P1 PID $P1SLAVEPID
140     read foo
141 fi
142 BACKEND=$SAVE
143
144 echo "Using ldapsearch to check that the P1 slave slapd is running..."
145 for i in 0 1 2 3 4 5; do
146         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $P1SLAVEPORT \
147                 'objectclass=*' > /dev/null 2>&1
148         RC=$?
149         if test $RC = 0 ; then
150                 break
151         fi
152         echo "Waiting 5 seconds for P1 slave slapd to start..."
153         sleep 5
154 done
155
156 echo "Waiting for the P1 slave to replicate..."
157 sleep 10
158
159 echo "Starting P2 slave slapd on TCP/IP port $P2SLAVEPORT..."
160 . $CONFFILTER $BACKEND $MONITORDB < $P2SRSLAVECONF > $P2REPLCONF
161 $SLAPD -f $P2REPLCONF -h $P2SLAVEURI -d $LVL $TIMING > $P2SLAVELOG 2>&1 &
162 P2SLAVEPID=$!
163 if test $WAIT != 0 ; then
164     echo SLAVE P2 PID $P2SLAVEPID
165     read foo
166 fi
167
168 echo "Using ldapsearch to check that the P2 slave slapd is running..."
169 for i in 0 1 2 3 4 5; do
170         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $P2SLAVEPORT \
171                 'objectclass=*' > /dev/null 2>&1
172         RC=$?
173         if test $RC = 0 ; then
174                 break
175         fi
176         echo "Waiting 5 seconds for P2 slave slapd to start..."
177         sleep 5
178 done
179
180 echo "Starting P3 slave slapd on TCP/IP port $P3SLAVEPORT..."
181 . $CONFFILTER $BACKEND $MONITORDB < $P3SRSLAVECONF > $P3REPLCONF
182 $SLAPD -f $P3REPLCONF -h $P3SLAVEURI -d $LVL $TIMING > $P3SLAVELOG 2>&1 &
183 P3SLAVEPID=$!
184 if test $WAIT != 0 ; then
185     echo SLAVE P3 PID $P3SLAVEPID
186     read foo
187 fi
188
189 echo "Using ldapsearch to check that the P3 slave slapd is running..."
190 for i in 0 1 2 3 4 5; do
191         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $P3SLAVEPORT \
192                 'objectclass=*' > /dev/null 2>&1
193         RC=$?
194         if test $RC = 0 ; then
195                 break
196         fi
197         echo "Waiting 5 seconds for P3 slave slapd to start..."
198         sleep 5
199 done
200
201 echo "Using ldapadd to populate the master directory..."
202 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
203         $LDIFORDEREDNOCP > /dev/null 2>&1
204 RC=$?
205 if test $RC != 0 ; then
206         echo "ldapadd failed ($RC)!"
207         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
208         exit $RC
209 fi
210
211 echo "Waiting 60 seconds for syncrepl to receive changes..."
212 sleep 60
213
214 echo "Using ldapmodify to modify master directory..."
215
216 #
217 # Do some modifications
218 #
219
220 $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \
221         $TESTOUT 2>&1 << EOMODS
222 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
223 changetype: modify
224 add: drink
225 drink: Orange Juice
226 -
227 delete: sn
228 sn: Jones
229 -
230 add: sn
231 sn: Jones
232
233 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
234 changetype: modify
235 replace: drink
236 drink: Iced Tea
237 drink: Mad Dog 20/20
238
239 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
240 changetype: modify
241 delete: member
242 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
243 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
244 -
245 add: member
246 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
247 member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
248
249 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
250 changetype: modify
251 delete: description
252
253 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
254 changetype: add
255 objectclass: OpenLDAPperson
256 cn: Gern Jensen
257 sn: Jensen
258 uid: gjensen
259 title: Chief Investigator, ITD
260 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
261 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
262 drink: Coffee
263 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
264 description: Very odd
265 facsimiletelephonenumber: +1 313 555 7557
266 telephonenumber: +1 313 555 8343
267 mail: gjensen@mailgw.example.com
268 homephone: +1 313 555 8844
269
270 dn: ou=Retired, ou=People, o=University of Michigan, c=US
271 changetype: add
272 objectclass: organizationalUnit
273 ou: Retired
274
275 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
276 changetype: add
277 objectclass: OpenLDAPperson
278 cn: Rosco P. Coltrane
279 sn: Coltrane
280 uid: rosco
281
282 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
283 changetype: modrdn
284 newrdn: cn=Rosco P. Coltrane
285 deleteoldrdn: 1
286 newsuperior: ou=Retired, ou=People, o=University of Michigan, c=US
287
288 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
289 changetype: delete
290
291 EOMODS
292
293 echo "Waiting 60 seconds for syncrepl to receive changes..."
294 sleep 60
295
296 echo "Using ldapsearch to read all the entries from the master..."
297 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
298         'objectclass=*' > $MASTEROUT 2>&1
299 RC=$?
300
301 if test $RC != 0 ; then
302         echo "ldapsearch failed at master ($RC)!"
303         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
304         exit $RC
305 fi
306
307 echo "Using ldapsearch to read all the entries from the R1 slave..."
308 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $R1SLAVEPORT \
309         'objectclass=*' > $R1SLAVEOUT 2>&1
310 RC=$?
311
312 if test $RC != 0 ; then
313         echo "ldapsearch failed at R1 slave ($RC)!"
314         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
315         exit $RC
316 fi
317
318 echo "Using ldapsearch to read all the entries from the R2 slave..."
319 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $R2SLAVEPORT \
320         'objectclass=*' > $R2SLAVEOUT 2>&1
321 RC=$?
322
323 if test $RC != 0 ; then
324         echo "ldapsearch failed at R2 slave ($RC)!"
325         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
326         exit $RC
327 fi
328
329 echo "Using ldapsearch to read all the entries from the P1 slave..."
330 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $P1SLAVEPORT \
331         'objectclass=*' > $P1SLAVEOUT 2>&1
332 RC=$?
333
334 if test $RC != 0 ; then
335         echo "ldapsearch failed at R1 slave ($RC)!"
336         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
337         exit $RC
338 fi
339
340 echo "Using ldapsearch to read all the entries from the P2 slave..."
341 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $P2SLAVEPORT \
342         'objectclass=*' > $P2SLAVEOUT 2>&1
343 RC=$?
344
345 if test $RC != 0 ; then
346         echo "ldapsearch failed at R2 slave ($RC)!"
347         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
348         exit $RC
349 fi
350
351 echo "Using ldapsearch to read all the entries from the P3 slave..."
352 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $P3SLAVEPORT \
353         'objectclass=*' > $P3SLAVEOUT 2>&1
354 RC=$?
355
356 if test $RC != 0 ; then
357         echo "ldapsearch failed at R2 slave ($RC)!"
358         kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
359         exit $RC
360 fi
361
362 kill -HUP $PID $R1SLAVEPID $R2SLAVEPID $P1SLAVEPID $P2SLAVEPID $P3SLAVEPID
363
364 SEARCHOUT=$MASTEROUT
365 R1LDIF=$R1SLAVEOUT
366 R2LDIF=$R2SLAVEOUT
367 P1LDIF=$P1SLAVEOUT
368 P2LDIF=$P2SLAVEOUT
369 P3LDIF=$P3SLAVEOUT
370
371 echo "Filtering master ldapsearch results..."
372 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
373 echo "Filtering R1 slave ldapsearch results..."
374 . $LDIFFILTER < $R1LDIF > $R1LDIFFLT
375 echo "Filtering R2 slave ldapsearch results..."
376 . $LDIFFILTER < $R2LDIF > $R2LDIFFLT
377 echo "Filtering P1 slave ldapsearch results..."
378 . $LDIFFILTER < $P1LDIF > $P1LDIFFLT
379 echo "Filtering P2 slave ldapsearch results..."
380 . $LDIFFILTER < $P2LDIF > $P2LDIFFLT
381 echo "Filtering P3 slave ldapsearch results..."
382 . $LDIFFILTER < $P3LDIF > $P3LDIFFLT
383
384 echo "Comparing retrieved entries from master and R1 slave..."
385 $CMP $SEARCHFLT $R1LDIFFLT > $CMPOUT
386
387 if test $? != 0 ; then
388         echo "test failed - master and R1 slave databases differ"
389         exit 1
390 fi
391
392 echo "Comparing retrieved entries from master and R2 slave..."
393 $CMP $SEARCHFLT $R2LDIFFLT > $CMPOUT
394
395 if test $? != 0 ; then
396         echo "test failed - master and R2 slave databases differ"
397         exit 1
398 fi
399
400 echo "Comparing retrieved entries from master and P1 slave..."
401 $CMP $SEARCHFLT $P1LDIFFLT > $CMPOUT
402
403 if test $? != 0 ; then
404         echo "test failed - master and P1 slave databases differ"
405         exit 1
406 fi
407
408 echo "Comparing retrieved entries from master and P2 slave..."
409 $CMP $SEARCHFLT $P2LDIFFLT > $CMPOUT
410
411 if test $? != 0 ; then
412         echo "test failed - master and P2 slave databases differ"
413         exit 1
414 fi
415
416 echo "Comparing retrieved entries from master and P3 slave..."
417 $CMP $SEARCHFLT $P3LDIFFLT > $CMPOUT
418
419 if test $? != 0 ; then
420         echo "test failed - master and P3 slave databases differ"
421         exit 1
422 fi
423
424 echo ">>>>> Test succeeded"
425
426
427 exit 0