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