Diff for /tests/scripts/test017-syncreplication-refresh between versions 1.9 and 1.37

version 1.9, 2003/08/28 20:29:12 version 1.37, 2008/01/07 23:20:17
Line 1 Line 1
 #! /bin/sh  #! /bin/sh
 # $OpenLDAP: pkg/ldap/tests/scripts/test017-syncreplication-refresh,v 1.8 2003/07/14 22:27:59 jongchoi Exp $  # $OpenLDAP: pkg/ldap/tests/scripts/test017-syncreplication-refresh,v 1.36 2007/08/17 10:39:17 ando Exp $
   ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
 SRCDIR="."  ##
 if test $# -ge 1 ; then  ## Copyright 1998-2008 The OpenLDAP Foundation.
         SRCDIR=$1; shift  ## All rights reserved.
 fi  ##
   ## Redistribution and use in source and binary forms, with or without
 . $SRCDIR/scripts/args.sh $*  ## 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>.
   
 echo "running defines.sh"  echo "running defines.sh"
 . $SRCDIR/scripts/defines.sh  . $SRCDIR/scripts/defines.sh
   
   if test $SYNCPROV = syncprovno; then 
           echo "Syncrepl provider overlay not available, test skipped"
           exit 0
   fi 
   
   mkdir -p $TESTDIR $DBDIR1 $DBDIR2
   
 #  #
 # Test replication:  # Test replication:
 # - start master  # - start producer
 # - 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 producer 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  
   
 SAVE=$BACKEND  
 BACKEND=bdb  
 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
 BACKEND=$SAVE  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 producer 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 53  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 producer..."
   $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 84  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 producer 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 90 seconds for syncrepl to receive changes..."  echo "Waiting 15 seconds for syncrepl to receive changes..."
 sleep 90  sleep 15
   
 echo "Using ldapmodify to modify master directory..."  echo "Using ldapmodify to modify producer 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 116  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 144  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 153  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
   
 EOMODS  EOMODS
   
 echo "Waiting 90 seconds for syncrepl to receive changes..."  RC=$?
 sleep 90  if test $RC != 0 ; then
           echo "ldapmodify failed ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
           exit $RC
   fi
   
   echo "Waiting 15 seconds for syncrepl to receive changes..."
   sleep 15
   
   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
   
 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  # expect 10 (LDAP_REFERRAL)...
         echo "ldapsearch failed at master ($RC)!"  if test $RC != 10 ; then
         kill -HUP $PID $SLAVEPID          echo "ldapmodify should have returned referral ($RC)!"
           test $KILLSERVERS != no && kill -HUP $KILLPIDS
         exit $RC          exit $RC
 fi  fi
   
 echo "Using ldapsearch to read all the entries from the slave..."  OPATTRS="entryUUID creatorsName createTimestamp modifiersName modifyTimestamp"
 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $R1SLAVEPORT \  
         'objectclass=*' > $R1SLAVEOUT 2>&1  echo "Using ldapsearch to read all the entries from the producer..."
   $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 producer ($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 producer 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 producer 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 - producer 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.9  
changed lines
  Added in v.1.37


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