dd176cf6cb8abda6a45fd70581f5a798ad21f10b
[metze/samba/wip.git] / testprogs / blackbox / dbcheck-oldrelease.sh
1 #!/bin/sh
2
3 if [ $# -lt 1 ]; then
4 cat <<EOF
5 Usage: dbcheck.sh PREFIX RELEASE
6 EOF
7 exit 1;
8 fi
9
10 PREFIX_ABS="$1"
11 RELEASE="$2"
12 shift 2
13
14 . `dirname $0`/subunit.sh
15
16 release_dir=`dirname $0`/../../source4/selftest/provisions/$RELEASE
17
18 ldbmodify="ldbmodify"
19 if [ -x "$BINDIR/ldbmodify" ]; then
20     ldbmodify="$BINDIR/ldbmodify"
21 fi
22
23 ldbdel="ldbdel"
24 if [ -x "$BINDIR/ldbdel" ]; then
25     ldbdel="$BINDIR/ldbdel"
26 fi
27
28 ldbsearch="ldbsearch"
29 if [ -x "$BINDIR/ldbsearch" ]; then
30     ldbsearch="$BINDIR/ldbsearch"
31 fi
32
33 undump() {
34        if test -x $BINDIR/tdbrestore;
35        then
36         `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE $BINDIR/tdbrestore
37        else
38         `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE
39        fi
40 }
41
42 add_userparameters0() {
43        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
44            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
45 dn: cn=localdc,cn=domain controllers,dc=release-4-1-0rc3,dc=samba,dc=corp
46 changetype: modify
47 replace: userParameters
48 userParameters:: IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
49  AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAUAAQABoACAAB
50  AEMAdAB4AEMAZgBnAFAAcgBlAHMAZQBuAHQANTUxZTBiYjAYAAgAAQBDAHQAeABDAGYAZw
51  BGAGwAYQBnAHMAMQAwMGUwMDAxMBYACAABAEMAdAB4AEMAYQBsAGwAYgBhAGMAawAwMDAw
52  MDAwMBIACAABAEMAdAB4AFMAaABhAGQAbwB3ADAxMDAwMDAwKAAIAAEAQwB0AHgATQBhAH
53  gAQwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwLgAIAAEAQwB0AHgATQBh
54  AHgARABpAHMAYwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwHAAIAAEAQw
55  B0AHgATQBhAHgASQBkAGwAZQBUAGkAbQBlADAwMDAwMDAwIgAIAAEAQwB0AHgASwBlAHkA
56  YgBvAGEAcgBkAEwAYQB5AG8AdQB0ADAwMDAwMDAwKgACAAEAQwB0AHgATQBpAG4ARQBuAG
57  MAcgB5AHAAdABpAG8AbgBMAGUAdgBlAGwAMDAgAAIAAQBDAHQAeABXAG8AcgBrAEQAaQBy
58  AGUAYwB0AG8AcgB5ADAwIAACAAEAQwB0AHgATgBXAEwAbwBnAG8AbgBTAGUAcgB2AGUAcg
59  AwMBgAJAABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByADVjNWM3MzYxNzQ3NTcyNmU2NTVj
60  NzAyZTYyNjk2NDZmNmUwMCIABgABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByAEQAcgBpAH
61  YAZQA1MDNhMDAgADoAAQBDAHQAeABXAEYAUAByAG8AZgBpAGwAZQBQAGEAdABoADVjNWM3
62  MzYxNzQ3NTcyNmU2NTVjNzA3MjZmNjY2OTZjNjU3NDczNjU1YzcwMmU2MjY5NjQ2ZjZlMD
63  AiAAIAAQBDAHQAeABJAG4AaQB0AGkAYQBsAFAAcgBvAGcAcgBhAG0AMDAiAAIAAQBDAHQA
64  eABDAGEAbABsAGIAYQBjAGsATgB1AG0AYgBlAHIAMDA=
65 -
66 EOF
67        fi
68 }
69 add_userparameters1() {
70        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
71            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
72 dn: cn=administrator,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
73 changetype: modify
74 replace: userParameters
75 userParameters: IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
76  AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAUAAQABoACAAB
77  AEMAdAB4AEMAZgBnAFAAcgBlAHMAZQBuAHQANTUxZTBiYjAYAAgAAQBDAHQAeABDAGYAZw
78  BGAGwAYQBnAHMAMQAwMGUwMDAxMBYACAABAEMAdAB4AEMAYQBsAGwAYgBhAGMAawAwMDAw
79  MDAwMBIACAABAEMAdAB4AFMAaABhAGQAbwB3ADAxMDAwMDAwKAAIAAEAQwB0AHgATQBhAH
80  gAQwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwLgAIAAEAQwB0AHgATQBh
81  AHgARABpAHMAYwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwHAAIAAEAQw
82  B0AHgATQBhAHgASQBkAGwAZQBUAGkAbQBlADAwMDAwMDAwIgAIAAEAQwB0AHgASwBlAHkA
83  YgBvAGEAcgBkAEwAYQB5AG8AdQB0ADAwMDAwMDAwKgACAAEAQwB0AHgATQBpAG4ARQBuAG
84  MAcgB5AHAAdABpAG8AbgBMAGUAdgBlAGwAMDAgAAIAAQBDAHQAeABXAG8AcgBrAEQAaQBy
85  AGUAYwB0AG8AcgB5ADAwIAACAAEAQwB0AHgATgBXAEwAbwBnAG8AbgBTAGUAcgB2AGUAcg
86  AwMBgAJAABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByADVjNWM3MzYxNzQ3NTcyNmU2NTVj
87  NzAyZTYyNjk2NDZmNmUwMCIABgABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByAEQAcgBpAH
88  YAZQA1MDNhMDAgADoAAQBDAHQAeABXAEYAUAByAG8AZgBpAGwAZQBQAGEAdABoADVjNWM3
89  MzYxNzQ3NTcyNmU2NTVjNzA3MjZmNjY2OTZjNjU3NDczNjU1YzcwMmU2MjY5NjQ2ZjZlMD
90  AiAAIAAQBDAHQAeABJAG4AaQB0AGkAYQBsAFAAcgBvAGcAcgBhAG0AMDAiAAIAAQBDAHQA
91  eABDAGEAbABsAGIAYQBjAGsATgB1AG0AYgBlAHIAMDA=
92 -
93 EOF
94        fi
95 }
96 add_userparameters2() {
97        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
98            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
99 dn: cn=krbtgt,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
100 changetype: modify
101 replace: userParameters
102 userParameters:: Q3R4Q2ZnUHJlc2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
103  CAgUAsaCAFDdHhDZmdQcmVzZW5045S15pSx5oiw44GiIAIBQ3R4V0ZQcm9maWxlUGF0aOOAsBgCAU
104  N0eFdGSG9tZURpcuOAsCICAUN0eFdGSG9tZURpckRyaXZl44CwEggBQ3R4U2hhZG9344Sw44Cw44C
105  w44CwLggBQ3R4TWF4RGlzY29ubmVjdGlvblRpbWXjgaXjjLnjkLDjgLAoCAFDdHhNYXhDb25uZWN0
106  aW9uVGltZeOAtOOct+aIseOAsBwIAUN0eE1heElkbGVUaW1l44Gj45yy46Sw44CwIAIBQ3R4V29ya
107  0RpcmVjdG9yeeOAsBgIAUN0eENmZ0ZsYWdzMeOAsOOBpuOYsuOAuCICAUN0eEluaXRpYWxQcm9ncm
108  Ft44Cw
109 -
110 EOF
111        fi
112 }
113
114 add_userparameters3() {
115        if [ x$RELEASE = x"release-4-1-0rc3" ]; then
116            $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
117 dn: cn=guest,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
118 changetype: modify
119 replace: userParameters
120 userParameters:: QwAAAHQAAAB4AAAAQwAAAGYAAABnAAAAUAAAAHIAAABlAAAAcwAAAGUAAABuA
121  AAAdAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA
122  AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACA
123  AAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAUAAAAAsAAAAaAAAACAAAAAEAAABDAAAAdAAA
124  AHgAAABDAAAAZgAAAGcAAABQAAAAcgAAAGUAAABzAAAAZQAAAG4AAAB0AAAANQA1ADEAZQAwAGIAY
125  gAwACAAAAACAAAAAQAAAEMAAAB0AAAAeAAAAFcAAABGAAAAUAAAAHIAAABvAAAAZgAAAGkAAABsAA
126  AAZQAAAFAAAABhAAAAdAAAAGgAAAAwADAAGAAAAAIAAAABAAAAQwAAAHQAAAB4AAAAVwAAAEYAAAB
127  IAAAAbwAAAG0AAABlAAAARAAAAGkAAAByAAAAMAAwACIAAAACAAAAAQAAAEMAAAB0AAAAeAAAAFcA
128  AABGAAAASAAAAG8AAABtAAAAZQAAAEQAAABpAAAAcgAAAEQAAAByAAAAaQAAAHYAAABlAAAAMAAwA
129  BIAAAAIAAAAAQAAAEMAAAB0AAAAeAAAAFMAAABoAAAAYQAAAGQAAABvAAAAdwAAADAAMQAwADAAMA
130  AwADAAMAAuAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABEAAAAaQAAAHMAAABjAAA
131  AbwAAAG4AAABuAAAAZQAAAGMAAAB0AAAAaQAAAG8AAABuAAAAVAAAAGkAAABtAAAAZQAAAGUAMAA5
132  ADMAMAA0ADAAMAAoAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABDAAAAbwAAAG4AA
133  ABuAAAAZQAAAGMAAAB0AAAAaQAAAG8AAABuAAAAVAAAAGkAAABtAAAAZQAAADQAMAA3ADcAMQBiAD
134  AAMAAcAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABJAAAAZAAAAGwAAABlAAAAVAA
135  AAGkAAABtAAAAZQAAAGMAMAAyADcAMAA5ADAAMAAgAAAAAgAAAAEAAABDAAAAdAAAAHgAAABXAAAA
136  bwAAAHIAAABrAAAARAAAAGkAAAByAAAAZQAAAGMAAAB0AAAAbwAAAHIAAAB5AAAAMAAwABgAAAAIA
137  AAAAQAAAEMAAAB0AAAAeAAAAEMAAABmAAAAZwAAAEYAAABsAAAAYQAAAGcAAABzAAAAMQAAADAAMA
138  BmADAAMgA2ADgAMAAiAAAAAgAAAAEAAABDAAAAdAAAAHgAAABJAAAAbgAAAGkAAAB0AAAAaQAAAGE
139  AAABsAAAAUAAAAHIAAABvAAAAZwAAAHIAAABhAAAAbQAAADAAMAA=
140 -
141 EOF
142        fi
143 }
144
145 reindex() {
146        $PYTHON $BINDIR/samba-tool dbcheck --reindex -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
147 }
148
149 do_current_version_mod() {
150     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
151         # Confirm (in combination with the ldbsearch below) that
152         # changing the attribute with current Samba fixes it, and that
153         # a fixed attriute isn't unfixed by dbcheck.
154         tmpldif=$release_dir/sudoers2-mod.ldif
155         $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $tmpldif
156     fi
157     return 0
158 }
159
160 check_expected_before_values() {
161     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
162         tmpldif=$PREFIX_ABS/$RELEASE/expected-replpropertymetadata-before-dbcheck.ldif.tmp
163         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=ops_run_anything -s one -b OU=SUDOers,DC=release-4-1-0rc3,DC=samba,DC=corp \* replpropertymetadata --sorted --show-binary > $tmpldif
164         diff $tmpldif $release_dir/expected-replpropertymetadata-before-dbcheck.ldif
165         if [ "$?" != "0" ]; then
166             return 1
167         fi
168
169         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=ops_run_anything2 -s one -b OU=SUDOers,DC=release-4-1-0rc3,DC=samba,DC=corp \* replpropertymetadata --sorted --show-binary | grep -v originating_change_time| grep -v whenChanged > $tmpldif
170
171         # Here we remove originating_change_time and whenChanged as
172         # these are time-dependent, caused by the ldbmodify above.
173
174         diff $tmpldif $release_dir/expected-replpropertymetadata-before-dbcheck2.ldif
175         if [ "$?" != "0" ]; then
176             return 1
177         fi
178
179         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=ops_run_anything3 -s one -b OU=SUDOers,DC=release-4-1-0rc3,DC=samba,DC=corp \* replpropertymetadata --sorted --show-binary > $tmpldif
180         diff $tmpldif $release_dir/expected-replpropertymetadata-before-dbcheck3.ldif
181         if [ "$?" != "0" ]; then
182             return 1
183         fi
184     fi
185     return 0
186 }
187
188 # This should 'fail', because it returns the number of modified records
189 dbcheck_objectclass() {
190     if [ x$RELEASE = x"release-4-1-6-partial-object" ]; then
191         $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --attrs=objectclass $@
192     else
193         return 1
194     fi
195 }
196
197 # This should 'fail', because it returns the number of modified records
198 dbcheck() {
199        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
200 }
201
202 check_expected_after_values() {
203     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
204         tmpldif=$PREFIX_ABS/$RELEASE/expected-replpropertymetadata-after-dbcheck.ldif.tmp
205         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=ops_run_anything -s one -b OU=SUDOers,DC=release-4-1-0rc3,DC=samba,DC=corp \* replpropertymetadata --sorted --show-binary > $tmpldif
206         diff $tmpldif $release_dir/expected-replpropertymetadata-after-dbcheck.ldif
207         if [ "$?" != "0" ]; then
208             return 1
209         fi
210         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=ops_run_anything2 -s one -b OU=SUDOers,DC=release-4-1-0rc3,DC=samba,DC=corp \* replpropertymetadata --sorted --show-binary | grep -v originating_change_time| grep -v whenChanged > $tmpldif
211         diff $tmpldif $release_dir/expected-replpropertymetadata-after-dbcheck2.ldif
212         if [ "$?" != "0" ]; then
213             return 1
214         fi
215         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=ops_run_anything3 -s one -b OU=SUDOers,DC=release-4-1-0rc3,DC=samba,DC=corp \* replpropertymetadata --sorted --show-binary > $tmpldif
216         diff $tmpldif $release_dir/expected-replpropertymetadata-after-dbcheck3.ldif
217         if [ "$?" != "0" ]; then
218             return 1
219         fi
220         # Check DomainDNS partition for replica locations
221         tmpldif=$PREFIX_ABS/$RELEASE/expected-replica-locations-after-dbcheck.ldif.tmp
222         $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=49a69498-9a85-48af-9be4-aa0b3e0054f9 -s one -b CN=Partitions,CN=Configuration,DC=release-4-1-0rc3,DC=samba,DC=corp msDS-NC-Replica-Locations > $tmpldif
223         diff $tmpldif $release_dir/expected-replica-locations-after-dbcheck.ldif
224         if [ "$?" != "0" ]; then
225             return 1
226         fi
227         # Check ForestDNS partition for replica locations
228         $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=7d2a15af-c0d4-487c-847e-e036292bcc65 -s one -b CN=Partitions,CN=Configuration,DC=release-4-1-0rc3,DC=samba,DC=corp msDS-NC-Replica-Locations > $tmpldif
229         diff $tmpldif $release_dir/expected-replica-locations-after-dbcheck2.ldif
230         if [ "$?" != "0" ]; then
231             return 1
232         fi
233     elif [ x$RELEASE = x"release-4-5-0-pre1" ]; then
234         echo  $RELEASE  checking after values
235         tmpldif=$PREFIX_ABS/$RELEASE/expected-links-after-dbcheck.ldif.tmp
236         $BINDIR/ldbsearch -H  tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --show-recycled --show-deleted  --show-deactivated-link --reveal member memberOf lastKnownParent objectCategory lastKnownParent wellKnownObjects legacyExchangeDN  sAMAccountType --sorted > $tmpldif
237         diff $tmpldif $release_dir/expected-links-after-dbcheck.ldif
238         if [ "$?" != "0" ]; then
239             return 1
240         fi
241     fi
242     return 0
243 }
244
245 check_forced_duplicate_values() {
246     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
247         ldif=$release_dir/forced-duplicate-value-for-dbcheck.ldif
248         TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb $ldif
249         if [ "$?" != "0" ]; then
250             return 1
251         fi
252     else
253         return 0
254     fi
255 }
256
257 # This should 'fail', because it returns the number of modified records
258 dbcheck_after_dup() {
259     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
260         $PYTHON $BINDIR/samba-tool dbcheck --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=administrator,cn=users,DC=release-4-1-0rc3,DC=samba,DC=corp $@
261     else
262         return 1
263     fi
264 }
265
266 check_expected_after_dup_values() {
267     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
268         tmpldif=$PREFIX_ABS/$RELEASE/expected-otherphone-after-dbcheck.ldif.tmp
269         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=administrator -s base -b cn=administrator,cn=users,DC=release-4-1-0rc3,DC=samba,DC=corp otherHomePhone --sorted --show-binary | grep -v \# | sort > $tmpldif
270         diff $tmpldif $release_dir/expected-otherphone-after-dbcheck.ldif
271         if [ "$?" != "0" ]; then
272             return 1
273         fi
274     fi
275     return 0
276 }
277
278 # But having fixed it all up, this should pass
279 dbcheck_clean() {
280        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
281 }
282
283 # This should 'fail', because it returns the number of modified records.  
284 # We don't need to run this against 4.1 releases
285 dbcheck_acl_reset() {
286     if [ x$RELEASE = x"release-4-0-0" -o x$RELEASE = x"alpha13" ]; then
287        $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
288     else 
289         return 1
290     fi
291 }
292 # But having fixed it all up, this should pass.  
293 # We don't need to run this against 4.1.0rc3
294 dbcheck_acl_reset_clean() {
295     if [ x$RELEASE != x"release-4-1-0rc3" ]; then
296        $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
297     fi
298 }
299
300 # This should 'fail', because it returns the number of modified records
301 dbcheck2() {
302     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
303        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
304     else
305         exit 1
306     fi
307 }
308 # But having fixed it all up, this should pass
309 dbcheck_clean2() {
310     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
311        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
312     fi
313 }
314
315 rm_deleted_objects() {
316     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
317         TZ=UTC $ldbdel -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb 'CN=Deleted Objects,DC=RELEASE-4-1-0RC3,DC=SAMBA,DC=CORP'
318         if [ "$?" != "0" ]; then
319             return 1
320         fi
321     else
322         return 0
323     fi
324 }
325 # This should 'fail', because it returns the number of modified records
326 dbcheck3() {
327     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
328        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
329     else
330         exit 1
331     fi
332 }
333 # But having fixed it all up, this should pass
334 dbcheck_clean3() {
335     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
336        $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
337     fi
338 }
339
340 check_expected_after_deleted_objects() {
341     if [ x$RELEASE = x"release-4-1-0rc3" ]; then
342         tmpldif=$PREFIX_ABS/$RELEASE/expected-deleted_objects-after-dbcheck.ldif.tmp
343         TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=deleted\ objects -s base -b cn=deleted\ objects,DC=release-4-1-0rc3,DC=samba,DC=corp objectClass description isDeleted isCriticalSystemObject objectGUID showInAdvancedViewOnly systemFlags --sorted --show-binary --show-deleted | grep -v \# | sort > $tmpldif
344         diff $tmpldif $release_dir/expected-deleted_objects-after-dbcheck.ldif
345         if [ "$?" != "0" ]; then
346             return 1
347         fi
348     fi
349     return 0
350 }
351
352 referenceprovision() {
353     if [ x$RELEASE == x"release-4-0-0" ]; then
354         $PYTHON $BINDIR/samba-tool domain provision --server-role="dc" --domain=SAMBA --host-name=ares --realm=${RELEASE}.samba.corp --targetdir=$PREFIX_ABS/${RELEASE}_reference --use-ntvfs --host-ip=127.0.0.1 --host-ip6=::1 --function-level=2003
355     fi
356 }
357
358 ldapcmp() {
359     if [ x$RELEASE == x"release-4-0-0" ]; then
360          $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --two --skip-missing-dn --filter=dnsRecord
361     fi
362 }
363
364 ldapcmp_sd() {
365     if [ x$RELEASE == x"release-4-0-0" ]; then
366         $PYTHON $BINDIR/samba-tool ldapcmp tdb://$PREFIX_ABS/${RELEASE}_reference/private/sam.ldb tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --two --sd --skip-missing-dn
367     fi
368 }
369
370 if [ -d $release_dir ]; then
371     testit $RELEASE undump
372     testit "reindex" reindex
373     testit "current_version_mod" do_current_version_mod
374     testit "check_expected_before_values" check_expected_before_values
375     testit_expect_failure "dbcheck_objectclass" dbcheck_objectclass
376     testit_expect_failure "dbcheck" dbcheck
377     testit "check_expected_after_values" check_expected_after_values
378     testit "check_forced_duplicate_values" check_forced_duplicate_values
379     testit_expect_failure "dbcheck_after_dup" dbcheck_after_dup
380     testit "check_expected_after_dup_values" check_expected_after_dup_values
381     testit "dbcheck_clean" dbcheck_clean
382     testit_expect_failure "dbcheck_acl_reset" dbcheck_acl_reset
383     testit "dbcheck_acl_reset_clean" dbcheck_acl_reset_clean
384     testit "add_userparameters0" add_userparameters1
385     testit "add_userparameters1" add_userparameters1
386     testit "add_userparameters2" add_userparameters2
387     testit "add_userparameters3" add_userparameters3
388     testit_expect_failure "dbcheck2" dbcheck2
389     testit "dbcheck_clean2" dbcheck_clean2
390     testit "rm_deleted_objects" rm_deleted_objects
391     testit_expect_failure "dbcheck3" dbcheck3
392     testit "dbcheck_clean3" dbcheck_clean3
393     testit "check_expected_after_deleted_objects" check_expected_after_deleted_objects
394     testit "referenceprovision" referenceprovision
395     testit "ldapcmp" ldapcmp
396     testit "ldapcmp_sd" ldapcmp_sd
397 else
398     subunit_start_test $RELEASE
399     subunit_skip_test $RELEASE <<EOF
400 no test provision
401 EOF
402
403     subunit_start_test "reindex"
404     subunit_skip_test "reindex" <<EOF
405 no test provision
406 EOF
407     subunit_start_test check_expected_before_values
408     subunit_skip_test check_expected_before_values<<EOF
409 no test provision
410 EOF
411     subunit_start_test "dbcheck"
412     subunit_skip_test "dbcheck" <<EOF
413 no test provision
414 EOF
415     subunit_start_test "dbcheck_clean"
416     subunit_skip_test "dbcheck_clean" <<EOF
417 no test provision
418 EOF
419     subunit_start_test check_expected_after_values
420     subunit_skip_test check_expected_after_values<<EOF
421 no test provision
422 EOF
423     subunit_start_test "dbcheck_acl_reset"
424     subunit_skip_test "dbcheck_acl_reset" <<EOF
425 no test provision
426 EOF
427     subunit_start_test "dbcheck_clean_acl_reset"
428     subunit_skip_test "dbcheck_clean_acl_reset" <<EOF
429 no test provision
430 EOF
431     subunit_start_test add_userparameters0
432     subunit_skip_test add_userparameters0<<EOF
433 no test provision
434 EOF
435
436     subunit_start_test add_userparameters1
437     subunit_skip_test add_userparameters1<<EOF
438 no test provision
439 EOF
440
441     subunit_start_test add_userparameters2
442     subunit_skip_test add_userparameters2<<EOF
443 no test provision
444 EOF
445
446     subunit_start_test add_userparameters3
447     subunit_skip_test add_userparameters3<<EOF
448 no test provision
449 EOF
450
451     subunit_start_test check_expected_before_values
452     subunit_skip_test check_expected_before_values<<EOF
453 no test provision
454 EOF
455
456     subunit_start_test "dbcheck2"
457     subunit_skip_test "dbcheck2" <<EOF
458 no test provision
459 EOF
460
461     subunit_start_test "referenceprovision"
462     subunit_skip_test "referenceprovision" <<EOF
463 no test provision
464 EOF
465     subunit_start_test "ldapcmp"
466     subunit_skip_test "ldapcmp" <<EOF
467 no test provision
468 EOF
469     subunit_start_test "ldapcmp_sd"
470     subunit_skip_test "ldapcmp_sd" <<EOF
471 no test provision
472 EOF
473 fi
474
475 if [ -d $PREFIX_ABS/${RELEASE} ]; then
476     rm -fr $PREFIX_ABS/${RELEASE}
477 fi
478
479 if [ -d $PREFIX_ABS/${RELEASE}_reference ]; then
480   rm -fr $PREFIX_ABS/${RELEASE}_reference
481 fi
482
483 exit $failed