Diff for /tests/scripts/test017-syncreplication-refresh between versions 1.7 and 1.33.2.13

version 1.7, 2003/06/26 05:18:50 version 1.33.2.13, 2011/01/04 23:51:05
Line 1 Line 1
 #! /bin/sh  #! /bin/sh
 # $OpenLDAP: pkg/ldap/tests/scripts/test017-syncreplication-refresh,v 1.6 2003/06/26 04:12:55 jongchoi Exp $  # $OpenLDAP: pkg/ldap/tests/scripts/test017-syncreplication-refresh,v 1.33.2.12 2011/01/04 00:40:35 quanah Exp $
   ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
   ##
   ## Copyright 1998-2011 The OpenLDAP Foundation.
   ## All rights reserved.
   ##
   ## Redistribution and use in source and binary forms, with or without
   ## modification, are permitted only as authorized by the OpenLDAP
   ## Public License.
   ##
   ## A copy of this license is available in the file LICENSE in the
   ## top-level directory of the distribution or, alternatively, at
   ## <http://www.OpenLDAP.org/license.html>.
   
 SRCDIR="."  echo "running defines.sh"
 if test $# -ge 1 ; then  . $SRCDIR/scripts/defines.sh
         SRCDIR=$1; shift  
 fi  
   
 . $SRCDIR/scripts/args.sh $*  
   
 if test "$BACKEND" != "bdb" -a "$BACKEND" != "hdb"; then  if test $SYNCPROV = syncprovno; then 
         echo "Test only valid for back-bdb"          echo "Syncrepl provider overlay not available, test skipped"
         exit 0          exit 0
 fi  fi 
   
 echo "running defines.sh"  mkdir -p $TESTDIR $DBDIR1 $DBDIR2
 . $SRCDIR/scripts/defines.sh  
   
 #  #
 # Test replication:  # Test replication:
 # - start master  # - start provider
 # - start slave  # - start consumer
 # - populate over ldap  # - populate over ldap
 # - perform some modifies and deleted  # - perform some modifies and deleted
   # - attempt to modify the consumer (referral)
 # - retrieve database over ldap and compare against expected results  # - retrieve database over ldap and compare against expected results
 #  #
   
 echo "Cleaning up in $DBDIR..."  echo "Starting provider slapd on TCP/IP port $PORT1..."
 rm -f $DBDIR/[!C]*  . $CONFFILTER $BACKEND $MONITORDB < $SRMASTERCONF > $CONF1
 echo "Resetting $R1REPLDIR..."  $SLAPD -f $CONF1 -h $URI1 -d $LVL $TIMING > $LOG1 2>&1 &
 rm -rf $R1REPLDIR  
 mkdir $R1REPLDIR  
   
 echo "Starting master slapd on TCP/IP port $PORT..."  
 . $CONFFILTER $BACKEND $MONITORDB < $SRMASTERCONF > $DBCONF  
 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &  
 PID=$!  PID=$!
 if test $WAIT != 0 ; then  if test $WAIT != 0 ; then
     echo PID $PID      echo PID $PID
     read foo      read foo
 fi  fi
   KILLPIDS="$PID"
   
 echo "Waiting 5 seconds to wait for master to start..."  sleep 1
 sleep 5  
   
 echo "Using ldapsearch to check that master slapd is running..."  echo "Using ldapsearch to check that provider slapd is running..."
 for i in 0 1 2 3 4 5; do  for i in 0 1 2 3 4 5; do
         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \          $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT1 \
                 'objectclass=*' > /dev/null 2>&1                  'objectclass=*' > /dev/null 2>&1
         RC=$?          RC=$?
         if test $RC = 0 ; then          if test $RC = 0 ; then
Line 55  for i in 0 1 2 3 4 5; do Line 57  for i in 0 1 2 3 4 5; do
         sleep 5          sleep 5
 done  done
   
 echo "Using ldapadd to create the context prefix entry in the master..."  if test $RC != 0 ; then
 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \          echo "ldapsearch failed ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
   echo "Using ldapadd to create the context prefix entry in the provider..."
   $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
         $LDIFORDEREDCP > /dev/null 2>&1          $LDIFORDEREDCP > /dev/null 2>&1
 RC=$?  RC=$?
 if test $RC != 0 ; then  if test $RC != 0 ; then
         echo "ldapadd failed ($RC)!"          echo "ldapadd failed ($RC)!"
         kill -HUP $PID $SLAVEPID          test $KILLSERVERS != no && kill -HUP $KILLPIDS
         exit $RC          exit $RC
 fi  fi
   
 echo "Starting slave slapd on TCP/IP port $R1SLAVEPORT..."  echo "Starting consumer slapd on TCP/IP port $PORT2..."
 . $CONFFILTER $BACKEND $MONITORDB < $R1SRSLAVECONF > $R1REPLCONF  . $CONFFILTER $BACKEND $MONITORDB < $R1SRSLAVECONF > $CONF2
 $SLAPD -f $R1REPLCONF -h $R1SLAVEURI -d $LVL $TIMING > $R1SLAVELOG 2>&1 &  $SLAPD -f $CONF2 -h $URI2 -d $LVL $TIMING > $LOG2 2>&1 &
 R1SLAVEPID=$!  SLAVEPID=$!
 if test $WAIT != 0 ; then  if test $WAIT != 0 ; then
     echo SLAVEPID $R1SLAVEPID      echo SLAVEPID $SLAVEPID
     read foo      read foo
 fi  fi
   KILLPIDS="$KILLPIDS $SLAVEPID"
   
   sleep 1
   
 echo "Using ldapsearch to check that slave slapd is running..."  echo "Using ldapsearch to check that consumer slapd is running..."
 for i in 0 1 2 3 4 5; do  for i in 0 1 2 3 4 5; do
         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $R1SLAVEPORT \          $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT2 \
                 'objectclass=*' > /dev/null 2>&1                  'objectclass=*' > /dev/null 2>&1
         RC=$?          RC=$?
         if test $RC = 0 ; then          if test $RC = 0 ; then
Line 86  for i in 0 1 2 3 4 5; do Line 97  for i in 0 1 2 3 4 5; do
         sleep 5          sleep 5
 done  done
   
 echo "Using ldapadd to populate the master directory..."  if test $RC != 0 ; then
 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \          echo "ldapsearch failed ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
   echo "Using ldapadd to populate the provider directory..."
   $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD < \
         $LDIFORDEREDNOCP > /dev/null 2>&1          $LDIFORDEREDNOCP > /dev/null 2>&1
 RC=$?  RC=$?
 if test $RC != 0 ; then  if test $RC != 0 ; then
         echo "ldapadd failed ($RC)!"          echo "ldapadd failed ($RC)!"
         kill -HUP $PID $SLAVEPID          test $KILLSERVERS != no && kill -HUP $KILLPIDS
         exit $RC          exit $RC
 fi  fi
   
 echo "Waiting 30 seconds for syncrepl to receive changes..."  echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 sleep 30  sleep $SLEEP1
   
 echo "Using ldapmodify to modify master directory..."  echo "Using ldapmodify to modify provider directory..."
   
 #  #
 # Do some modifications  # Do some modifications
 #  #
   
 $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \  $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
         $TESTOUT 2>&1 << EOMODS          $TESTOUT 2>&1 << EOMODS
 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US  dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
 changetype: modify  changetype: modify
 add: drink  add: drink
 drink: Orange Juice  drink: Orange Juice
Line 118  sn: Jones Line 135  sn: Jones
 add: sn  add: sn
 sn: Jones  sn: Jones
   
 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
 changetype: modify  changetype: modify
 replace: drink  replace: drink
 drink: Iced Tea  drink: Iced Tea
 drink: Mad Dog 20/20  drink: Mad Dog 20/20
   
 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US  dn: cn=ITD Staff,ou=Groups,dc=example,dc=com
 changetype: modify  changetype: modify
 delete: member  delete: uniquemember
 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  uniquemember: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com
 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  uniquemember: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
 -  -
 add: member  add: uniquemember
 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US  uniquemember: cn=Dorothy Stevens, ou=Alumni Association, ou=People, dc=example,dc=com
 member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US  uniquemember: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example,dc=com
   
 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US  dn: cn=All Staff,ou=Groups,dc=example,dc=com
 changetype: modify  changetype: modify
 delete: description  delete: description
   
 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, dc=example,dc=com
 changetype: add  changetype: add
 objectclass: OpenLDAPperson  objectclass: OpenLDAPperson
 cn: Gern Jensen  cn: Gern Jensen
Line 146  sn: Jensen Line 163  sn: Jensen
 uid: gjensen  uid: gjensen
 title: Chief Investigator, ITD  title: Chief Investigator, ITD
 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103  postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US  seealso: cn=All Staff, ou=Groups, dc=example,dc=com
 drink: Coffee  drink: Coffee
 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104  homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
 description: Very odd  description: Very odd
Line 155  telephonenumber: +1 313 555 8343 Line 172  telephonenumber: +1 313 555 8343
 mail: gjensen@mailgw.example.com  mail: gjensen@mailgw.example.com
 homephone: +1 313 555 8844  homephone: +1 313 555 8844
   
 dn: ou=Retired, ou=People, o=University of Michigan, c=US  dn: ou=Retired, ou=People, dc=example,dc=com
 changetype: add  changetype: add
 objectclass: organizationalUnit  objectclass: organizationalUnit
 ou: Retired  ou: Retired
   
 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com
 changetype: add  changetype: add
 objectclass: OpenLDAPperson  objectclass: OpenLDAPperson
 cn: Rosco P. Coltrane  cn: Rosco P. Coltrane
 sn: Coltrane  sn: Coltrane
 uid: rosco  uid: rosco
   
 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, dc=example,dc=com
 changetype: modrdn  changetype: modrdn
 newrdn: cn=Rosco P. Coltrane  newrdn: cn=Rosco P. Coltrane
 deleteoldrdn: 1  deleteoldrdn: 1
 newsuperior: ou=Retired, ou=People, o=University of Michigan, c=US  newsuperior: ou=Retired, ou=People, dc=example,dc=com
   
 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US  dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, dc=example,dc=com
 changetype: delete  changetype: delete
   
   dn: dc=testdomain1,dc=example,dc=com
   changetype: modrdn
   newrdn: dc=itsdomain1
   deleteoldrdn: 1
   
   dn: dc=itsdomain1,dc=example,dc=com
   changetype: modify
   replace: description
   description: Example, Inc. ITS test domain
   
 EOMODS  EOMODS
   
 echo "Waiting 30 seconds for syncrepl to receive changes..."  RC=$?
 sleep 30  if test $RC != 0 ; then
           echo "ldapmodify failed ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
   echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
   sleep $SLEEP1
   
   echo "Performing modrdn alone on the provider..."
   $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
           $TESTOUT 2>&1 << EOMODS
   dn: dc=testdomain2,dc=example,dc=com
   changetype: modrdn
   newrdn: dc=itsdomain2
   deleteoldrdn: 1
   
   EOMODS
   
 echo "Using ldapsearch to read all the entries from the master..."  
 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \  
         'objectclass=*' > $MASTEROUT 2>&1  
 RC=$?  RC=$?
   if test $RC != 0 ; then
           echo "ldapmodify failed ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
   echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
   sleep $SLEEP1
   
   echo "Performing modify alone on the provider..."
   $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
           $TESTOUT 2>&1 << EOMODS
   dn: dc=itsdomain2,dc=example,dc=com
   changetype: modify
   replace: description
   description: Example, Inc. itsdomain2 test domain
   
   EOMODS
   
   RC=$?
   if test $RC != 0 ; then
           echo "ldapmodify failed ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
   echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
   sleep $SLEEP1
   
   echo "Performing larger modify on the provider..."
   $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT1 -w $PASSWD > \
           $TESTOUT 2>&1 << EOMODS
   dn: cn=Alumni Assoc Staff,ou=Groups,dc=example,dc=com
   changetype: modify
   replace: objectClass
   objectClass: groupOfNames
   -
   replace: cn
   cn: Alumni Assoc Staff
   -
   replace: description
   description: blablabla
   -
   replace: member
   member: cn=Manager,dc=example,dc=com
   member: cn=Dorothy Stevens,ou=Alumni Association,ou=People,dc=example,dc=com
   member: cn=James A Jones 1,ou=Alumni Association,ou=People,dc=example,dc=com
   member: cn=Jane Doe,ou=Alumni Association,ou=People,dc=example,dc=com
   member: cn=Jennifer Smith,ou=Alumni Association,ou=People,dc=example,dc=com
   member: cn=Mark Elliot,ou=Alumni Association,ou=People,dc=example,dc=com
   member: cn=Ursula Hampster,ou=Alumni Association,ou=People,dc=example,dc=com
   
   EOMODS
   
   RC=$?
 if test $RC != 0 ; then  if test $RC != 0 ; then
         echo "ldapsearch failed at master ($RC)!"          echo "ldapmodify failed ($RC)!"
         kill -HUP $PID $SLAVEPID          test $KILLSERVERS != no && kill -HUP $KILLPIDS
         exit $RC          exit $RC
 fi  fi
   
 echo "Using ldapsearch to read all the entries from the slave..."  echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $R1SLAVEPORT \  sleep $SLEEP1
         'objectclass=*' > $R1SLAVEOUT 2>&1  
   echo "Try updating the consumer slapd..."
   $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT2 -w $PASSWD > \
           $TESTOUT 2>&1 << EOMODS
   dn: cn=James A Jones 1, ou=Alumni Association, ou=People, dc=example, dc=com
   changetype: modify
   add: description
   description: This write must fail because directed to a shadow context,
   description: unless the chain overlay is configured appropriately ;)
   
   EOMODS
   
   RC=$?
   
   # expect 10 (LDAP_REFERRAL)...
   if test $RC != 10 ; then
           echo "ldapmodify should have returned referral ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit 1
   fi
   
   OPATTRS="entryUUID creatorsName createTimestamp modifiersName modifyTimestamp"
   
   echo "Using ldapsearch to read all the entries from the provider..."
   $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT1 \
           '(objectclass=*)' '*' $OPATTRS > $MASTEROUT 2>&1
 RC=$?  RC=$?
   
 if test $RC != 0 ; then  if test $RC != 0 ; then
         echo "ldapsearch failed at slave ($RC)!"          echo "ldapsearch failed at provider ($RC)!"
         kill -HUP $PID $R1SLAVEPID          test $KILLSERVERS != no && kill -HUP $KILLPIDS
         exit $RC          exit $RC
 fi  fi
   
 kill -HUP $PID $R1SLAVEPID  echo "Using ldapsearch to read all the entries from the consumer..."
   $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT2 \
           '(objectclass=*)' '*' $OPATTRS > $SLAVEOUT 2>&1
   RC=$?
   
   if test $RC != 0 ; then
           echo "ldapsearch failed at consumer ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
 SEARCHOUT=$MASTEROUT  test $KILLSERVERS != no && kill -HUP $KILLPIDS
 LDIF=$R1SLAVEOUT  
   
 echo "Filtering ldapsearch results..."  echo "Filtering provider results..."
 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT  $LDIFFILTER < $MASTEROUT > $MASTERFLT
 echo "Filtering original ldif used to create database..."  echo "Filtering consumer results..."
 . $LDIFFILTER < $LDIF > $R1LDIFFLT  $LDIFFILTER < $SLAVEOUT > $SLAVEFLT
   
 echo "Comparing retrieved entries from master and slave..."  echo "Comparing retrieved entries from provider and consumer..."
 $CMP $SEARCHFLT $R1LDIFFLT > $CMPOUT  $CMP $MASTERFLT $SLAVEFLT > $CMPOUT
   
 if test $? != 0 ; then  if test $? != 0 ; then
         echo "test failed - master and slave databases differ"          echo "test failed - provider and consumer databases differ"
         exit 1          exit 1
 fi  fi
   
 echo ">>>>> Test succeeded"  echo ">>>>> Test succeeded"
   
   test $KILLSERVERS != no && wait
   
 exit 0  exit 0

Removed from v.1.7  
changed lines
  Added in v.1.33.2.13


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org