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