]> git.sur5r.net Git - openldap/blob - tests/scripts/test011-subtree-repl
Check LOCK_ID() return
[openldap] / tests / scripts / test011-subtree-repl
1 #! /bin/sh
2 # $OpenLDAP$
3
4 echo "Test disabled."
5 exit 0
6
7 SRCDIR="."
8 if test $# -ge 1 ; then
9         SRCDIR=$1; shift
10 fi
11 BACKEND=bdb
12 if test $# -ge 1 ; then
13         BACKEND=$1; shift
14 fi
15 MONITORDB=no
16 if test $# -ge 1 ; then
17         MONITORDB=$1; shift
18 fi
19 WAIT=0
20 if test $# -ge 1 ; then
21         WAIT=1; shift
22 fi
23
24 echo "running defines.sh"
25 . $SRCDIR/scripts/defines.sh
26
27 #
28 # Test replication:
29 # - start master
30 # - start slave
31 # - create root entry in slave
32 # - start slurpd
33 # - populate over ldap
34 # - perform some modifies and deleted
35 # - retrieve database over ldap and compare against expected results
36 #
37
38 if test ! -x $SLURPD ; then
39         echo ">>>>> $SLURPD is not executable or do not exist."
40         echo ">>>>> Test skipped."
41         exit 0
42 fi
43
44 echo "Cleaning up in $DBDIR..."
45 rm -f $DBDIR/[!C]*
46 echo "Cleaning up in $REPLDIR..."
47 rm -f $REPLDIR/replica/[!C]*
48 rm -f $REPLDIR/[!C]*
49
50 echo "Starting master slapd on TCP/IP port $PORT..."
51 . $CONFFILTER $BACKEND $MONITORDB < $SUBMASTERCONF > $DBCONF
52 $SLAPD -f $DBCONF -h $MASTERURI -d $LVL $TIMING > $MASTERLOG 2>&1 &
53 PID=$!
54 if test $WAIT != 0 ; then
55     echo PID $PID
56     read foo
57 fi
58
59 echo "Starting slave slapd on TCP/IP port $SLAVEPORT..."
60 . $CONFFILTER $BACKEND $MONITORDB < $SUBSLAVECONF > $REPLCONF
61 $SLAPD -f $REPLCONF -h $SLAVEURI -d $LVL $TIMING > $SLAVELOG 2>&1 &
62 SLAVEPID=$!
63 if test $WAIT != 0 ; then
64     echo SLAVEPID $SLAVEPID
65     read foo
66 fi
67
68 echo "Using ldapsearch to check that master slapd is running..."
69 for i in 0 1 2 3 4 5; do
70         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
71                 'objectclass=*' > /dev/null 2>&1
72         RC=$?
73         if test $RC = 1 ; then
74                 echo "Waiting 5 seconds for slapd to start..."
75                 sleep 5
76         fi
77 done
78
79 echo "Using ldapsearch to check that slave slapd is running..."
80 for i in 0 1 2 3 4 5; do
81         $LDAPSEARCH -s base -b "$MONITOR" -h $LOCALHOST -p $PORT \
82                 'objectclass=*' > /dev/null 2>&1
83         RC=$?
84         if test $RC = 1 ; then
85                 echo "Waiting 5 seconds for slapd to start..."
86                 sleep 5
87         fi
88 done
89
90 echo "Starting slurpd..."
91 $SLURPD -f $SUBMASTERCONF -d ${SLURPD_DEBUG-5} -t $REPLDIR > $SLURPLOG 2>&1 &
92 SLURPPID=$!
93
94 echo "Using ldapadd to populate the master directory..."
95 $LDAPADD -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD < \
96         $LDIFORDERED > /dev/null 2>&1
97 RC=$?
98 if test $RC != 0 ; then
99         echo "ldapadd failed ($RC)!"
100         kill -INT $PID $SLAVEPID
101         kill -KILL $SLURPPID
102         exit $RC
103 fi
104
105 echo "Waiting 15 seconds for slurpd to send changes..."
106 sleep 15
107
108 echo "Using ldapmodify to modify master directory..."
109
110 #
111 # Do some modifications
112 #
113
114 $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \
115         $TESTOUT 2>&1 << EOMODS
116 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
117 changetype: modify
118 add: drink
119 drink: Orange Juice
120
121 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
122 changetype: modify
123 replace: drink
124 drink: Iced Tea
125 drink: Mad Dog 20/20
126
127 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
128 delete: member
129 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
130 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
131 -
132 add: member
133 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
134 member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
135
136 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
137 changetype: modify
138 delete: member
139
140 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
141 changetype: add
142 objectclass: top
143 objectclass: person
144 objectclass: OpenLDAPperson
145 cn: Gern Jensen
146 sn: Jensen
147 uid: gjensen
148 title: Chief Investigator, ITD
149 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
150 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
151 drink: Coffee
152 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
153 description: Very odd
154 facsimiletelephonenumber: +1 313 555 7557
155 telephonenumber: +1 313 555 8343
156 mail: gjensen@mailgw.umich.edu
157 homephone: +1 313 555 8844
158
159 dn: ou=Retired, ou=People, o=University of Michigan, c=US
160 changetype: add
161 objectclass: top
162 objectclass: organizationalUnit
163 ou: Retired
164
165 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
166 changetype: add
167 objectclass: top
168 objectclass: person
169 cn: Rosco P. Coltrane
170 sn: Coltrane
171
172 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
173 changetype: modrdn
174 newrdn: cn=Rosco P. Coltrane
175 deleteoldrdn: 1
176 newsuperior: ou=Retired, ou=People, o=University of Michigan, c=US
177
178 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
179 changetype: delete
180
181 EOMODS
182
183 echo "Waiting 15 seconds for slurpd to send changes..."
184 sleep 15
185
186 echo "Using ldapsearch to read all the entries from the master..."
187 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
188         'objectclass=*' > $MASTEROUT 2>&1
189 RC=$?
190
191 if test $RC != 0 ; then
192         echo "ldapsearch failed ($RC)!"
193         kill -INT $PID $SLAVEPID
194         kill -KILL $SLURPPID
195         exit $RC
196 fi
197
198 echo "Using ldapsearch to read the subtree entries from the master..."
199 $LDAPSEARCH -S "" -b "ou=Groups, $BASEDN" -h $LOCALHOST -p $PORT \
200         'objectclass=*' > $SUBMASTEROUT 2>&1
201 RC=$?
202
203 if test $RC != 0 ; then
204         echo "ldapsearch failed ($RC)!"
205         kill -INT $PID $SLAVEPID
206         kill -KILL $SLURPPID
207         exit $RC
208 fi
209
210 echo "Using ldapsearch to read all the entries from the slave..."
211 $LDAPSEARCH -S "" -b "ou=Groups, $BASEDN" -h $LOCALHOST -p $SLAVEPORT \
212         'objectclass=*' > $SLAVEOUT 2>&1
213 RC=$?
214
215 if test $RC != 0 ; then
216         echo "ldapsearch failed ($RC)!"
217         kill -INT $PID $SLAVEPID
218         kill -KILL $SLURPPID
219         exit $RC
220 fi
221
222 kill -INT $PID $SLAVEPID
223 kill -KILL $SLURPPID
224
225 SEARCHOUT=$SUBMASTEROUT
226 LDIF=$SLAVEOUT
227
228 echo "Filtering master ldapsearch results..."
229 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
230 echo "Filtering slave ldapsearch results..."
231 . $LDIFFILTER < $LDIF > $LDIFFLT
232
233 echo "Comparing retrieved entries from master and slave..."
234 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
235
236 if test $? != 0 ; then
237         echo "test failed - master and slave databases differ"
238         exit 1
239 fi
240
241 SEARCHOUT=$MASTEROUT
242
243 echo "Filtering remaining data"
244 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
245
246 echo "Stripping slave entries from master output..."
247 $CMP $SEARCHFLT $LDIFFLT | $UNDIFFFILTER > $SUBFLT
248
249 echo "Stripping subtree entries from master output..."
250 . $SUBFILTER 'ou=Groups,[ ]?o=University of Michigan,[ ]?c=US' < $SEARCHOUT \
251         | $UNDIFFFILTER > $SUBFLT2
252
253 echo "Comparing master minus subtree and master minus slave..."
254 $CMP $SUBFLT $SUBFLT2 > $CMPOUT
255
256 if test $? != 0 ; then
257         echo "test failed - master and slave databases differ"
258         exit 1
259 fi
260
261 echo ">>>>> Test succeeded"
262
263 exit 0