]> git.sur5r.net Git - openldap/blob - tests/scripts/test018-syncreplication-persist
Merge in latest changes from HEAD
[openldap] / tests / scripts / test018-syncreplication-persist
1 #! /bin/sh
2 # $OpenLDAP$
3
4 SRCDIR="."
5 if test $# -ge 1 ; then
6         SRCDIR=$1; shift
7 fi
8
9 . $SRCDIR/scripts/args.sh $*
10
11 echo "running defines.sh"
12 . $SRCDIR/scripts/defines.sh
13
14 #
15 # Test replication:
16 # - start master
17 # - start slave
18 # - populate over ldap
19 # - perform some modifies and deleted
20 # - retrieve database over ldap and compare against expected results
21 #
22
23 echo "Cleaning up in $DBDIR..."
24 rm -f $DBDIR/[!C]*
25 echo "Resetting $P1REPLDIR..."
26 rm -rf $P1REPLDIR
27 mkdir $P1REPLDIR
28
29 SAVE=$BACKEND
30 if test $BACKEND = ldbm; then
31         if test $SYNCREPL = no; then
32                 echo "Sync replication requires back-bdb or back-hdb"
33                 exit 0
34         fi
35         BACKEND=$SYNCREPL
36 fi
37 echo "Starting master slapd on TCP/IP port $PORT..."
38 . $CONFFILTER $BACKEND $MONITORDB < $SRMASTERCONF > $DBCONF
39 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
40 PID=$!
41 if test $WAIT != 0 ; then
42     echo PID $PID
43     read foo
44 fi
45 BACKEND=$SAVE
46
47 echo "Waiting 5 seconds to wait for master to start..."
48 sleep 5
49
50 echo "Using ldapsearch to check that master slapd is running..."
51 for i in 0 1 2 3 4 5; do
52         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
53                 'objectclass=*' > /dev/null 2>&1
54         RC=$?
55         if test $RC = 0 ; then
56                 break
57         fi
58         echo "Waiting 5 seconds for slapd to start..."
59         sleep 5
60 done
61
62 echo "Using ldapadd to create the context prefix entry in the master..."
63 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
64         $LDIFORDEREDCP > /dev/null 2>&1
65 RC=$?
66 if test $RC != 0 ; then
67         echo "ldapadd failed ($RC)!"
68         kill -HUP $PID $SLAVEPID
69         exit $RC
70 fi
71
72 echo "Starting slave slapd on TCP/IP port $P1SLAVEPORT..."
73 . $CONFFILTER $BACKEND $MONITORDB < $P1SRSLAVECONF > $P1REPLCONF
74 $SLAPD -f $P1REPLCONF -h $P1SLAVEURI -d $LVL $TIMING > $P1SLAVELOG 2>&1 &
75 P1SLAVEPID=$!
76 if test $WAIT != 0 ; then
77     echo SLAVEPID $P1SLAVEPID
78     read foo
79 fi
80
81 echo "Using ldapsearch to check that slave slapd is running..."
82 for i in 0 1 2 3 4 5; do
83         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $P1SLAVEPORT \
84                 'objectclass=*' > /dev/null 2>&1
85         RC=$?
86         if test $RC = 0 ; then
87                 break
88         fi
89         echo "Waiting 5 seconds for slapd to start..."
90         sleep 5
91 done
92
93 echo "Using ldapadd to populate the master directory..."
94 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
95         $LDIFORDEREDNOCP > /dev/null 2>&1
96 RC=$?
97 if test $RC != 0 ; then
98         echo "ldapadd failed ($RC)!"
99         kill -HUP $PID $SLAVEPID
100         exit $RC
101 fi
102
103 echo "Waiting 20 seconds for syncrepl to receive changes..."
104 sleep 20
105
106 echo "Using ldapmodify to modify master directory..."
107
108 #
109 # Do some modifications
110 #
111
112 $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \
113         $TESTOUT 2>&1 << EOMODS
114 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
115 changetype: modify
116 add: drink
117 drink: Orange Juice
118 -
119 delete: sn
120 sn: Jones
121 -
122 add: sn
123 sn: Jones
124
125 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
126 changetype: modify
127 replace: drink
128 drink: Iced Tea
129 drink: Mad Dog 20/20
130
131 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
132 changetype: modify
133 delete: member
134 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
135 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
136 -
137 add: member
138 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
139 member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
140
141 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
142 changetype: modify
143 delete: description
144
145 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
146 changetype: add
147 objectclass: OpenLDAPperson
148 cn: Gern Jensen
149 sn: Jensen
150 uid: gjensen
151 title: Chief Investigator, ITD
152 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
153 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
154 drink: Coffee
155 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
156 description: Very odd
157 facsimiletelephonenumber: +1 313 555 7557
158 telephonenumber: +1 313 555 8343
159 mail: gjensen@mailgw.example.com
160 homephone: +1 313 555 8844
161
162 dn: ou=Retired, ou=People, o=University of Michigan, c=US
163 changetype: add
164 objectclass: organizationalUnit
165 ou: Retired
166
167 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
168 changetype: add
169 objectclass: OpenLDAPperson
170 cn: Rosco P. Coltrane
171 sn: Coltrane
172 uid: rosco
173
174 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
175 changetype: modrdn
176 newrdn: cn=Rosco P. Coltrane
177 deleteoldrdn: 1
178 newsuperior: ou=Retired, ou=People, o=University of Michigan, c=US
179
180 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
181 changetype: delete
182
183 EOMODS
184
185 echo "Waiting 20 seconds for syncrepl to receive changes..."
186 sleep 20
187
188 echo "Using ldapsearch to read all the entries from the master..."
189 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
190         'objectclass=*' > $MASTEROUT 2>&1
191 RC=$?
192
193 if test $RC != 0 ; then
194         echo "ldapsearch failed at master ($RC)!"
195         kill -HUP $PID $SLAVEPID
196         exit $RC
197 fi
198
199 echo "Using ldapsearch to read all the entries from the slave..."
200 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $P1SLAVEPORT \
201         'objectclass=*' > $P1SLAVEOUT 2>&1
202 RC=$?
203
204 if test $RC != 0 ; then
205         echo "ldapsearch failed at slave ($RC)!"
206         kill -HUP $PID $P1SLAVEPID
207         exit $RC
208 fi
209
210 kill -HUP $PID $P1SLAVEPID
211
212 SEARCHOUT=$MASTEROUT
213 LDIF=$P1SLAVEOUT
214
215 echo "Filtering ldapsearch results..."
216 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
217 echo "Filtering original ldif used to create database..."
218 . $LDIFFILTER < $LDIF > $P1LDIFFLT
219
220 echo "Comparing retrieved entries from master and slave..."
221 $CMP $SEARCHFLT $P1LDIFFLT > $CMPOUT
222
223 if test $? != 0 ; then
224         echo "test failed - master and slave databases differ"
225         exit 1
226 fi
227
228 echo ">>>>> Test succeeded"
229
230
231 exit 0