test043-delta-syncrepl revision 1.1.1.10 1 1.1 lukem #! /bin/sh
2 1.1.1.4 tron # $OpenLDAP$
3 1.1 lukem ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 1.1 lukem ##
5 1.1.1.10 christos ## Copyright 1998-2024 The OpenLDAP Foundation.
6 1.1 lukem ## All rights reserved.
7 1.1 lukem ##
8 1.1 lukem ## Redistribution and use in source and binary forms, with or without
9 1.1 lukem ## modification, are permitted only as authorized by the OpenLDAP
10 1.1 lukem ## Public License.
11 1.1 lukem ##
12 1.1 lukem ## A copy of this license is available in the file LICENSE in the
13 1.1 lukem ## top-level directory of the distribution or, alternatively, at
14 1.1 lukem ## <http://www.OpenLDAP.org/license.html>.
15 1.1 lukem
16 1.1 lukem echo "running defines.sh"
17 1.1 lukem . $SRCDIR/scripts/defines.sh
18 1.1 lukem
19 1.1 lukem if test $SYNCPROV = syncprovno; then
20 1.1 lukem echo "Syncrepl provider overlay not available, test skipped"
21 1.1 lukem exit 0
22 1.1 lukem fi
23 1.1 lukem if test $ACCESSLOG = accesslogno; then
24 1.1 lukem echo "Accesslog overlay not available, test skipped"
25 1.1 lukem exit 0
26 1.1 lukem fi
27 1.1.1.3 adam if test $BACKEND = ldif ; then
28 1.1.1.3 adam # Onelevel search does not return entries in order of creation or CSN.
29 1.1.1.3 adam echo "$BACKEND backend unsuitable for syncprov logdb, test skipped"
30 1.1.1.3 adam exit 0
31 1.1.1.3 adam fi
32 1.1 lukem
33 1.1 lukem mkdir -p $TESTDIR $DBDIR1A $DBDIR1B $DBDIR2
34 1.1 lukem
35 1.1.1.9 christos SPEC="mdb=a"
36 1.1.1.5 christos
37 1.1.1.10 christos $SLAPPASSWD -g -n >$CONFIGPWF
38 1.1.1.10 christos echo "rootpw `$SLAPPASSWD -T $CONFIGPWF`" >$TESTDIR/configpw.conf
39 1.1 lukem #
40 1.1 lukem # Test replication:
41 1.1.1.4 tron # - start provider
42 1.1 lukem # - start consumer
43 1.1 lukem # - populate over ldap
44 1.1 lukem # - perform some modifies and deleted
45 1.1 lukem # - attempt to modify the consumer (referral or chain)
46 1.1 lukem # - retrieve database over ldap and compare against expected results
47 1.1 lukem #
48 1.1 lukem
49 1.1.1.4 tron echo "Starting provider slapd on TCP/IP port $PORT1..."
50 1.1.1.9 christos . $CONFFILTER $BACKEND < $DSRPROVIDERCONF > $CONF1
51 1.1.1.9 christos $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 &
52 1.1 lukem PID=$!
53 1.1 lukem if test $WAIT != 0 ; then
54 1.1 lukem echo PID $PID
55 1.1 lukem read foo
56 1.1 lukem fi
57 1.1 lukem KILLPIDS="$PID"
58 1.1 lukem
59 1.1 lukem sleep 1
60 1.1 lukem
61 1.1.1.4 tron echo "Using ldapsearch to check that provider slapd is running..."
62 1.1 lukem for i in 0 1 2 3 4 5; do
63 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
64 1.1 lukem 'objectclass=*' > /dev/null 2>&1
65 1.1 lukem RC=$?
66 1.1 lukem if test $RC = 0 ; then
67 1.1 lukem break
68 1.1 lukem fi
69 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
70 1.1 lukem sleep 5
71 1.1 lukem done
72 1.1 lukem
73 1.1 lukem if test $RC != 0 ; then
74 1.1 lukem echo "ldapsearch failed ($RC)!"
75 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
76 1.1 lukem exit $RC
77 1.1 lukem fi
78 1.1 lukem
79 1.1.1.4 tron echo "Using ldapadd to create the context prefix entries in the provider..."
80 1.1.1.9 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
81 1.1 lukem $LDIFORDEREDCP > /dev/null 2>&1
82 1.1 lukem RC=$?
83 1.1 lukem if test $RC != 0 ; then
84 1.1 lukem echo "ldapadd failed ($RC)!"
85 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
86 1.1 lukem exit $RC
87 1.1 lukem fi
88 1.1 lukem
89 1.1 lukem echo "Starting consumer slapd on TCP/IP port $PORT2..."
90 1.1.1.9 christos . $CONFFILTER $BACKEND < $DSRCONSUMERCONF > $CONF2
91 1.1.1.9 christos $SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 &
92 1.1.1.9 christos CONSUMERPID=$!
93 1.1 lukem if test $WAIT != 0 ; then
94 1.1.1.9 christos echo CONSUMERPID $CONSUMERPID
95 1.1 lukem read foo
96 1.1 lukem fi
97 1.1.1.9 christos KILLPIDS="$KILLPIDS $CONSUMERPID"
98 1.1 lukem
99 1.1 lukem sleep 1
100 1.1 lukem
101 1.1 lukem echo "Using ldapsearch to check that consumer slapd is running..."
102 1.1 lukem for i in 0 1 2 3 4 5; do
103 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
104 1.1 lukem 'objectclass=*' > /dev/null 2>&1
105 1.1 lukem RC=$?
106 1.1 lukem if test $RC = 0 ; then
107 1.1 lukem break
108 1.1 lukem fi
109 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
110 1.1 lukem sleep 5
111 1.1 lukem done
112 1.1 lukem
113 1.1 lukem if test $RC != 0 ; then
114 1.1 lukem echo "ldapsearch failed ($RC)!"
115 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
116 1.1 lukem exit $RC
117 1.1 lukem fi
118 1.1 lukem
119 1.1.1.4 tron echo "Using ldapadd to populate the provider directory..."
120 1.1.1.9 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \
121 1.1 lukem $LDIFORDEREDNOCP > /dev/null 2>&1
122 1.1 lukem RC=$?
123 1.1 lukem if test $RC != 0 ; then
124 1.1 lukem echo "ldapadd failed ($RC)!"
125 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
126 1.1 lukem exit $RC
127 1.1 lukem fi
128 1.1 lukem
129 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
130 1.1.1.2 lukem sleep $SLEEP1
131 1.1 lukem
132 1.1 lukem echo "Stopping the provider, sleeping 10 seconds and restarting it..."
133 1.1 lukem kill -HUP "$PID"
134 1.1.1.10 christos wait $PID
135 1.1 lukem sleep 10
136 1.1 lukem echo "RESTART" >> $LOG1
137 1.1.1.9 christos $SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 &
138 1.1 lukem PID=$!
139 1.1 lukem if test $WAIT != 0 ; then
140 1.1 lukem echo PID $PID
141 1.1 lukem read foo
142 1.1 lukem fi
143 1.1.1.9 christos KILLPIDS="$PID $CONSUMERPID"
144 1.1 lukem
145 1.1 lukem sleep 1
146 1.1 lukem
147 1.1.1.4 tron echo "Using ldapsearch to check that provider slapd is running..."
148 1.1 lukem for i in 0 1 2 3 4 5; do
149 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \
150 1.1 lukem 'objectclass=*' > /dev/null 2>&1
151 1.1 lukem RC=$?
152 1.1 lukem if test $RC = 0 ; then
153 1.1 lukem break
154 1.1 lukem fi
155 1.1 lukem echo "Waiting 5 seconds for slapd to start..."
156 1.1 lukem sleep 5
157 1.1 lukem done
158 1.1 lukem
159 1.1 lukem if test $RC != 0 ; then
160 1.1 lukem echo "ldapsearch failed ($RC)!"
161 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
162 1.1 lukem exit $RC
163 1.1 lukem fi
164 1.1 lukem
165 1.1.1.4 tron echo "Using ldapmodify to modify provider directory..."
166 1.1 lukem
167 1.1 lukem #
168 1.1 lukem # Do some modifications
169 1.1 lukem #
170 1.1 lukem
171 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \
172 1.1 lukem $TESTOUT 2>&1 << EOMODS
173 1.1 lukem dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
174 1.1 lukem changetype: modify
175 1.1 lukem add: drink
176 1.1 lukem drink: Orange Juice
177 1.1 lukem -
178 1.1 lukem delete: sn
179 1.1 lukem sn: Jones
180 1.1 lukem -
181 1.1 lukem add: sn
182 1.1 lukem sn: Jones
183 1.1.1.9 christos -
184 1.1.1.9 christos add: displayName
185 1.1.1.9 christos displayName: The one
186 1.1.1.9 christos
187 1.1.1.9 christos dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
188 1.1.1.9 christos changetype: modify
189 1.1.1.9 christos add: displayName
190 1.1.1.9 christos displayName: James the First
191 1.1.1.9 christos -
192 1.1.1.9 christos delete: displayName
193 1.1.1.9 christos displayName: The one
194 1.1 lukem
195 1.1 lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
196 1.1 lukem changetype: modify
197 1.1 lukem replace: drink
198 1.1 lukem drink: Iced Tea
199 1.1 lukem
200 1.1 lukem dn: cn=ITD Staff,ou=Groups,dc=example,dc=com
201 1.1 lukem changetype: modify
202 1.1 lukem delete: uniquemember
203 1.1 lukem uniquemember: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com
204 1.1 lukem uniquemember: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
205 1.1 lukem -
206 1.1 lukem add: uniquemember
207 1.1 lukem uniquemember: cn=Dorothy Stevens, ou=Alumni Association, ou=People, dc=example,dc=com
208 1.1 lukem uniquemember: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
209 1.1 lukem
210 1.1 lukem dn: cn=All Staff,ou=Groups,dc=example,dc=com
211 1.1 lukem changetype: modify
212 1.1 lukem delete: description
213 1.1 lukem
214 1.1 lukem dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
215 1.1 lukem changetype: add
216 1.1 lukem objectclass: OpenLDAPperson
217 1.1 lukem cn: Gern Jensen
218 1.1 lukem sn: Jensen
219 1.1 lukem uid: gjensen
220 1.1 lukem title: Chief Investigator, ITD
221 1.1 lukem postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
222 1.1 lukem seealso: cn=All Staff, ou=Groups, dc=example,dc=com
223 1.1 lukem drink: Coffee
224 1.1 lukem homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
225 1.1 lukem description: Very odd
226 1.1 lukem facsimiletelephonenumber: +1 313 555 7557
227 1.1 lukem telephonenumber: +1 313 555 8343
228 1.1 lukem mail: gjensen@mailgw.example.com
229 1.1 lukem homephone: +1 313 555 8844
230 1.1 lukem
231 1.1 lukem dn: ou=Retired, ou=People, dc=example,dc=com
232 1.1 lukem changetype: add
233 1.1 lukem objectclass: organizationalUnit
234 1.1 lukem ou: Retired
235 1.1 lukem
236 1.1 lukem dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com
237 1.1 lukem changetype: add
238 1.1 lukem objectclass: OpenLDAPperson
239 1.1 lukem cn: Rosco P. Coltrane
240 1.1 lukem sn: Coltrane
241 1.1 lukem uid: rosco
242 1.1 lukem description: Fat tycoon
243 1.1 lukem
244 1.1 lukem dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com
245 1.1 lukem changetype: modrdn
246 1.1 lukem newrdn: cn=Rosco P. Coltrane
247 1.1 lukem deleteoldrdn: 1
248 1.1 lukem newsuperior: ou=Retired, ou=People, dc=example,dc=com
249 1.1 lukem
250 1.1 lukem dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com
251 1.1 lukem changetype: delete
252 1.1 lukem
253 1.1 lukem EOMODS
254 1.1 lukem RC=$?
255 1.1 lukem if test $RC != 0 ; then
256 1.1 lukem echo "ldapmodify failed ($RC)!"
257 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
258 1.1 lukem exit $RC
259 1.1 lukem fi
260 1.1 lukem
261 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
262 1.1.1.2 lukem sleep $SLEEP1
263 1.1 lukem
264 1.1.1.4 tron echo "Using ldapsearch to read all the entries from the provider..."
265 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
266 1.1.1.9 christos 'objectclass=*' \* + > $PROVIDEROUT 2>&1
267 1.1.1.4 tron RC=$?
268 1.1.1.4 tron
269 1.1.1.4 tron if test $RC != 0 ; then
270 1.1.1.4 tron echo "ldapsearch failed at provider ($RC)!"
271 1.1.1.4 tron test $KILLSERVERS != no && kill -HUP $KILLPIDS
272 1.1.1.4 tron exit $RC
273 1.1.1.4 tron fi
274 1.1.1.4 tron
275 1.1.1.4 tron echo "Using ldapsearch to read all the entries from the consumer..."
276 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
277 1.1.1.9 christos 'objectclass=*' \* + > $CONSUMEROUT 2>&1
278 1.1.1.4 tron RC=$?
279 1.1.1.4 tron
280 1.1.1.4 tron if test $RC != 0 ; then
281 1.1.1.4 tron echo "ldapsearch failed at consumer ($RC)!"
282 1.1.1.4 tron test $KILLSERVERS != no && kill -HUP $KILLPIDS
283 1.1.1.4 tron exit $RC
284 1.1.1.4 tron fi
285 1.1.1.4 tron
286 1.1.1.4 tron echo "Filtering provider results..."
287 1.1.1.9 christos $LDIFFILTER -b $BACKEND -s $SPEC < $PROVIDEROUT | grep -iv "^auditcontext:" > $PROVIDERFLT
288 1.1.1.4 tron echo "Filtering consumer results..."
289 1.1.1.9 christos $LDIFFILTER -b $BACKEND -s $SPEC < $CONSUMEROUT | grep -iv "^auditcontext:" > $CONSUMERFLT
290 1.1.1.4 tron
291 1.1.1.4 tron echo "Comparing retrieved entries from provider and consumer..."
292 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
293 1.1.1.4 tron
294 1.1.1.4 tron if test $? != 0 ; then
295 1.1.1.4 tron echo "test failed - provider and consumer databases differ"
296 1.1.1.4 tron test $KILLSERVERS != no && kill -HUP $KILLPIDS
297 1.1.1.4 tron exit 1
298 1.1.1.4 tron fi
299 1.1.1.4 tron
300 1.1 lukem echo "Stopping consumer to test recovery..."
301 1.1.1.9 christos kill -HUP $CONSUMERPID
302 1.1.1.10 christos wait $CONSUMERPID
303 1.1.1.10 christos KILLPIDS="$PID"
304 1.1 lukem
305 1.1.1.4 tron echo "Modifying more entries on the provider..."
306 1.1.1.9 christos $LDAPMODIFY -v -D "$BJORNSDN" -H $URI1 -w bjorn >> \
307 1.1 lukem $TESTOUT 2>&1 << EOMODS
308 1.1 lukem dn: cn=Rosco P. Coltrane, ou=Retired, ou=People, dc=example,dc=com
309 1.1 lukem changetype: delete
310 1.1 lukem
311 1.1 lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
312 1.1 lukem changetype: modify
313 1.1 lukem add: drink
314 1.1 lukem drink: Mad Dog 20/20
315 1.1 lukem
316 1.1 lukem dn: cn=Rosco P. Coltrane, ou=Retired, ou=People, dc=example,dc=com
317 1.1 lukem changetype: add
318 1.1 lukem objectclass: OpenLDAPperson
319 1.1 lukem sn: Coltrane
320 1.1 lukem uid: rosco
321 1.1 lukem cn: Rosco P. Coltrane
322 1.1 lukem
323 1.1 lukem dn: cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com
324 1.1 lukem changetype: modify
325 1.1 lukem replace: drink
326 1.1.1.6 christos drink: Red Wine
327 1.1.1.6 christos -
328 1.1.1.6 christos replace: drink
329 1.1 lukem
330 1.1 lukem dn: cn=All Staff,ou=Groups,dc=example,dc=com
331 1.1 lukem changetype: modrdn
332 1.1 lukem newrdn: cn=Some Staff
333 1.1 lukem deleteoldrdn: 1
334 1.1 lukem
335 1.1 lukem EOMODS
336 1.1 lukem
337 1.1 lukem echo "Restarting consumer..."
338 1.1 lukem echo "RESTART" >> $LOG2
339 1.1.1.9 christos $SLAPD -f $CONF2 -h $URI2 -d $LVL >> $LOG2 2>&1 &
340 1.1.1.9 christos CONSUMERPID=$!
341 1.1 lukem if test $WAIT != 0 ; then
342 1.1.1.9 christos echo CONSUMERPID $CONSUMERPID
343 1.1 lukem read foo
344 1.1 lukem fi
345 1.1.1.9 christos KILLPIDS="$PID $CONSUMERPID"
346 1.1 lukem
347 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
348 1.1.1.2 lukem sleep $SLEEP1
349 1.1 lukem
350 1.1 lukem if test ! $BACKLDAP = "ldapno" ; then
351 1.1 lukem echo "Try updating the consumer slapd..."
352 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI2 -w $PASSWD > \
353 1.1 lukem $TESTOUT 2>&1 << EOMODS
354 1.1 lukem dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com
355 1.1 lukem changetype: modify
356 1.1 lukem add: description
357 1.1 lukem description: This write must fail because directed to a shadow context,
358 1.1 lukem description: unless the chain overlay is configured appropriately ;)
359 1.1 lukem
360 1.1 lukem EOMODS
361 1.1 lukem
362 1.1 lukem RC=$?
363 1.1 lukem if test $RC != 0 ; then
364 1.1 lukem echo "ldapmodify failed ($RC)!"
365 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
366 1.1 lukem exit $RC
367 1.1 lukem fi
368 1.1 lukem
369 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
370 1.1.1.2 lukem sleep $SLEEP1
371 1.1 lukem fi
372 1.1 lukem
373 1.1.1.4 tron echo "Using ldapsearch to read all the entries from the provider..."
374 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
375 1.1.1.9 christos 'objectclass=*' \* + > $PROVIDEROUT 2>&1
376 1.1 lukem RC=$?
377 1.1 lukem
378 1.1 lukem if test $RC != 0 ; then
379 1.1.1.4 tron echo "ldapsearch failed at provider ($RC)!"
380 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
381 1.1 lukem exit $RC
382 1.1 lukem fi
383 1.1 lukem
384 1.1 lukem echo "Using ldapsearch to read all the entries from the consumer..."
385 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
386 1.1.1.9 christos 'objectclass=*' \* + > $CONSUMEROUT 2>&1
387 1.1 lukem RC=$?
388 1.1 lukem
389 1.1 lukem if test $RC != 0 ; then
390 1.1 lukem echo "ldapsearch failed at consumer ($RC)!"
391 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
392 1.1 lukem exit $RC
393 1.1 lukem fi
394 1.1 lukem
395 1.1.1.10 christos echo "Filtering provider results..."
396 1.1.1.10 christos $LDIFFILTER -b $BACKEND -s $SPEC < $PROVIDEROUT | grep -iv "^auditcontext:" > $PROVIDERFLT
397 1.1.1.10 christos echo "Filtering consumer results..."
398 1.1.1.10 christos $LDIFFILTER -b $BACKEND -s $SPEC < $CONSUMEROUT | grep -iv "^auditcontext:" > $CONSUMERFLT
399 1.1.1.10 christos
400 1.1.1.10 christos echo "Comparing retrieved entries from provider and consumer..."
401 1.1.1.10 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
402 1.1.1.10 christos
403 1.1.1.10 christos if test $? != 0 ; then
404 1.1.1.10 christos echo "test failed - provider and consumer databases differ"
405 1.1.1.10 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
406 1.1.1.10 christos exit 1
407 1.1.1.10 christos fi
408 1.1.1.10 christos
409 1.1.1.10 christos echo "Stopping consumer to test recovery after logpurge expired..."
410 1.1.1.10 christos kill -HUP $CONSUMERPID
411 1.1.1.10 christos wait $CONSUMERPID
412 1.1.1.10 christos KILLPIDS="$PID"
413 1.1.1.10 christos
414 1.1.1.10 christos echo "Modifying even more entries on the provider..."
415 1.1.1.10 christos $LDAPMODIFY -v -D "$BJORNSDN" -H $URI1 -w bjorn >> \
416 1.1.1.10 christos $TESTOUT 2>&1 << EOMODS
417 1.1.1.10 christos dn: cn=Dorothy Stevens,ou=Alumni Association,ou=People,dc=example,dc=com
418 1.1.1.10 christos changetype: delete
419 1.1.1.10 christos
420 1.1.1.10 christos dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
421 1.1.1.10 christos changetype: modify
422 1.1.1.10 christos add: drink
423 1.1.1.10 christos drink: Sangria
424 1.1.1.10 christos
425 1.1.1.10 christos dn: cn=George D. Stevens, ou=Retired, ou=People, dc=example,dc=com
426 1.1.1.10 christos changetype: add
427 1.1.1.10 christos objectclass: OpenLDAPperson
428 1.1.1.10 christos sn: Stevens
429 1.1.1.10 christos uid: gstevens
430 1.1.1.10 christos cn: George D. Stevens
431 1.1.1.10 christos
432 1.1.1.10 christos dn: cn=Barbara Jensen,ou=Information Technology Division,ou=People,dc=example,
433 1.1.1.10 christos dc=com
434 1.1.1.10 christos changetype: modify
435 1.1.1.10 christos replace: drink
436 1.1.1.10 christos drink: cold water
437 1.1.1.10 christos
438 1.1.1.10 christos dn: cn=Some Staff,ou=Groups,dc=example,dc=com
439 1.1.1.10 christos changetype: modrdn
440 1.1.1.10 christos newrdn: cn=More Staff
441 1.1.1.10 christos deleteoldrdn: 1
442 1.1.1.10 christos
443 1.1.1.10 christos EOMODS
444 1.1.1.10 christos
445 1.1.1.10 christos echo "Configuring logpurge of 1 second..."
446 1.1.1.10 christos $LDAPMODIFY -v -D cn=config -H $URI1 -y $CONFIGPWF >> \
447 1.1.1.10 christos $TESTOUT 2>&1 << EOMODS
448 1.1.1.10 christos
449 1.1.1.10 christos dn: olcOverlay={1}accesslog,olcDatabase={2}$BACKEND,cn=config
450 1.1.1.10 christos changetype: modify
451 1.1.1.10 christos replace: olcAccessLogPurge
452 1.1.1.10 christos olcAccessLogPurge: 0+00:00:02 0+00:00:01
453 1.1.1.10 christos -
454 1.1.1.10 christos
455 1.1.1.10 christos EOMODS
456 1.1.1.10 christos RC=$?
457 1.1.1.10 christos if test $RC != 0 ; then
458 1.1.1.10 christos echo "ldapmodify failed ($RC)!"
459 1.1.1.10 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
460 1.1.1.10 christos exit $RC
461 1.1.1.10 christos fi
462 1.1.1.10 christos
463 1.1.1.10 christos echo "Waiting 4 seconds for accesslog to be purged..."
464 1.1.1.10 christos sleep 4
465 1.1.1.10 christos
466 1.1.1.10 christos echo "Using ldapsearch to check if accesslog is empty..."
467 1.1.1.10 christos for i in 0 1 2 3 4 5; do
468 1.1.1.10 christos $LDAPSEARCH -b "cn=log" -H $URI1 -z 1 \
469 1.1.1.10 christos > $SEARCHOUT 2>&1
470 1.1.1.10 christos RC=$?
471 1.1.1.10 christos if test $RC = 0 ; then
472 1.1.1.10 christos break
473 1.1.1.10 christos fi
474 1.1.1.10 christos echo "Waiting 3 seconds for accesslog to be purged..."
475 1.1.1.10 christos sleep 3
476 1.1.1.10 christos done
477 1.1.1.10 christos
478 1.1.1.10 christos if test $RC != 0; then
479 1.1.1.10 christos echo "Accesslog did not purge in time"
480 1.1.1.10 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
481 1.1.1.10 christos exit 1
482 1.1.1.10 christos fi
483 1.1.1.10 christos
484 1.1.1.10 christos
485 1.1.1.10 christos echo "Restarting consumer..."
486 1.1.1.10 christos echo "RESTART" >> $LOG2
487 1.1.1.10 christos $SLAPD -f $CONF2 -h $URI2 -d $LVL >> $LOG2 2>&1 &
488 1.1.1.10 christos CONSUMERPID=$!
489 1.1.1.10 christos if test $WAIT != 0 ; then
490 1.1.1.10 christos echo CONSUMERPID $CONSUMERPID
491 1.1.1.10 christos read foo
492 1.1.1.10 christos fi
493 1.1.1.10 christos KILLPIDS="$PID $CONSUMERPID"
494 1.1.1.10 christos
495 1.1.1.10 christos echo "Waiting $SLEEP1 seconds for syncrepl to reschedule (ITS#9878) and poking it..."
496 1.1.1.10 christos sleep $SLEEP1
497 1.1.1.10 christos
498 1.1.1.10 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \
499 1.1.1.10 christos 'objectclass=*' > /dev/null 2>&1
500 1.1.1.10 christos RC=$?
501 1.1.1.10 christos
502 1.1.1.10 christos if test $RC != 0; then
503 1.1.1.10 christos echo "ldapsearch failed at consumer ($RC)!"
504 1.1.1.10 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
505 1.1.1.10 christos exit 1
506 1.1.1.10 christos fi
507 1.1.1.10 christos
508 1.1.1.10 christos echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
509 1.1.1.10 christos sleep $SLEEP1
510 1.1.1.10 christos
511 1.1.1.10 christos echo "Using ldapsearch to read all the entries from the provider..."
512 1.1.1.10 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \
513 1.1.1.10 christos 'objectclass=*' \* + > $PROVIDEROUT 2>&1
514 1.1.1.10 christos RC=$?
515 1.1.1.10 christos
516 1.1.1.10 christos if test $RC != 0 ; then
517 1.1.1.10 christos echo "ldapsearch failed at provider ($RC)!"
518 1.1.1.10 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
519 1.1.1.10 christos exit $RC
520 1.1.1.10 christos fi
521 1.1.1.10 christos
522 1.1.1.10 christos echo "Using ldapsearch to read all the entries from the consumer..."
523 1.1.1.10 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \
524 1.1.1.10 christos 'objectclass=*' \* + > $CONSUMEROUT 2>&1
525 1.1.1.10 christos RC=$?
526 1.1.1.10 christos
527 1.1.1.10 christos if test $RC != 0 ; then
528 1.1.1.10 christos echo "ldapsearch failed at consumer ($RC)!"
529 1.1.1.10 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
530 1.1.1.10 christos exit $RC
531 1.1.1.10 christos fi
532 1.1.1.10 christos
533 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS
534 1.1 lukem
535 1.1.1.4 tron echo "Filtering provider results..."
536 1.1.1.9 christos $LDIFFILTER -b $BACKEND -s $SPEC < $PROVIDEROUT | grep -iv "^auditcontext:" > $PROVIDERFLT
537 1.1 lukem echo "Filtering consumer results..."
538 1.1.1.9 christos $LDIFFILTER -b $BACKEND -s $SPEC < $CONSUMEROUT | grep -iv "^auditcontext:" > $CONSUMERFLT
539 1.1 lukem
540 1.1.1.4 tron echo "Comparing retrieved entries from provider and consumer..."
541 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT
542 1.1 lukem
543 1.1 lukem if test $? != 0 ; then
544 1.1.1.4 tron echo "test failed - provider and consumer databases differ"
545 1.1 lukem exit 1
546 1.1 lukem fi
547 1.1 lukem
548 1.1 lukem echo ">>>>> Test succeeded"
549 1.1 lukem
550 1.1 lukem test $KILLSERVERS != no && wait
551 1.1 lukem
552 1.1 lukem exit 0
553