test088-syncprov-glue-rwm revision 1.1 1 1.1 christos #! /bin/sh
2 1.1 christos # $OpenLDAP$
3 1.1 christos ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 1.1 christos ##
5 1.1 christos ## Copyright 1998-2024 The OpenLDAP Foundation.
6 1.1 christos ## All rights reserved.
7 1.1 christos ##
8 1.1 christos ## Redistribution and use in source and binary forms, with or without
9 1.1 christos ## modification, are permitted only as authorized by the OpenLDAP
10 1.1 christos ## Public License.
11 1.1 christos ##
12 1.1 christos ## A copy of this license is available in the file LICENSE in the
13 1.1 christos ## top-level directory of the distribution or, alternatively, at
14 1.1 christos ## <http://www.OpenLDAP.org/license.html>.
15 1.1 christos
16 1.1 christos echo "running defines.sh"
17 1.1 christos . $SRCDIR/scripts/defines.sh
18 1.1 christos
19 1.1 christos if test $BACKLDAP = ldapno; then
20 1.1 christos echo "LDAP backend not available, test skipped"
21 1.1 christos exit 0
22 1.1 christos fi
23 1.1 christos
24 1.1 christos if test $RWM = rwmno; then
25 1.1 christos echo "rwm (rewrite/remap) overlay not available, test skipped"
26 1.1 christos exit 0
27 1.1 christos fi
28 1.1 christos
29 1.1 christos if test $SYNCPROV = syncprovno; then
30 1.1 christos echo "Syncrepl provider overlay not available, test skipped"
31 1.1 christos exit 0
32 1.1 christos fi
33 1.1 christos
34 1.1 christos RMTSUFFIX="dc=remote,$BASEDN"
35 1.1 christos RMTROOTDN="cn=Manager,$RMTSUFFIX"
36 1.1 christos
37 1.1 christos RMTDIR=$TESTDIR/remote
38 1.1 christos PR1DIR=$TESTDIR/provider1
39 1.1 christos PR2DIR=$TESTDIR/provider2
40 1.1 christos RMTCONF=$RMTDIR/slapd.d
41 1.1 christos PR1CONF=$PR1DIR/slapd.d
42 1.1 christos PR2CONF=$PR2DIR/slapd.d
43 1.1 christos
44 1.1 christos ENTRIES=$TESTDIR/entries.ldif
45 1.1 christos SYNC1OUT=$TESTDIR/syncrepl1.out
46 1.1 christos SYNC2OUT=$TESTDIR/syncrepl2.out
47 1.1 christos
48 1.1 christos mkdir -p $RMTDIR $RMTCONF $RMTDIR/db
49 1.1 christos mkdir -p $PR1DIR $PR1CONF $PR1DIR/db
50 1.1 christos mkdir -p $PR2DIR $PR2CONF $PR2DIR/db
51 1.1 christos
52 1.1 christos cd $TESTDIR
53 1.1 christos
54 1.1 christos KILLPIDS=
55 1.1 christos
56 1.1 christos $SLAPPASSWD -g -n > $CONFIGPWF
57 1.1 christos
58 1.1 christos cat <<EOF > $CONFLDIF
59 1.1 christos dn: cn=config
60 1.1 christos objectClass: olcGlobal
61 1.1 christos cn: config
62 1.1 christos
63 1.1 christos dn: olcDatabase={0}config,cn=config
64 1.1 christos objectClass: olcDatabaseConfig
65 1.1 christos olcDatabase: {0}config
66 1.1 christos olcRootPW:< file://$CONFIGPWF
67 1.1 christos
68 1.1 christos dn: cn=schema,cn=config
69 1.1 christos objectClass: olcSchemaConfig
70 1.1 christos cn: schema
71 1.1 christos
72 1.1 christos include: file://$ABS_SCHEMADIR/core.ldif
73 1.1 christos include: file://$ABS_SCHEMADIR/cosine.ldif
74 1.1 christos include: file://$ABS_SCHEMADIR/nis.ldif
75 1.1 christos include: file://$ABS_SCHEMADIR/inetorgperson.ldif
76 1.1 christos
77 1.1 christos dn: cn=module,cn=config
78 1.1 christos objectClass: olcModuleList
79 1.1 christos cn: module
80 1.1 christos olcModulePath: $TESTWD/../servers/slapd/overlays
81 1.1 christos EOF
82 1.1 christos
83 1.1 christos [ "$BACKENDTYPE" = mod ] && echo "olcModuleLoad: $TESTWD/../servers/slapd/back-$BACKEND/back_$BACKEND.la" >> $CONFLDIF
84 1.1 christos
85 1.1 christos echo "Initializing remote configurations..."
86 1.1 christos cat $CONFLDIF - <<EOF | $SLAPADD -F $RMTCONF -n 0
87 1.1 christos
88 1.1 christos dn: olcDatabase={1}$BACKEND,cn=config
89 1.1 christos objectClass: olcDatabaseConfig
90 1.1 christos ${nullExclude}objectClass: olc${BACKEND}Config
91 1.1 christos olcDatabase: {1}$BACKEND
92 1.1 christos ${nullExclude}olcDbDirectory: $RMTDIR/db
93 1.1 christos olcSuffix: $RMTSUFFIX
94 1.1 christos olcRootDN: $RMTROOTDN
95 1.1 christos olcRootPW: $PASSWD
96 1.1 christos EOF
97 1.1 christos RC=$?
98 1.1 christos if test $RC != 0 ; then
99 1.1 christos echo "slapadd failed ($RC)!"
100 1.1 christos exit $RC
101 1.1 christos fi
102 1.1 christos
103 1.1 christos [ "$BACKLDAP" = ldapmod ] && echo "olcModuleLoad: $TESTWD/../servers/slapd/back-ldap/back_ldap.la" >> $CONFLDIF
104 1.1 christos [ "$RWM" = rwmmod ] && echo "olcModuleLoad: rwm.la" >> $CONFLDIF
105 1.1 christos [ "$SYNCPROV" = syncprovmod ] && echo "olcModuleLoad: syncprov.la" >> $CONFLDIF
106 1.1 christos cat <<EOF >> $CONFLDIF
107 1.1 christos
108 1.1 christos dn: olcDatabase={1}ldap,cn=config
109 1.1 christos objectClass: olcDatabaseConfig
110 1.1 christos objectClass: olcLDAPConfig
111 1.1 christos olcDatabase: {1}ldap
112 1.1 christos olcSuffix: ou=remote,ou=users,$BASEDN
113 1.1 christos olcSubordinate: TRUE
114 1.1 christos olcDbURI: $URI1
115 1.1 christos olcDbIDAssertBind: bindmethod=simple
116 1.1 christos binddn="$RMTROOTDN"
117 1.1 christos credentials=$PASSWD
118 1.1 christos mode=none
119 1.1 christos olcDbIDAssertAuthzFrom: dn.exact:$MANAGERDN
120 1.1 christos olcRootDN: $MANAGERDN
121 1.1 christos
122 1.1 christos dn: olcOverlay={0}rwm,olcDatabase={1}ldap,cn=config
123 1.1 christos objectClass: olcOverlayConfig
124 1.1 christos objectClass: olcRwmConfig
125 1.1 christos olcOverlay: {0}rwm
126 1.1 christos olcRwmRewrite: rwm-suffixmassage "ou=users,$RMTSUFFIX"
127 1.1 christos EOF
128 1.1 christos
129 1.1 christos echo "Initializing provider1 configurations..."
130 1.1 christos cat $CONFLDIF - <<EOF | $SLAPADD -F $PR1CONF -n 0
131 1.1 christos
132 1.1 christos dn: olcDatabase={2}$BACKEND,cn=config
133 1.1 christos objectClass: olcDatabaseConfig
134 1.1 christos ${nullExclude}objectClass: olc${BACKEND}Config
135 1.1 christos olcDatabase: {2}$BACKEND
136 1.1 christos ${nullExclude}olcDbDirectory: $PR1DIR/db
137 1.1 christos olcSuffix: $BASEDN
138 1.1 christos olcRootDN: $MANAGERDN
139 1.1 christos olcRootPW: $PASSWD
140 1.1 christos
141 1.1 christos dn: olcOverlay={0}syncprov,olcDatabase={2}$BACKEND,cn=config
142 1.1 christos objectClass: olcOverlayConfig
143 1.1 christos objectClass: olcSyncProvConfig
144 1.1 christos olcOverlay: {0}syncprov
145 1.1 christos EOF
146 1.1 christos RC=$?
147 1.1 christos if test $RC != 0 ; then
148 1.1 christos echo "slapadd failed ($RC)!"
149 1.1 christos exit $RC
150 1.1 christos fi
151 1.1 christos
152 1.1 christos echo "Initializing provider2 configurations..."
153 1.1 christos cat $CONFLDIF - <<EOF | $SLAPADD -F $PR2CONF -n 0
154 1.1 christos
155 1.1 christos dn: olcDatabase={2}$BACKEND,cn=config
156 1.1 christos objectClass: olcDatabaseConfig
157 1.1 christos ${nullExclude}objectClass: olc${BACKEND}Config
158 1.1 christos olcDatabase: {2}$BACKEND
159 1.1 christos ${nullExclude}olcDbDirectory: $PR2DIR/db
160 1.1 christos olcSuffix: $BASEDN
161 1.1 christos olcRootDN: $MANAGERDN
162 1.1 christos olcRootPW: $PASSWD
163 1.1 christos
164 1.1 christos dn: olcOverlay={0}glue,olcDatabase={2}$BACKEND,cn=config
165 1.1 christos objectClass: olcOverlayConfig
166 1.1 christos objectClass: olcConfig
167 1.1 christos olcOverlay: {0}glue
168 1.1 christos
169 1.1 christos dn: olcOverlay={1}syncprov,olcDatabase={2}$BACKEND,cn=config
170 1.1 christos objectClass: olcOverlayConfig
171 1.1 christos objectClass: olcSyncProvConfig
172 1.1 christos olcOverlay: {1}syncprov
173 1.1 christos EOF
174 1.1 christos RC=$?
175 1.1 christos if test $RC != 0 ; then
176 1.1 christos echo "slapadd failed ($RC)!"
177 1.1 christos exit $RC
178 1.1 christos fi
179 1.1 christos
180 1.1 christos echo "Starting remote slapd on TCP/IP port $PORT1..."
181 1.1 christos cd $RMTDIR
182 1.1 christos $SLAPD -F slapd.d -h $URI1 -d $LVL > $LOG1 2>&1 &
183 1.1 christos PID=$!
184 1.1 christos if test $WAIT != 0 ; then
185 1.1 christos echo PID $PID
186 1.1 christos read foo
187 1.1 christos fi
188 1.1 christos KILLPIDS="$KILLPIDS $PID"
189 1.1 christos cd $TESTWD
190 1.1 christos sleep 1
191 1.1 christos echo "Using ldapsearch to check that remote slapd is running..."
192 1.1 christos for i in 0 1 2 3 4 5; do
193 1.1 christos $LDAPSEARCH -s base -b "" -H $URI1 \
194 1.1 christos 'objectclass=*' > /dev/null 2>&1
195 1.1 christos RC=$?
196 1.1 christos if test $RC = 0 ; then
197 1.1 christos break
198 1.1 christos fi
199 1.1 christos echo "Waiting 5 seconds for slapd to start..."
200 1.1 christos sleep 5
201 1.1 christos done
202 1.1 christos if test $RC != 0 ; then
203 1.1 christos echo "ldapsearch failed ($RC)!"
204 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
205 1.1 christos exit $RC
206 1.1 christos fi
207 1.1 christos
208 1.1 christos echo "Starting provider1 slapd on TCP/IP port $PORT2..."
209 1.1 christos cd $PR1DIR
210 1.1 christos $SLAPD -F slapd.d -h $URI2 -d $LVL > $LOG2 2>&1 &
211 1.1 christos PID=$!
212 1.1 christos if test $WAIT != 0 ; then
213 1.1 christos echo PID $PID
214 1.1 christos read foo
215 1.1 christos fi
216 1.1 christos KILLPIDS="$KILLPIDS $PID"
217 1.1 christos cd $TESTWD
218 1.1 christos sleep 1
219 1.1 christos echo "Using ldapsearch to check that provider1 slapd is running..."
220 1.1 christos for i in 0 1 2 3 4 5; do
221 1.1 christos $LDAPSEARCH -s base -b "" -H $URI2 \
222 1.1 christos 'objectclass=*' > /dev/null 2>&1
223 1.1 christos RC=$?
224 1.1 christos if test $RC = 0 ; then
225 1.1 christos break
226 1.1 christos fi
227 1.1 christos echo "Waiting 5 seconds for slapd to start..."
228 1.1 christos sleep 5
229 1.1 christos done
230 1.1 christos if test $RC != 0 ; then
231 1.1 christos echo "ldapsearch failed ($RC)!"
232 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
233 1.1 christos exit $RC
234 1.1 christos fi
235 1.1 christos
236 1.1 christos echo "Starting provider2 slapd on TCP/IP port $PORT3..."
237 1.1 christos cd $PR2DIR
238 1.1 christos $SLAPD -F slapd.d -h $URI3 -d $LVL > $LOG3 2>&1 &
239 1.1 christos PID=$!
240 1.1 christos if test $WAIT != 0 ; then
241 1.1 christos echo PID $PID
242 1.1 christos read foo
243 1.1 christos fi
244 1.1 christos KILLPIDS="$KILLPIDS $PID"
245 1.1 christos cd $TESTWD
246 1.1 christos sleep 1
247 1.1 christos echo "Using ldapsearch to check that provider2 slapd is running..."
248 1.1 christos for i in 0 1 2 3 4 5; do
249 1.1 christos $LDAPSEARCH -s base -b "" -H $URI3 \
250 1.1 christos 'objectclass=*' > /dev/null 2>&1
251 1.1 christos RC=$?
252 1.1 christos if test $RC = 0 ; then
253 1.1 christos break
254 1.1 christos fi
255 1.1 christos echo "Waiting 5 seconds for slapd to start..."
256 1.1 christos sleep 5
257 1.1 christos done
258 1.1 christos if test $RC != 0 ; then
259 1.1 christos echo "ldapsearch failed ($RC)!"
260 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
261 1.1 christos exit $RC
262 1.1 christos fi
263 1.1 christos
264 1.1 christos echo "Populating remote database entries..."
265 1.1 christos $LDAPADD -D "$RMTROOTDN" -H $URI1 -w $PASSWD <<EOF >> $TESTOUT 2>&1
266 1.1 christos dn: $RMTSUFFIX
267 1.1 christos objectClass: dcObject
268 1.1 christos objectClass: organization
269 1.1 christos dc: `echo $RMTSUFFIX | sed 's/^dc=\([^,]*\),.*/\1/'`
270 1.1 christos o: Example, Inc
271 1.1 christos
272 1.1 christos dn: ou=users,$RMTSUFFIX
273 1.1 christos objectClass: organizationalUnit
274 1.1 christos ou: users
275 1.1 christos EOF
276 1.1 christos RC=$?
277 1.1 christos if test $RC != 0 ; then
278 1.1 christos echo "ldapadd failed to populate remote database entries ($RC)!"
279 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
280 1.1 christos exit $RC
281 1.1 christos fi
282 1.1 christos
283 1.1 christos cat <<EOF > $ENTRIES
284 1.1 christos dn: $BASEDN
285 1.1 christos objectClass: dcObject
286 1.1 christos objectClass: organization
287 1.1 christos dc: example
288 1.1 christos o: Example, Inc
289 1.1 christos
290 1.1 christos dn: ou=users,$BASEDN
291 1.1 christos objectClass: organizationalUnit
292 1.1 christos ou: users
293 1.1 christos
294 1.1 christos dn: ou=local,ou=users,$BASEDN
295 1.1 christos objectClass: organizationalUnit
296 1.1 christos ou: local
297 1.1 christos EOF
298 1.1 christos
299 1.1 christos echo "Populating provider1 database entries..."
300 1.1 christos $LDAPADD -D "$MANAGERDN" -H $URI2 -w $PASSWD < $ENTRIES >> $TESTOUT 2>&1
301 1.1 christos RC=$?
302 1.1 christos if test $RC != 0 ; then
303 1.1 christos echo "ldapadd failed to populate provider1 database entries ($RC)!"
304 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
305 1.1 christos exit $RC
306 1.1 christos fi
307 1.1 christos
308 1.1 christos echo "Populating provider2 database entries..."
309 1.1 christos $LDAPADD -D "$MANAGERDN" -H $URI3 -w $PASSWD < $ENTRIES >> $TESTOUT 2>&1
310 1.1 christos RC=$?
311 1.1 christos if test $RC != 0 ; then
312 1.1 christos echo "ldapadd failed to populate provider2 database entries ($RC)!"
313 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
314 1.1 christos exit $RC
315 1.1 christos fi
316 1.1 christos
317 1.1 christos echo "Starting refreshAndPersist search on provider1..."
318 1.1 christos $LDAPRSEARCH -D $MANAGERDN -H $URI2 -w $PASSWD -MM -E sync=rp -b $BASEDN '*' + 2>&1 > $SYNC1OUT &
319 1.1 christos PID=$!
320 1.1 christos RC=32
321 1.1 christos for i in 0 1 2 3 4 5; do
322 1.1 christos echo "Waiting for refreshDone message..."
323 1.1 christos sleep $SLEEP0
324 1.1 christos if grep '^# refresh done, switching to persist stage' $SYNC1OUT; then
325 1.1 christos awk '/^result:/{print; exit $2}' $SYNC1OUT
326 1.1 christos RC=$?
327 1.1 christos break
328 1.1 christos fi
329 1.1 christos done
330 1.1 christos if test $RC != 0 ; then
331 1.1 christos echo "refresh failed ($RC)!"
332 1.1 christos kill $PID
333 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
334 1.1 christos exit $RC
335 1.1 christos fi
336 1.1 christos
337 1.1 christos echo "Using ldapadd to add local entry on provider1..."
338 1.1 christos $LDAPADD -D $MANAGERDN -H $URI2 -w $PASSWD <<EOF >> $TESTOUT 2>&1
339 1.1 christos dn: cn=local_user,ou=local,ou=users,$BASEDN
340 1.1 christos objectClass: person
341 1.1 christos cn: local_user
342 1.1 christos sn: local_user
343 1.1 christos userPassword: $PASSWD
344 1.1 christos description: add local_user
345 1.1 christos EOF
346 1.1 christos RC=32
347 1.1 christos for i in 0 1 2 3 4 5; do
348 1.1 christos echo "Waiting for syncrepl to receive changes..."
349 1.1 christos sleep $SLEEP0
350 1.1 christos if grep -q '^dn: cn=local_user' $SYNC1OUT; then
351 1.1 christos RC=0
352 1.1 christos break
353 1.1 christos fi
354 1.1 christos done
355 1.1 christos if test $RC != 0 ; then
356 1.1 christos echo "syncrepl failed ($RC)!"
357 1.1 christos kill $PID
358 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
359 1.1 christos exit $RC
360 1.1 christos fi
361 1.1 christos
362 1.1 christos echo "Using ldapmodify to modify local entry on provider1..."
363 1.1 christos $LDAPMODIFY -D $MANAGERDN -H $URI2 -w $PASSWD <<EOF >> $TESTOUT 2>&1
364 1.1 christos dn: cn=local_user,ou=local,ou=users,$BASEDN
365 1.1 christos changeType: modify
366 1.1 christos replace: description
367 1.1 christos description: modify local_user
368 1.1 christos EOF
369 1.1 christos RC=32
370 1.1 christos for i in 0 1 2 3 4 5; do
371 1.1 christos echo "Waiting for syncrepl to receive changes..."
372 1.1 christos sleep $SLEEP0
373 1.1 christos if grep -q '^description: modify local_user' $SYNC1OUT; then
374 1.1 christos RC=0
375 1.1 christos break
376 1.1 christos fi
377 1.1 christos done
378 1.1 christos if test $RC != 0 ; then
379 1.1 christos echo "syncrepl failed ($RC)!"
380 1.1 christos kill $PID
381 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
382 1.1 christos exit $RC
383 1.1 christos fi
384 1.1 christos
385 1.1 christos echo "Using ldapmodrdn to rename local entry on provider1..."
386 1.1 christos $LDAPMODRDN -D $MANAGERDN -H $URI2 -w $PASSWD -r <<EOF >> $TESTOUT 2>&1
387 1.1 christos cn=local_user,ou=local,ou=users,$BASEDN
388 1.1 christos cn=local_user1
389 1.1 christos EOF
390 1.1 christos RC=32
391 1.1 christos for i in 0 1 2 3 4 5; do
392 1.1 christos echo "Waiting for syncrepl to receive changes..."
393 1.1 christos sleep $SLEEP0
394 1.1 christos if grep -q '^dn: cn=local_user1' $SYNC1OUT; then
395 1.1 christos RC=0
396 1.1 christos break
397 1.1 christos fi
398 1.1 christos done
399 1.1 christos kill $PID
400 1.1 christos if test $RC != 0 ; then
401 1.1 christos echo "syncrepl failed ($RC)!"
402 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
403 1.1 christos exit $RC
404 1.1 christos fi
405 1.1 christos
406 1.1 christos echo "Check that remote entries are NOT replicated..."
407 1.1 christos if grep 'ou=remote,' $SYNC1OUT; then
408 1.1 christos echo "remote entries were unexpectedly replicated!"
409 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
410 1.1 christos exit 1
411 1.1 christos fi
412 1.1 christos
413 1.1 christos echo "Starting refreshAndPersist search on provider2..."
414 1.1 christos $LDAPRSEARCH -D $MANAGERDN -H $URI3 -w $PASSWD -MM -E sync=rp -b $BASEDN '*' + 2>&1 > $SYNC2OUT &
415 1.1 christos PID=$!
416 1.1 christos RC=32
417 1.1 christos for i in 0 1 2 3 4 5; do
418 1.1 christos echo "Waiting for refreshDone message..."
419 1.1 christos sleep $SLEEP0
420 1.1 christos if grep '^# refresh done, switching to persist stage' $SYNC2OUT; then
421 1.1 christos awk '/^result:/{print; exit $2}' $SYNC2OUT
422 1.1 christos RC=$?
423 1.1 christos break
424 1.1 christos fi
425 1.1 christos done
426 1.1 christos if test $RC != 0 ; then
427 1.1 christos echo "refresh failed ($RC)!"
428 1.1 christos kill $PID
429 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
430 1.1 christos exit $RC
431 1.1 christos fi
432 1.1 christos
433 1.1 christos echo "Using ldapadd to add local entry on provider2..."
434 1.1 christos $LDAPADD -D $MANAGERDN -H $URI3 -w $PASSWD <<EOF >> $TESTOUT 2>&1
435 1.1 christos dn: cn=local_user,ou=local,ou=users,$BASEDN
436 1.1 christos objectClass: person
437 1.1 christos cn: local_user
438 1.1 christos sn: local_user
439 1.1 christos userPassword: $PASSWD
440 1.1 christos description: add local_user
441 1.1 christos EOF
442 1.1 christos RC=32
443 1.1 christos for i in 0 1 2 3 4 5; do
444 1.1 christos echo "Waiting for syncrepl to receive changes..."
445 1.1 christos sleep $SLEEP0
446 1.1 christos if grep -q '^dn: cn=local_user' $SYNC2OUT; then
447 1.1 christos RC=0
448 1.1 christos break
449 1.1 christos fi
450 1.1 christos done
451 1.1 christos if test $RC != 0 ; then
452 1.1 christos echo "syncrepl failed ($RC)!"
453 1.1 christos kill $PID
454 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
455 1.1 christos exit $RC
456 1.1 christos fi
457 1.1 christos
458 1.1 christos echo "Using ldapmodify to modify local entry on provider2..."
459 1.1 christos $LDAPMODIFY -D $MANAGERDN -H $URI3 -w $PASSWD <<EOF >> $TESTOUT 2>&1
460 1.1 christos dn: cn=local_user,ou=local,ou=users,$BASEDN
461 1.1 christos changeType: modify
462 1.1 christos replace: description
463 1.1 christos description: modify local_user
464 1.1 christos EOF
465 1.1 christos RC=32
466 1.1 christos for i in 0 1 2 3 4 5; do
467 1.1 christos echo "Waiting for syncrepl to receive changes..."
468 1.1 christos sleep $SLEEP0
469 1.1 christos if grep -q '^description: modify local_user' $SYNC2OUT; then
470 1.1 christos RC=0
471 1.1 christos break
472 1.1 christos fi
473 1.1 christos done
474 1.1 christos if test $RC != 0 ; then
475 1.1 christos echo "syncrepl failed ($RC)!"
476 1.1 christos kill $PID
477 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
478 1.1 christos exit $RC
479 1.1 christos fi
480 1.1 christos
481 1.1 christos echo "Using ldapmodrdn to rename local entry on provider2..."
482 1.1 christos $LDAPMODRDN -D $MANAGERDN -H $URI3 -w $PASSWD -r <<EOF >> $TESTOUT 2>&1
483 1.1 christos cn=local_user,ou=local,ou=users,$BASEDN
484 1.1 christos cn=local_user1
485 1.1 christos EOF
486 1.1 christos RC=32
487 1.1 christos for i in 0 1 2 3 4 5; do
488 1.1 christos echo "Waiting for syncrepl to receive changes..."
489 1.1 christos sleep $SLEEP0
490 1.1 christos if grep -q '^dn: cn=local_user1' $SYNC2OUT; then
491 1.1 christos RC=0
492 1.1 christos break
493 1.1 christos fi
494 1.1 christos done
495 1.1 christos if test $RC != 0 ; then
496 1.1 christos echo "syncrepl failed ($RC)!"
497 1.1 christos kill $PID
498 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
499 1.1 christos exit $RC
500 1.1 christos fi
501 1.1 christos
502 1.1 christos echo "Using ldapadd to add remote entry on provider2..."
503 1.1 christos $LDAPADD -D $MANAGERDN -H $URI3 -w $PASSWD <<EOF >> $TESTOUT 2>&1
504 1.1 christos dn: cn=remote_user,ou=remote,ou=users,$BASEDN
505 1.1 christos objectClass: person
506 1.1 christos cn: remote_user
507 1.1 christos sn: remote_user
508 1.1 christos userPassword: $PASSWD
509 1.1 christos description: add remote_user
510 1.1 christos EOF
511 1.1 christos RC=32
512 1.1 christos for i in 0 1 2 3 4 5; do
513 1.1 christos echo "Waiting for syncrepl to receive changes..."
514 1.1 christos sleep $SLEEP0
515 1.1 christos if grep -q '^dn: cn=remote_user' $SYNC2OUT; then
516 1.1 christos RC=0
517 1.1 christos break
518 1.1 christos fi
519 1.1 christos done
520 1.1 christos if test $RC != 0 ; then
521 1.1 christos echo "syncrepl failed ($RC)!"
522 1.1 christos kill $PID
523 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
524 1.1 christos exit $RC
525 1.1 christos fi
526 1.1 christos
527 1.1 christos echo "Using ldapmodify to modify remote entry on provider2..."
528 1.1 christos $LDAPMODIFY -D $MANAGERDN -H $URI3 -w $PASSWD <<EOF >> $TESTOUT 2>&1
529 1.1 christos dn: cn=remote_user,ou=remote,ou=users,$BASEDN
530 1.1 christos changeType: modify
531 1.1 christos replace: description
532 1.1 christos description: modify remote_user
533 1.1 christos EOF
534 1.1 christos RC=32
535 1.1 christos for i in 0 1 2 3 4 5; do
536 1.1 christos echo "Waiting for syncrepl to receive changes..."
537 1.1 christos sleep $SLEEP0
538 1.1 christos if grep -q '^description: modify remote_user' $SYNC2OUT; then
539 1.1 christos RC=0
540 1.1 christos break
541 1.1 christos fi
542 1.1 christos done
543 1.1 christos if test $RC != 0 ; then
544 1.1 christos echo "syncrepl failed ($RC)!"
545 1.1 christos kill $PID
546 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
547 1.1 christos exit $RC
548 1.1 christos fi
549 1.1 christos
550 1.1 christos echo "Using ldapmodrdn to rename remote entry on provider2..."
551 1.1 christos $LDAPMODRDN -D $MANAGERDN -H $URI3 -w $PASSWD -r <<EOF >> $TESTOUT 2>&1
552 1.1 christos cn=remote_user,ou=remote,ou=users,$BASEDN
553 1.1 christos cn=remote_user1
554 1.1 christos EOF
555 1.1 christos RC=32
556 1.1 christos for i in 0 1 2 3 4 5; do
557 1.1 christos echo "Waiting for syncrepl to receive changes..."
558 1.1 christos sleep $SLEEP0
559 1.1 christos if grep -q '^dn: cn=remote_user1' $SYNC2OUT; then
560 1.1 christos RC=0
561 1.1 christos break
562 1.1 christos fi
563 1.1 christos done
564 1.1 christos kill $PID
565 1.1 christos if test $RC != 0 ; then
566 1.1 christos echo "syncrepl failed ($RC)!"
567 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
568 1.1 christos exit $RC
569 1.1 christos fi
570 1.1 christos
571 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
572 1.1 christos
573 1.1 christos echo ">>>>> Test succeeded"
574 1.1 christos exit 0
575