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