test062-config-delete revision 1.1.1.2 1 1.1 christos #! /bin/sh
2 1.1 christos # $OpenLDAP$
3 1.1 christos ## This work is part of OpenLDAP Software <http://www.openldap.org/>.
4 1.1 christos ##
5 1.1.1.2 christos ## Copyright 1998-2024 The OpenLDAP Foundation.
6 1.1 christos ## All rights reserved.
7 1.1 christos ##
8 1.1 christos ## Redistribution and use in source and binary forms, with or without
9 1.1 christos ## modification, are permitted only as authorized by the OpenLDAP
10 1.1 christos ## Public License.
11 1.1 christos ##
12 1.1 christos ## A copy of this license is available in the file LICENSE in the
13 1.1 christos ## top-level directory of the distribution or, alternatively, at
14 1.1 christos ## <http://www.OpenLDAP.org/license.html>.
15 1.1 christos
16 1.1 christos echo "running defines.sh"
17 1.1 christos . $SRCDIR/scripts/defines.sh
18 1.1 christos
19 1.1 christos if test $SYNCPROV = syncprovno; then
20 1.1 christos echo "Syncrepl provider overlay not available, test skipped"
21 1.1 christos exit 0
22 1.1 christos fi
23 1.1 christos
24 1.1 christos CONFDIR=$TESTDIR/slapd.d
25 1.1 christos DBDIR=$TESTDIR/db
26 1.1 christos RCOUT=$TESTDIR/rcout
27 1.1 christos
28 1.1 christos mkdir -p $TESTDIR $CONFDIR $DBDIR
29 1.1 christos
30 1.1 christos $SLAPPASSWD -g -n >$CONFIGPWF
31 1.1 christos
32 1.1 christos #
33 1.1 christos # Test dynamic add/delete of syncprov overlay:
34 1.1 christos # - Create minimal back-conf setup
35 1.1 christos # - Add syncprov overlay to the cn=config database
36 1.1 christos # - Remove the overlay again
37 1.1 christos #
38 1.1 christos
39 1.1 christos echo "Starting slapd on TCP/IP port $PORT1... $PWD"
40 1.1 christos . $CONFFILTER $BACKEND < $DYNAMICCONF > $CONFLDIF
41 1.1 christos $SLAPADD -F $CONFDIR -n 0 -l $CONFLDIF
42 1.1.1.2 christos RC=$?
43 1.1.1.2 christos if test $RC != 0 ; then
44 1.1.1.2 christos echo "slapadd failed ($RC)!"
45 1.1.1.2 christos exit $RC
46 1.1.1.2 christos fi
47 1.1.1.2 christos
48 1.1 christos cd $TESTDIR
49 1.1 christos $SLAPD -F ./slapd.d -h $URI1 -d $LVL > $LOG1 2>&1 &
50 1.1 christos PID=$!
51 1.1 christos if test $WAIT != 0 ; then
52 1.1 christos echo PID $PID
53 1.1 christos read foo
54 1.1 christos fi
55 1.1 christos KILLPIDS="$PID"
56 1.1 christos cd $TESTWD
57 1.1 christos
58 1.1 christos sleep 1
59 1.1 christos
60 1.1 christos echo "Using ldapsearch to check that slapd is running..."
61 1.1 christos for i in 0 1 2 3 4 5; do
62 1.1 christos $LDAPSEARCH -s base -b "" -H $URI1 \
63 1.1 christos 'objectclass=*' > /dev/null 2>&1
64 1.1 christos RC=$?
65 1.1 christos if test $RC = 0 ; then
66 1.1 christos break
67 1.1 christos fi
68 1.1 christos echo "Waiting 5 seconds for slapd to start..."
69 1.1 christos sleep 5
70 1.1 christos done
71 1.1 christos
72 1.1 christos if test $RC != 0 ; then
73 1.1 christos echo "ldapsearch failed ($RC)!"
74 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
75 1.1 christos exit $RC
76 1.1 christos fi
77 1.1 christos
78 1.1 christos echo "Inserting syncprov overlay ..."
79 1.1 christos if [ "$SYNCPROV" = syncprovmod ]; then
80 1.1 christos $LDAPADD -D cn=config -H $URI1 -y $CONFIGPWF <<EOF > $TESTOUT 2>&1
81 1.1 christos dn: cn=module,cn=config
82 1.1 christos objectClass: olcModuleList
83 1.1 christos cn: module
84 1.1 christos olcModulePath: $TESTWD/../servers/slapd/overlays
85 1.1 christos olcModuleLoad: syncprov.la
86 1.1 christos EOF
87 1.1 christos RC=$?
88 1.1 christos if test $RC != 0 ; then
89 1.1 christos echo "ldapadd failed for moduleLoad ($RC)!"
90 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
91 1.1 christos exit $RC
92 1.1 christos fi
93 1.1 christos fi
94 1.1 christos read CONFIGPW < $CONFIGPWF
95 1.1 christos $LDAPMODIFY -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >> $TESTOUT 2>&1
96 1.1 christos dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config
97 1.1 christos changetype: add
98 1.1 christos objectClass: olcOverlayConfig
99 1.1 christos objectClass: olcSyncProvConfig
100 1.1 christos olcOverlay: syncprov
101 1.1 christos EOF
102 1.1 christos
103 1.1 christos RC=$?
104 1.1 christos if test $RC != 0 ; then
105 1.1 christos echo "ldapmodify failed for syncrepl config ($RC)!"
106 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
107 1.1 christos exit $RC
108 1.1 christos fi
109 1.1 christos
110 1.1 christos echo "Starting a refreshAndPersist search in background"
111 1.1 christos rm -f $RCOUT
112 1.1 christos (
113 1.1 christos $LDAPSEARCH -D cn=config -H $URI1 -y $CONFIGPWF -bcn=config -E \!sync=rp >/dev/null 2>&1
114 1.1 christos RC=$?
115 1.1 christos echo $RC > $RCOUT
116 1.1 christos exit $RC
117 1.1 christos ) &
118 1.1 christos
119 1.1 christos SEARCHPID=$!
120 1.1 christos
121 1.1 christos sleep 2
122 1.1 christos
123 1.1 christos echo "Removing syncprov overlay again ..."
124 1.1 christos $LDAPDELETE -D cn=config -H $URI1 -y $CONFIGPWF <<EOF >> $TESTOUT 2>&1
125 1.1 christos olcOverlay={0}syncprov,olcDatabase={0}config,cn=config
126 1.1 christos EOF
127 1.1 christos RC=$?
128 1.1 christos
129 1.1 christos if test $RC != 0 ; then
130 1.1 christos echo "ldapmodify failed for syncrepl config ($RC)!"
131 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
132 1.1 christos exit $RC
133 1.1 christos fi
134 1.1 christos
135 1.1 christos for i in 0 1 2 3 4; do
136 1.1 christos if test -f "$RCOUT" ; then
137 1.1 christos break
138 1.1 christos else
139 1.1 christos echo "Waiting 2 seconds for RefreshAndPersist search to end ..."
140 1.1 christos sleep 2
141 1.1 christos fi
142 1.1 christos done
143 1.1 christos
144 1.1 christos if test -f "$RCOUT" ; then
145 1.1 christos wait $SEARCHPID
146 1.1 christos SEARCHRC=`cat $RCOUT`
147 1.1 christos echo "Checking return code of backgrounded RefreshAndPersist search ..."
148 1.1 christos if test 52 != "$SEARCHRC" ; then
149 1.1 christos echo "Error: Backgrounded ldapsearch returned the wrong error code: $SEARCHRC"
150 1.1 christos RC=1
151 1.1 christos else
152 1.1 christos echo "Exit code correct."
153 1.1 christos fi
154 1.1 christos else
155 1.1 christos echo "Backgrounded ldapsearch did not exit after overlay removal."
156 1.1 christos kill -HUP $SEARCHPID
157 1.1 christos RC=2
158 1.1 christos fi
159 1.1 christos if test $RC != 0 ; then
160 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
161 1.1 christos exit $RC
162 1.1 christos fi
163 1.1 christos
164 1.1 christos echo "Running a refreshOnly search, should fail..."
165 1.1 christos $LDAPSEARCH -D cn=config -H $URI1 -y $CONFIGPWF -bcn=config -E \!sync=ro > /dev/null 2>&1
166 1.1 christos
167 1.1 christos RC=$?
168 1.1 christos if test $RC != 12 ; then
169 1.1 christos echo "ldapsearch should have failed with Critical extension is unavailable (12)!"
170 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
171 1.1 christos exit $RC
172 1.1 christos else
173 1.1 christos echo "Failed with \"Critical extension is unavailable (12)\". Ok."
174 1.1 christos fi
175 1.1 christos
176 1.1 christos
177 1.1 christos test $KILLSERVERS != no && kill -HUP $KILLPIDS
178 1.1 christos
179 1.1 christos echo ">>>>> Test succeeded"
180 1.1 christos
181 1.1 christos test $KILLSERVERS != no && wait
182 1.1 christos
183 1.1 christos exit 0
184