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 17 1.1 lukem # test now handles known issues 18 1.1 lukem #if test x"$PROXYSYNC" = x ; then 19 1.1 lukem # echo "Test disabled; set PROXYSYNC=yes to enable" 20 1.1 lukem # exit 0 21 1.1 lukem #fi 22 1.1 lukem 23 1.1 lukem echo "running defines.sh" 24 1.1 lukem . $SRCDIR/scripts/defines.sh 25 1.1 lukem 26 1.1 lukem if test $BACKLDAP = ldapno; then 27 1.1 lukem echo "LDAP backend not available, test skipped" 28 1.1 lukem exit 0 29 1.1 lukem fi 30 1.1 lukem 31 1.1 lukem if test $SYNCPROV = syncprovno; then 32 1.1 lukem echo "Syncrepl provider overlay not available, test skipped" 33 1.1 lukem exit 0 34 1.1 lukem fi 35 1.1 lukem 36 1.1 lukem mkdir -p $TESTDIR $DBDIR1 $DBDIR2 37 1.1 lukem 38 1.1 lukem # 39 1.1 lukem # Test replication: 40 1.1.1.9 christos # - start provider 41 1.1.1.9 christos # - start consumer 42 1.1 lukem # - populate over ldap 43 1.1 lukem # - perform some modifies and deleted 44 1.1.1.9 christos # - attempt to modify the consumer (referral or chain) 45 1.1 lukem # - retrieve database over ldap and compare against expected results 46 1.1 lukem # 47 1.1 lukem 48 1.1.1.9 christos echo "Starting provider slapd on TCP/IP port $PORT1..." 49 1.1.1.9 christos . $CONFFILTER $BACKEND < $SRPROVIDERCONF > $CONF1 50 1.1.1.9 christos $SLAPD -f $CONF1 -h $URI1 -d $LVL > $LOG1 2>&1 & 51 1.1.1.9 christos PROVIDERPID=$! 52 1.1 lukem if test $WAIT != 0 ; then 53 1.1.1.9 christos echo PROVIDERPID $PROVIDERPID 54 1.1 lukem read foo 55 1.1 lukem fi 56 1.1.1.9 christos KILLPIDS="$PROVIDERPID" 57 1.1 lukem 58 1.1 lukem sleep 1 59 1.1 lukem 60 1.1.1.9 christos echo "Using ldapsearch to check that provider slapd is running..." 61 1.1 lukem for i in 0 1 2 3 4 5; do 62 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 63 1.1 lukem '(objectClass=*)' > /dev/null 2>&1 64 1.1 lukem RC=$? 65 1.1 lukem if test $RC = 0 ; then 66 1.1 lukem break 67 1.1 lukem fi 68 1.1 lukem echo "Waiting 5 seconds for slapd to start..." 69 1.1 lukem sleep 5 70 1.1 lukem done 71 1.1 lukem 72 1.1 lukem if test $RC != 0 ; then 73 1.1 lukem echo "ldapsearch failed ($RC)!" 74 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 75 1.1 lukem exit $RC 76 1.1 lukem fi 77 1.1 lukem 78 1.1.1.9 christos echo "Using ldapadd to create the context prefix entry in the provider..." 79 1.1.1.9 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 80 1.1 lukem $LDIFORDEREDCP > /dev/null 2>&1 81 1.1 lukem RC=$? 82 1.1 lukem if test $RC != 0 ; then 83 1.1 lukem echo "ldapadd failed ($RC)!" 84 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 85 1.1 lukem exit $RC 86 1.1 lukem fi 87 1.1 lukem 88 1.1.1.9 christos echo "Starting consumer slapd on TCP/IP port $PORT2..." 89 1.1.1.9 christos . $CONFFILTER $BACKEND < $RCONSUMERCONF > $CONF2 90 1.1.1.9 christos $SLAPD -f $CONF2 -h $URI2 -d $LVL > $LOG2 2>&1 & 91 1.1.1.9 christos CONSUMERPID=$! 92 1.1 lukem if test $WAIT != 0 ; then 93 1.1.1.9 christos echo CONSUMERPID $CONSUMERPID 94 1.1 lukem read foo 95 1.1 lukem fi 96 1.1.1.9 christos KILLPIDS="$PROVIDERPID $CONSUMERPID" 97 1.1 lukem 98 1.1 lukem sleep 1 99 1.1 lukem 100 1.1.1.9 christos echo "Using ldapsearch to check that consumer slapd is running..." 101 1.1 lukem for i in 0 1 2 3 4 5; do 102 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI2 \ 103 1.1 lukem '(objectClass=*)' > /dev/null 2>&1 104 1.1 lukem RC=$? 105 1.1 lukem if test $RC = 0 ; then 106 1.1 lukem break 107 1.1 lukem fi 108 1.1 lukem echo "Waiting 5 seconds for slapd to start..." 109 1.1 lukem sleep 5 110 1.1 lukem done 111 1.1 lukem 112 1.1 lukem if test $RC != 0 ; then 113 1.1 lukem echo "ldapsearch failed ($RC)!" 114 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 115 1.1 lukem exit $RC 116 1.1 lukem fi 117 1.1 lukem 118 1.1 lukem echo "Starting proxy slapd on TCP/IP port $PORT3..." 119 1.1.1.9 christos . $CONFFILTER $BACKEND < $PLSRCONSUMERCONF > $CONF3 120 1.1.1.9 christos $SLAPD -f $CONF3 -h $URI3 -d $LVL > $LOG3 2>&1 & 121 1.1 lukem PROXYPID=$! 122 1.1 lukem if test $WAIT != 0 ; then 123 1.1 lukem echo PROXYPID $PROXYPID 124 1.1 lukem read foo 125 1.1 lukem fi 126 1.1.1.9 christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 127 1.1 lukem 128 1.1 lukem sleep 1 129 1.1 lukem 130 1.1 lukem echo "Using ldapsearch to check that proxy slapd is running..." 131 1.1 lukem for i in 0 1 2 3 4 5; do 132 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI3 \ 133 1.1 lukem '(objectClass=*)' > /dev/null 2>&1 134 1.1 lukem RC=$? 135 1.1 lukem if test $RC = 0 || test $RC = 53 ; then 136 1.1 lukem break 137 1.1 lukem fi 138 1.1 lukem echo "Waiting 5 seconds for slapd to start..." 139 1.1 lukem sleep 5 140 1.1 lukem done 141 1.1 lukem 142 1.1 lukem case $RC in 143 1.1 lukem 0 ) 144 1.1 lukem echo "ldapsearch should have failed ($RC)!" 145 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 146 1.1.1.10 christos exit 1 147 1.1 lukem ;; 148 1.1 lukem 53) 149 1.1 lukem ;; 150 1.1 lukem *) 151 1.1 lukem echo "ldapsearch failed ($RC)!" 152 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 153 1.1 lukem exit $RC 154 1.1 lukem ;; 155 1.1 lukem esac 156 1.1 lukem 157 1.1 lukem CHECK=1 158 1.1.1.9 christos echo "$CHECK > Using ldapadd to populate the provider directory..." 159 1.1.1.9 christos $LDAPADD -D "$MANAGERDN" -H $URI1 -w $PASSWD < \ 160 1.1 lukem $LDIFORDEREDNOCP > /dev/null 2>&1 161 1.1 lukem RC=$? 162 1.1 lukem if test $RC != 0 ; then 163 1.1 lukem echo "ldapadd failed ($RC)!" 164 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 165 1.1 lukem exit $RC 166 1.1 lukem fi 167 1.1 lukem 168 1.1.1.9 christos # get provider contextCSN 169 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 170 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 171 1.1 lukem RC=$? 172 1.1 lukem if test $RC != 0 ; then 173 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 174 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 175 1.1 lukem exit $RC 176 1.1 lukem fi 177 1.1 lukem 178 1.1.1.9 christos # check consumer contextCSN 179 1.1 lukem sleep 1 180 1.1 lukem for i in 1 2 3; do 181 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 182 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 183 1.1 lukem RC=$? 184 1.1 lukem 185 1.1 lukem if test $RC != 0 ; then 186 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 187 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 188 1.1 lukem exit $RC 189 1.1 lukem fi 190 1.1 lukem 191 1.1.1.9 christos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 192 1.1 lukem 193 1.1 lukem if test $? = 0 ; then 194 1.1 lukem break 195 1.1 lukem fi 196 1.1 lukem 197 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 198 1.1.1.2 lukem sleep $SLEEP1 199 1.1 lukem done 200 1.1 lukem 201 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the provider..." 202 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 203 1.1.1.9 christos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 204 1.1 lukem RC=$? 205 1.1 lukem 206 1.1 lukem if test $RC != 0 ; then 207 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 208 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 209 1.1 lukem exit $RC 210 1.1 lukem fi 211 1.1 lukem 212 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 213 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 214 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 215 1.1 lukem RC=$? 216 1.1 lukem 217 1.1 lukem if test $RC != 0 ; then 218 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 219 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 220 1.1 lukem exit $RC 221 1.1 lukem fi 222 1.1 lukem 223 1.1.1.9 christos #echo "Filtering provider results..." 224 1.1.1.9 christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 225 1.1.1.9 christos #echo "Filtering consumer results..." 226 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 227 1.1 lukem 228 1.1.1.9 christos echo "$CHECK < Comparing retrieved entries from provider and consumer..." 229 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 230 1.1 lukem 231 1.1 lukem if test $? != 0 ; then 232 1.1.1.9 christos echo "test failed - provider and consumer databases differ" 233 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 234 1.1 lukem exit 1 235 1.1 lukem fi 236 1.1 lukem 237 1.1 lukem CHECK=`expr $CHECK + 1` 238 1.1.1.2 lukem echo "$CHECK > Stopping the provider, sleeping $SLEEP2 seconds and restarting it..." 239 1.1.1.9 christos kill -HUP "$PROVIDERPID" 240 1.1.1.9 christos wait $PROVIDERPID 241 1.1.1.2 lukem sleep $SLEEP2 242 1.1 lukem 243 1.1 lukem echo "======================= RESTART =======================" >> $LOG1 244 1.1.1.9 christos $SLAPD -f $CONF1 -h $URI1 -d $LVL >> $LOG1 2>&1 & 245 1.1.1.9 christos PROVIDERPID=$! 246 1.1 lukem if test $WAIT != 0 ; then 247 1.1.1.9 christos echo PROVIDERPID $PROVIDERPID 248 1.1 lukem read foo 249 1.1 lukem fi 250 1.1.1.9 christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 251 1.1 lukem 252 1.1 lukem sleep 1 253 1.1 lukem 254 1.1.1.9 christos echo "Using ldapsearch to check that provider slapd is running..." 255 1.1 lukem for i in 0 1 2 3 4 5; do 256 1.1.1.9 christos $LDAPSEARCH -s base -b "$MONITOR" -H $URI1 \ 257 1.1 lukem '(objectClass=*)' > /dev/null 2>&1 258 1.1 lukem RC=$? 259 1.1 lukem if test $RC = 0 ; then 260 1.1 lukem break 261 1.1 lukem fi 262 1.1 lukem echo "Waiting 5 seconds for slapd to start..." 263 1.1 lukem sleep 5 264 1.1 lukem done 265 1.1 lukem 266 1.1 lukem if test $RC != 0 ; then 267 1.1 lukem echo "ldapsearch failed ($RC)!" 268 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 269 1.1 lukem exit $RC 270 1.1 lukem fi 271 1.1 lukem 272 1.1.1.9 christos echo "Using ldapmodify to modify provider directory..." 273 1.1 lukem 274 1.1 lukem # 275 1.1 lukem # Do some modifications 276 1.1 lukem # 277 1.1 lukem 278 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \ 279 1.1 lukem $TESTOUT 2>&1 << EOMODS 280 1.1 lukem dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com 281 1.1 lukem changetype: modify 282 1.1 lukem add: drink 283 1.1 lukem drink: Orange Juice 284 1.1 lukem - 285 1.1 lukem delete: sn 286 1.1 lukem sn: Jones 287 1.1 lukem - 288 1.1 lukem add: sn 289 1.1 lukem sn: Jones 290 1.1 lukem 291 1.1 lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 292 1.1 lukem changetype: modify 293 1.1 lukem replace: drink 294 1.1 lukem drink: Iced Tea 295 1.1 lukem 296 1.1 lukem dn: cn=ITD Staff,ou=Groups,dc=example,dc=com 297 1.1 lukem changetype: modify 298 1.1 lukem delete: uniquemember 299 1.1 lukem uniquemember: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com 300 1.1 lukem uniquemember: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 301 1.1 lukem - 302 1.1 lukem add: uniquemember 303 1.1 lukem uniquemember: cn=Dorothy Stevens, ou=Alumni Association, ou=People, dc=example,dc=com 304 1.1 lukem uniquemember: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com 305 1.1 lukem 306 1.1 lukem dn: cn=Bjorn Jensen,ou=Information Technology Division,ou=People,dc=example,dc 307 1.1 lukem =com 308 1.1 lukem changetype: modify 309 1.1 lukem delete: cn 310 1.1 lukem cn: Biiff Jensen 311 1.1 lukem 312 1.1 lukem dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 313 1.1 lukem changetype: add 314 1.1 lukem objectclass: OpenLDAPperson 315 1.1 lukem cn: Gern Jensen 316 1.1 lukem sn: Jensen 317 1.1 lukem uid: gjensen 318 1.1 lukem title: Chief Investigator, ITD 319 1.1 lukem postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103 320 1.1 lukem seealso: cn=All Staff, ou=Groups, dc=example,dc=com 321 1.1 lukem drink: Coffee 322 1.1 lukem homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104 323 1.1 lukem description: Very odd 324 1.1 lukem facsimiletelephonenumber: +1 313 555 7557 325 1.1 lukem telephonenumber: +1 313 555 8343 326 1.1 lukem mail: gjensen@mailgw.example.com 327 1.1 lukem homephone: +1 313 555 8844 328 1.1 lukem 329 1.1 lukem dn: ou=Retired, ou=People, dc=example,dc=com 330 1.1 lukem changetype: add 331 1.1 lukem objectclass: organizationalUnit 332 1.1 lukem ou: Retired 333 1.1 lukem 334 1.1 lukem dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com 335 1.1 lukem changetype: add 336 1.1 lukem objectclass: OpenLDAPperson 337 1.1 lukem cn: Rosco P. Coltrane 338 1.1 lukem sn: Coltrane 339 1.1 lukem uid: rosco 340 1.1 lukem description: Fat tycoon 341 1.1 lukem 342 1.1 lukem dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com 343 1.1 lukem changetype: modrdn 344 1.1 lukem newrdn: cn=Rosco P. Coltrane 345 1.1 lukem deleteoldrdn: 1 346 1.1 lukem newsuperior: ou=Retired, ou=People, dc=example,dc=com 347 1.1 lukem 348 1.1 lukem dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com 349 1.1 lukem changetype: delete 350 1.1 lukem EOMODS 351 1.1 lukem 352 1.1 lukem RC=$? 353 1.1 lukem if test $RC != 0 ; then 354 1.1 lukem echo "ldapmodify failed ($RC)!" 355 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 356 1.1 lukem exit $RC 357 1.1 lukem fi 358 1.1 lukem 359 1.1.1.9 christos # get provider contextCSN 360 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 361 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 362 1.1 lukem RC=$? 363 1.1 lukem if test $RC != 0 ; then 364 1.1.1.9 christos echo "ldapsearch failed at provider ($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.9 christos # check consumer contextCSN 370 1.1 lukem for i in 1 2 3; do 371 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 372 1.1.1.2 lukem sleep $SLEEP1 373 1.1 lukem 374 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 375 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 376 1.1 lukem RC=$? 377 1.1 lukem 378 1.1 lukem if test $RC != 0 ; then 379 1.1.1.9 christos echo "ldapsearch failed at consumer ($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.1.9 christos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 385 1.1 lukem 386 1.1 lukem if test $? = 0 ; then 387 1.1 lukem break 388 1.1 lukem fi 389 1.1 lukem done 390 1.1 lukem 391 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the provider..." 392 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 393 1.1.1.9 christos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 394 1.1 lukem RC=$? 395 1.1 lukem 396 1.1 lukem if test $RC != 0 ; then 397 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 398 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 399 1.1 lukem exit $RC 400 1.1 lukem fi 401 1.1 lukem 402 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 403 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 404 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 405 1.1 lukem RC=$? 406 1.1 lukem 407 1.1 lukem if test $RC != 0 ; then 408 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 409 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 410 1.1 lukem exit $RC 411 1.1 lukem fi 412 1.1 lukem 413 1.1.1.9 christos #echo "Filtering provider results..." 414 1.1.1.9 christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 415 1.1.1.9 christos #echo "Filtering consumer results..." 416 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 417 1.1 lukem 418 1.1.1.9 christos echo "$CHECK < Comparing retrieved entries from provider and consumer..." 419 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 420 1.1 lukem 421 1.1 lukem if test $? != 0 ; then 422 1.1.1.9 christos echo "test failed - provider and consumer databases differ" 423 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 424 1.1 lukem exit 1 425 1.1 lukem fi 426 1.1 lukem 427 1.1 lukem CHECK=`expr $CHECK + 1` 428 1.1 lukem echo "$CHECK > Stopping proxy to test recovery..." 429 1.1 lukem kill -HUP $PROXYPID 430 1.1 lukem wait $PROXYPID 431 1.1 lukem 432 1.1.1.9 christos echo "Modifying more entries on the provider..." 433 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \ 434 1.1 lukem $TESTOUT 2>&1 << EOMODS 435 1.1 lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 436 1.1 lukem changetype: modify 437 1.1 lukem add: description 438 1.1 lukem description: proxy is down... 439 1.1 lukem 440 1.1 lukem dn: cn=James T. Kirk, ou=Retired, ou=People, dc=example,dc=com 441 1.1 lukem changetype: add 442 1.1 lukem objectclass: OpenLDAPperson 443 1.1 lukem sn: Kirk 444 1.1 lukem uid: jtk 445 1.1 lukem cn: James T. Kirk 446 1.1 lukem 447 1.1 lukem dn: cn=Tiberius J. Hooker, ou=Retired, ou=People, dc=example,dc=com 448 1.1 lukem changetype: add 449 1.1 lukem objectclass: OpenLDAPperson 450 1.1 lukem sn: Hooker 451 1.1 lukem uid: tjh 452 1.1 lukem cn: Tiberius J. Hooker 453 1.1 lukem 454 1.1 lukem EOMODS 455 1.1 lukem 456 1.1 lukem echo "Restarting proxy..." 457 1.1 lukem echo "======================= RESTART =======================" >> $LOG3 458 1.1.1.9 christos $SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 & 459 1.1 lukem PROXYPID=$! 460 1.1 lukem if test $WAIT != 0 ; then 461 1.1 lukem echo PROXYPID $PROXYPID 462 1.1 lukem read foo 463 1.1 lukem fi 464 1.1.1.9 christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 465 1.1 lukem 466 1.1.1.9 christos # get provider contextCSN 467 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 468 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 469 1.1 lukem RC=$? 470 1.1 lukem if test $RC != 0 ; then 471 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 472 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 473 1.1 lukem exit $RC 474 1.1 lukem fi 475 1.1 lukem 476 1.1.1.9 christos # check consumer contextCSN 477 1.1 lukem for i in 1 2 3 4 5; do 478 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 479 1.1.1.2 lukem sleep $SLEEP1 480 1.1 lukem 481 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 482 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 483 1.1 lukem RC=$? 484 1.1 lukem 485 1.1 lukem if test $RC != 0 ; then 486 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 487 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 488 1.1 lukem exit $RC 489 1.1 lukem fi 490 1.1 lukem 491 1.1.1.9 christos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 492 1.1 lukem 493 1.1 lukem if test $? = 0 ; then 494 1.1 lukem break 495 1.1 lukem fi 496 1.1 lukem done 497 1.1 lukem 498 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the provider..." 499 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 500 1.1.1.9 christos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 501 1.1 lukem RC=$? 502 1.1 lukem 503 1.1 lukem if test $RC != 0 ; then 504 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 505 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 506 1.1 lukem exit $RC 507 1.1 lukem fi 508 1.1 lukem 509 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 510 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 511 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 512 1.1 lukem RC=$? 513 1.1 lukem 514 1.1 lukem if test $RC != 0 ; then 515 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 516 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 517 1.1 lukem exit $RC 518 1.1 lukem fi 519 1.1 lukem 520 1.1.1.9 christos #echo "Filtering provider results..." 521 1.1.1.9 christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 522 1.1.1.9 christos #echo "Filtering consumer results..." 523 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 524 1.1 lukem 525 1.1.1.9 christos echo "$CHECK < Comparing retrieved entries from provider and consumer..." 526 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 527 1.1 lukem 528 1.1 lukem if test $? != 0 ; then 529 1.1.1.9 christos echo "test failed - provider and consumer databases differ" 530 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 531 1.1 lukem exit 1 532 1.1 lukem fi 533 1.1 lukem 534 1.1 lukem CHECK=`expr $CHECK + 1` 535 1.1.1.9 christos echo "$CHECK > Try updating the consumer slapd..." 536 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI2 -w $PASSWD > \ 537 1.1 lukem $TESTOUT 2>&1 << EOMODS 538 1.1 lukem dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com 539 1.1 lukem changetype: modify 540 1.1 lukem add: description 541 1.1 lukem description: This write must fail because directed to a shadow context, 542 1.1 lukem description: unless the chain overlay is configured appropriately ;) 543 1.1 lukem 544 1.1 lukem EOMODS 545 1.1 lukem 546 1.1 lukem RC=$? 547 1.1 lukem if test $RC != 0 ; then 548 1.1 lukem echo "ldapmodify failed ($RC)!" 549 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 550 1.1 lukem exit $RC 551 1.1 lukem fi 552 1.1 lukem 553 1.1.1.9 christos # get provider contextCSN 554 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 555 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 556 1.1 lukem RC=$? 557 1.1 lukem if test $RC != 0 ; then 558 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 559 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 560 1.1 lukem exit $RC 561 1.1 lukem fi 562 1.1 lukem 563 1.1.1.9 christos # check consumer contextCSN 564 1.1 lukem sleep 1 565 1.1 lukem 566 1.1 lukem for i in 1 2 3; do 567 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 568 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 569 1.1 lukem RC=$? 570 1.1 lukem 571 1.1 lukem if test $RC != 0 ; then 572 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 573 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 574 1.1 lukem exit $RC 575 1.1 lukem fi 576 1.1 lukem 577 1.1.1.9 christos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 578 1.1 lukem 579 1.1 lukem if test $? = 0 ; then 580 1.1 lukem break 581 1.1 lukem fi 582 1.1 lukem 583 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 584 1.1.1.2 lukem sleep $SLEEP1 585 1.1 lukem done 586 1.1 lukem 587 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the provider..." 588 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 589 1.1.1.9 christos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 590 1.1 lukem RC=$? 591 1.1 lukem 592 1.1 lukem if test $RC != 0 ; then 593 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 594 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 595 1.1 lukem exit $RC 596 1.1 lukem fi 597 1.1 lukem 598 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 599 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 600 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 601 1.1 lukem RC=$? 602 1.1 lukem 603 1.1 lukem if test $RC != 0 ; then 604 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 605 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 606 1.1 lukem exit $RC 607 1.1 lukem fi 608 1.1 lukem 609 1.1.1.9 christos #echo "Filtering provider results..." 610 1.1.1.9 christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 611 1.1.1.9 christos #echo "Filtering consumer results..." 612 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 613 1.1 lukem 614 1.1.1.9 christos echo "$CHECK < Comparing retrieved entries from provider and consumer..." 615 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 616 1.1 lukem 617 1.1 lukem if test $? != 0 ; then 618 1.1.1.9 christos echo "test failed - provider and consumer databases differ" 619 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 620 1.1 lukem exit 1 621 1.1 lukem fi 622 1.1 lukem 623 1.1 lukem CHECK=`expr $CHECK + 1` 624 1.1 lukem echo "$CHECK > Stopping consumer to test recovery..." 625 1.1.1.9 christos kill -HUP $CONSUMERPID 626 1.1.1.9 christos wait $CONSUMERPID 627 1.1 lukem 628 1.1.1.9 christos echo "Modifying more entries on the provider..." 629 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD >> \ 630 1.1 lukem $TESTOUT 2>&1 << EOMODS 631 1.1 lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 632 1.1 lukem changetype: modify 633 1.1 lukem add: drink 634 1.1 lukem drink: Mad Dog 20/20 635 1.1 lukem 636 1.1 lukem EOMODS 637 1.1 lukem 638 1.1.1.2 lukem echo "Waiting $SLEEP2 seconds for syncrepl to retry..." 639 1.1.1.2 lukem sleep $SLEEP2 640 1.1 lukem 641 1.1 lukem echo "Restarting consumer..." 642 1.1 lukem echo "======================= RESTART =======================" >> $LOG2 643 1.1.1.9 christos $SLAPD -f $CONF2 -h $URI2 -d $LVL >> $LOG2 2>&1 & 644 1.1.1.9 christos CONSUMERPID=$! 645 1.1 lukem if test $WAIT != 0 ; then 646 1.1.1.9 christos echo CONSUMERPID $CONSUMERPID 647 1.1 lukem read foo 648 1.1 lukem fi 649 1.1.1.9 christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 650 1.1 lukem 651 1.1.1.9 christos # get provider contextCSN 652 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 653 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 654 1.1 lukem RC=$? 655 1.1 lukem if test $RC != 0 ; then 656 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 657 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 658 1.1 lukem exit $RC 659 1.1 lukem fi 660 1.1 lukem 661 1.1.1.9 christos # check consumer contextCSN 662 1.1 lukem 663 1.1 lukem for i in 1 2 3 4 5; do 664 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 665 1.1.1.2 lukem sleep $SLEEP1 666 1.1 lukem 667 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 668 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 669 1.1 lukem RC=$? 670 1.1 lukem 671 1.1 lukem if test $RC != 0 ; then 672 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 673 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 674 1.1 lukem exit $RC 675 1.1 lukem fi 676 1.1 lukem 677 1.1.1.9 christos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 678 1.1 lukem 679 1.1 lukem if test $? = 0 ; then 680 1.1 lukem break 681 1.1 lukem fi 682 1.1 lukem done 683 1.1 lukem 684 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the provider..." 685 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 686 1.1.1.9 christos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 687 1.1 lukem RC=$? 688 1.1 lukem 689 1.1 lukem if test $RC != 0 ; then 690 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 691 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 692 1.1 lukem exit $RC 693 1.1 lukem fi 694 1.1 lukem 695 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 696 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 697 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 698 1.1 lukem RC=$? 699 1.1 lukem 700 1.1 lukem if test $RC != 0 ; then 701 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 702 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 703 1.1 lukem exit $RC 704 1.1 lukem fi 705 1.1 lukem 706 1.1.1.9 christos #echo "Filtering provider results..." 707 1.1.1.9 christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 708 1.1.1.9 christos #echo "Filtering consumer results..." 709 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 710 1.1 lukem 711 1.1.1.9 christos echo "$CHECK < Comparing retrieved entries from provider and consumer..." 712 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 713 1.1 lukem 714 1.1 lukem if test $? != 0 ; then 715 1.1 lukem # FIXME: keep the original workaround in place, in case we needed again 716 1.1 lukem if test 1 = 1 ; then 717 1.1.1.9 christos echo "test failed - provider and consumer databases differ" 718 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 719 1.1 lukem exit 1 720 1.1 lukem fi 721 1.1 lukem 722 1.1.1.9 christos echo " test failed - provider and consumer databases differ (ignored by now)" 723 1.1 lukem echo " Stopping proxy to see if it auto-recovers..." 724 1.1 lukem kill -HUP $PROXYPID 725 1.1 lukem wait $PROXYPID 726 1.1 lukem 727 1.1 lukem echo " ${CHECK}.1 > Restarting proxy..." 728 1.1 lukem echo "======================= RESTART =======================" >> $LOG3 729 1.1.1.9 christos $SLAPD -f $CONF3 -h $URI3 -d $LVL >> $LOG3 2>&1 & 730 1.1 lukem PROXYPID=$! 731 1.1 lukem if test $WAIT != 0 ; then 732 1.1 lukem echo PROXYPID $PROXYPID 733 1.1 lukem read foo 734 1.1 lukem fi 735 1.1.1.9 christos KILLPIDS="$PROVIDERPID $CONSUMERPID $PROXYPID" 736 1.1 lukem 737 1.1.1.2 lukem echo " Waiting $SLEEP2 seconds for syncrepl to receive changes..." 738 1.1.1.2 lukem sleep $SLEEP2 739 1.1 lukem 740 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 741 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 742 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.5.1" 2>&1 743 1.1 lukem RC=$? 744 1.1 lukem 745 1.1 lukem if test $RC != 0 ; then 746 1.1.1.9 christos echo " ldapsearch failed at consumer ($RC)!" 747 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 748 1.1 lukem exit $RC 749 1.1 lukem fi 750 1.1 lukem 751 1.1.1.9 christos #echo "Filtering consumer results..." 752 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.5.1" > $CONSUMERFLT 753 1.1 lukem 754 1.1.1.9 christos echo " ${CHECK}.1 < Comparing retrieved entries from provider and consumer..." 755 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 756 1.1 lukem 757 1.1 lukem if test $? != 0 ; then 758 1.1.1.9 christos echo " test failed - provider and consumer databases differ" 759 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 760 1.1 lukem exit 1 761 1.1 lukem fi 762 1.1 lukem fi 763 1.1 lukem 764 1.1 lukem # 765 1.1 lukem # Modifications formerly known to fail 766 1.1 lukem # 767 1.1 lukem CHECK=`expr $CHECK + 1` 768 1.1 lukem echo "$CHECK > Performing modifications that were formerly known to fail..." 769 1.1.1.9 christos $LDAPMODIFY -v -D "$MANAGERDN" -H $URI1 -w $PASSWD > \ 770 1.1 lukem $TESTOUT 2>&1 << EOMODS 771 1.1 lukem # First, back out previous change 772 1.1 lukem dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com 773 1.1 lukem changetype: modify 774 1.1 lukem delete: drink 775 1.1 lukem drink: Mad Dog 20/20 776 1.1 lukem 777 1.1 lukem # From now on, perform modifications that were formerly known to fail 778 1.1 lukem dn: cn=All Staff,ou=Groups,dc=example,dc=com 779 1.1 lukem changetype: modify 780 1.1 lukem delete: description 781 1.1 lukem 782 1.1 lukem EOMODS 783 1.1 lukem 784 1.1 lukem RC=$? 785 1.1 lukem if test $RC != 0 ; then 786 1.1 lukem echo "ldapmodify failed ($RC)!" 787 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 788 1.1 lukem exit $RC 789 1.1 lukem fi 790 1.1 lukem 791 1.1.1.9 christos # get provider contextCSN 792 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 793 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${PROVIDEROUT}.$CHECK" 2>&1 794 1.1 lukem RC=$? 795 1.1 lukem if test $RC != 0 ; then 796 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 797 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 798 1.1 lukem exit $RC 799 1.1 lukem fi 800 1.1 lukem 801 1.1.1.9 christos # check consumer contextCSN 802 1.1 lukem sleep 1 803 1.1 lukem for i in 1 2 3; do 804 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 805 1.1.1.9 christos -s base '(objectClass=*)' contextCSN > "${CONSUMEROUT}.$CHECK" 2>&1 806 1.1 lukem RC=$? 807 1.1 lukem 808 1.1 lukem if test $RC != 0 ; then 809 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 810 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 811 1.1 lukem exit $RC 812 1.1 lukem fi 813 1.1 lukem 814 1.1.1.9 christos $CMP ${PROVIDEROUT}.$CHECK ${CONSUMEROUT}.$CHECK > $CMPOUT 815 1.1 lukem 816 1.1 lukem if test $? = 0 ; then 817 1.1 lukem break 818 1.1 lukem fi 819 1.1 lukem 820 1.1.1.2 lukem echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..." 821 1.1.1.2 lukem sleep $SLEEP1 822 1.1 lukem done 823 1.1 lukem 824 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the provider..." 825 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI1 \ 826 1.1.1.9 christos '(objectClass=*)' > "${PROVIDEROUT}.$CHECK" 2>&1 827 1.1 lukem RC=$? 828 1.1 lukem 829 1.1 lukem if test $RC != 0 ; then 830 1.1.1.9 christos echo "ldapsearch failed at provider ($RC)!" 831 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 832 1.1 lukem exit $RC 833 1.1 lukem fi 834 1.1 lukem 835 1.1.1.9 christos #echo "Using ldapsearch to read all the entries from the consumer..." 836 1.1.1.9 christos $LDAPSEARCH -S "" -b "$BASEDN" -H $URI2 \ 837 1.1.1.9 christos '(objectClass=*)' > "${CONSUMEROUT}.$CHECK" 2>&1 838 1.1 lukem RC=$? 839 1.1 lukem 840 1.1 lukem if test $RC != 0 ; then 841 1.1.1.9 christos echo "ldapsearch failed at consumer ($RC)!" 842 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 843 1.1 lukem exit $RC 844 1.1 lukem fi 845 1.1 lukem 846 1.1.1.9 christos #echo "Filtering provider results..." 847 1.1.1.9 christos $LDIFFILTER < "${PROVIDEROUT}.$CHECK" > $PROVIDERFLT 848 1.1.1.9 christos #echo "Filtering consumer results..." 849 1.1.1.9 christos $LDIFFILTER < "${CONSUMEROUT}.$CHECK" > $CONSUMERFLT 850 1.1 lukem 851 1.1.1.9 christos echo "$CHECK < Comparing retrieved entries from provider and consumer..." 852 1.1.1.9 christos $CMP $PROVIDERFLT $CONSUMERFLT > $CMPOUT 853 1.1 lukem 854 1.1 lukem if test $? != 0 ; then 855 1.1.1.9 christos echo "test failed - provider and consumer databases differ (ignored by now)" 856 1.1.1.9 christos #echo "test failed - provider and consumer databases differ" 857 1.1 lukem #test $KILLSERVERS != no && kill -HUP $KILLPIDS 858 1.1 lukem #exit 1 859 1.1 lukem fi 860 1.1 lukem 861 1.1 lukem test $KILLSERVERS != no && kill -HUP $KILLPIDS 862 1.1 lukem 863 1.1 lukem echo ">>>>> Test succeeded" 864 1.1 lukem 865 1.1 lukem test $KILLSERVERS != no && wait 866 1.1 lukem 867 1.1 lukem exit 0 868