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