]> git.sur5r.net Git - openldap/blob - tests/scripts/test017-syncreplication-refresh
6d392afccee0e778a0bea396ff7535d88907fdbe
[openldap] / tests / scripts / test017-syncreplication-refresh
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" -a "$BACKEND" != "hdb"; 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 < $SRREFSLAVECONF > $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 $SLAVEPORT \
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         exit $RC
86 fi
87
88 echo "Waiting 30 seconds for syncrepl to receive changes..."
89 sleep 30
90
91 echo "Using ldapmodify to modify master directory..."
92
93 #
94 # Do some modifications
95 #
96
97 $LDAPMODIFY -v -D "$MANAGERDN" -h $LOCALHOST -p $PORT -w $PASSWD > \
98         $TESTOUT 2>&1 << EOMODS
99 dn: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
100 changetype: modify
101 add: drink
102 drink: Orange Juice
103 -
104 delete: sn
105 sn: Jones
106 -
107 add: sn
108 sn: Jones
109
110 dn: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
111 changetype: modify
112 replace: drink
113 drink: Iced Tea
114 drink: Mad Dog 20/20
115
116 dn: cn=ITD Staff,ou=Groups,o=University of Michigan,c=US
117 changetype: modify
118 delete: member
119 member: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
120 member: cn=Bjorn Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
121 -
122 add: member
123 member: cn=Dorothy Stevens, ou=Alumni Association, ou=People, o=University of Michigan, c=US
124 member: cn=James A Jones 1, ou=Alumni Association, ou=People, o=University of Michigan, c=US
125
126 dn: cn=All Staff,ou=Groups,o=University of Michigan,c=US
127 changetype: modify
128 delete: description
129
130 dn: cn=Gern Jensen, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
131 changetype: add
132 objectclass: OpenLDAPperson
133 cn: Gern Jensen
134 sn: Jensen
135 uid: gjensen
136 title: Chief Investigator, ITD
137 postaladdress: ITD $ 535 W. William St $ Ann Arbor, MI 48103
138 seealso: cn=All Staff, ou=Groups, o=University of Michigan, c=US
139 drink: Coffee
140 homepostaladdress: 844 Brown St. Apt. 4 $ Ann Arbor, MI 48104
141 description: Very odd
142 facsimiletelephonenumber: +1 313 555 7557
143 telephonenumber: +1 313 555 8343
144 mail: gjensen@mailgw.example.com
145 homephone: +1 313 555 8844
146
147 dn: ou=Retired, ou=People, o=University of Michigan, c=US
148 changetype: add
149 objectclass: organizationalUnit
150 ou: Retired
151
152 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
153 changetype: add
154 objectclass: OpenLDAPperson
155 cn: Rosco P. Coltrane
156 sn: Coltrane
157 uid: rosco
158
159 dn: cn=Rosco P. Coltrane, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
160 changetype: modrdn
161 newrdn: cn=Rosco P. Coltrane
162 deleteoldrdn: 1
163 newsuperior: ou=Retired, ou=People, o=University of Michigan, c=US
164
165 dn: cn=James A Jones 2, ou=Information Technology Division, ou=People, o=University of Michigan, c=US
166 changetype: delete
167
168 EOMODS
169
170 echo "Waiting 30 seconds for syncrepl to receive changes..."
171 sleep 30
172
173 echo "Using ldapsearch to read all the entries from the master..."
174 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $PORT \
175         'objectclass=*' > $MASTEROUT 2>&1
176 RC=$?
177
178 if test $RC != 0 ; then
179         echo "ldapsearch failed at master ($RC)!"
180         kill -HUP $PID $SLAVEPID
181         exit $RC
182 fi
183
184 echo "Using ldapsearch to read all the entries from the slave..."
185 $LDAPSEARCH -S "" -b "$BASEDN" -h $LOCALHOST -p $SLAVEPORT \
186         'objectclass=*' > $SLAVEOUT 2>&1
187 RC=$?
188
189 if test $RC != 0 ; then
190         echo "ldapsearch failed at slave ($RC)!"
191         kill -HUP $PID $SLAVEPID
192         exit $RC
193 fi
194
195 kill -HUP $PID $SLAVEPID
196
197 SEARCHOUT=$MASTEROUT
198 LDIF=$SLAVEOUT
199
200 echo "Filtering ldapsearch results..."
201 . $LDIFFILTER < $SEARCHOUT > $SEARCHFLT
202 echo "Filtering original ldif used to create database..."
203 . $LDIFFILTER < $LDIF > $LDIFFLT
204
205 echo "Comparing retrieved entries from master and slave..."
206 $CMP $SEARCHFLT $LDIFFLT > $CMPOUT
207
208 if test $? != 0 ; then
209         echo "test failed - master and slave databases differ"
210         exit 1
211 fi
212
213 echo ">>>>> Test succeeded"
214
215
216 exit 0