5 Usage: dbcheck.sh PREFIX RELEASE
14 . `dirname $0`/subunit.sh
16 release_dir=`dirname $0`/../../source4/selftest/provisions/$RELEASE
19 if [ -x "$BINDIR/ldbmodify" ]; then
20 ldbmodify="$BINDIR/ldbmodify"
24 if [ -x "$BINDIR/ldbsearch" ]; then
25 ldbsearch="$BINDIR/ldbsearch"
29 if test -x $BINDIR/tdbrestore;
31 `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE $BINDIR/tdbrestore
33 `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE
37 add_userparameters0() {
38 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
39 $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
40 dn: cn=localdc,cn=domain controllers,dc=release-4-1-0rc3,dc=samba,dc=corp
42 replace: userParameters
43 userParameters:: IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
44 AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAUAAQABoACAAB
45 AEMAdAB4AEMAZgBnAFAAcgBlAHMAZQBuAHQANTUxZTBiYjAYAAgAAQBDAHQAeABDAGYAZw
46 BGAGwAYQBnAHMAMQAwMGUwMDAxMBYACAABAEMAdAB4AEMAYQBsAGwAYgBhAGMAawAwMDAw
47 MDAwMBIACAABAEMAdAB4AFMAaABhAGQAbwB3ADAxMDAwMDAwKAAIAAEAQwB0AHgATQBhAH
48 gAQwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwLgAIAAEAQwB0AHgATQBh
49 AHgARABpAHMAYwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwHAAIAAEAQw
50 B0AHgATQBhAHgASQBkAGwAZQBUAGkAbQBlADAwMDAwMDAwIgAIAAEAQwB0AHgASwBlAHkA
51 YgBvAGEAcgBkAEwAYQB5AG8AdQB0ADAwMDAwMDAwKgACAAEAQwB0AHgATQBpAG4ARQBuAG
52 MAcgB5AHAAdABpAG8AbgBMAGUAdgBlAGwAMDAgAAIAAQBDAHQAeABXAG8AcgBrAEQAaQBy
53 AGUAYwB0AG8AcgB5ADAwIAACAAEAQwB0AHgATgBXAEwAbwBnAG8AbgBTAGUAcgB2AGUAcg
54 AwMBgAJAABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByADVjNWM3MzYxNzQ3NTcyNmU2NTVj
55 NzAyZTYyNjk2NDZmNmUwMCIABgABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByAEQAcgBpAH
56 YAZQA1MDNhMDAgADoAAQBDAHQAeABXAEYAUAByAG8AZgBpAGwAZQBQAGEAdABoADVjNWM3
57 MzYxNzQ3NTcyNmU2NTVjNzA3MjZmNjY2OTZjNjU3NDczNjU1YzcwMmU2MjY5NjQ2ZjZlMD
58 AiAAIAAQBDAHQAeABJAG4AaQB0AGkAYQBsAFAAcgBvAGcAcgBhAG0AMDAiAAIAAQBDAHQA
59 eABDAGEAbABsAGIAYQBjAGsATgB1AG0AYgBlAHIAMDA=
64 add_userparameters1() {
65 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
66 $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
67 dn: cn=administrator,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
69 replace: userParameters
70 userParameters: IAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
71 AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAUAAQABoACAAB
72 AEMAdAB4AEMAZgBnAFAAcgBlAHMAZQBuAHQANTUxZTBiYjAYAAgAAQBDAHQAeABDAGYAZw
73 BGAGwAYQBnAHMAMQAwMGUwMDAxMBYACAABAEMAdAB4AEMAYQBsAGwAYgBhAGMAawAwMDAw
74 MDAwMBIACAABAEMAdAB4AFMAaABhAGQAbwB3ADAxMDAwMDAwKAAIAAEAQwB0AHgATQBhAH
75 gAQwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwLgAIAAEAQwB0AHgATQBh
76 AHgARABpAHMAYwBvAG4AbgBlAGMAdABpAG8AbgBUAGkAbQBlADAwMDAwMDAwHAAIAAEAQw
77 B0AHgATQBhAHgASQBkAGwAZQBUAGkAbQBlADAwMDAwMDAwIgAIAAEAQwB0AHgASwBlAHkA
78 YgBvAGEAcgBkAEwAYQB5AG8AdQB0ADAwMDAwMDAwKgACAAEAQwB0AHgATQBpAG4ARQBuAG
79 MAcgB5AHAAdABpAG8AbgBMAGUAdgBlAGwAMDAgAAIAAQBDAHQAeABXAG8AcgBrAEQAaQBy
80 AGUAYwB0AG8AcgB5ADAwIAACAAEAQwB0AHgATgBXAEwAbwBnAG8AbgBTAGUAcgB2AGUAcg
81 AwMBgAJAABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByADVjNWM3MzYxNzQ3NTcyNmU2NTVj
82 NzAyZTYyNjk2NDZmNmUwMCIABgABAEMAdAB4AFcARgBIAG8AbQBlAEQAaQByAEQAcgBpAH
83 YAZQA1MDNhMDAgADoAAQBDAHQAeABXAEYAUAByAG8AZgBpAGwAZQBQAGEAdABoADVjNWM3
84 MzYxNzQ3NTcyNmU2NTVjNzA3MjZmNjY2OTZjNjU3NDczNjU1YzcwMmU2MjY5NjQ2ZjZlMD
85 AiAAIAAQBDAHQAeABJAG4AaQB0AGkAYQBsAFAAcgBvAGcAcgBhAG0AMDAiAAIAAQBDAHQA
86 eABDAGEAbABsAGIAYQBjAGsATgB1AG0AYgBlAHIAMDA=
91 add_userparameters2() {
92 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
93 $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
94 dn: cn=krbtgt,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
96 replace: userParameters
97 userParameters:: Q3R4Q2ZnUHJlc2VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
98 CAgUAsaCAFDdHhDZmdQcmVzZW5045S15pSx5oiw44GiIAIBQ3R4V0ZQcm9maWxlUGF0aOOAsBgCAU
99 N0eFdGSG9tZURpcuOAsCICAUN0eFdGSG9tZURpckRyaXZl44CwEggBQ3R4U2hhZG9344Sw44Cw44C
100 w44CwLggBQ3R4TWF4RGlzY29ubmVjdGlvblRpbWXjgaXjjLnjkLDjgLAoCAFDdHhNYXhDb25uZWN0
101 aW9uVGltZeOAtOOct+aIseOAsBwIAUN0eE1heElkbGVUaW1l44Gj45yy46Sw44CwIAIBQ3R4V29ya
102 0RpcmVjdG9yeeOAsBgIAUN0eENmZ0ZsYWdzMeOAsOOBpuOYsuOAuCICAUN0eEluaXRpYWxQcm9ncm
109 add_userparameters3() {
110 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
111 $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb <<EOF
112 dn: cn=guest,cn=users,dc=release-4-1-0rc3,dc=samba,dc=corp
114 replace: userParameters
115 userParameters:: QwAAAHQAAAB4AAAAQwAAAGYAAABnAAAAUAAAAHIAAABlAAAAcwAAAGUAAABuA
116 AAAdAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAA
117 AgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACA
118 AAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAUAAAAAsAAAAaAAAACAAAAAEAAABDAAAAdAAA
119 AHgAAABDAAAAZgAAAGcAAABQAAAAcgAAAGUAAABzAAAAZQAAAG4AAAB0AAAANQA1ADEAZQAwAGIAY
120 gAwACAAAAACAAAAAQAAAEMAAAB0AAAAeAAAAFcAAABGAAAAUAAAAHIAAABvAAAAZgAAAGkAAABsAA
121 AAZQAAAFAAAABhAAAAdAAAAGgAAAAwADAAGAAAAAIAAAABAAAAQwAAAHQAAAB4AAAAVwAAAEYAAAB
122 IAAAAbwAAAG0AAABlAAAARAAAAGkAAAByAAAAMAAwACIAAAACAAAAAQAAAEMAAAB0AAAAeAAAAFcA
123 AABGAAAASAAAAG8AAABtAAAAZQAAAEQAAABpAAAAcgAAAEQAAAByAAAAaQAAAHYAAABlAAAAMAAwA
124 BIAAAAIAAAAAQAAAEMAAAB0AAAAeAAAAFMAAABoAAAAYQAAAGQAAABvAAAAdwAAADAAMQAwADAAMA
125 AwADAAMAAuAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABEAAAAaQAAAHMAAABjAAA
126 AbwAAAG4AAABuAAAAZQAAAGMAAAB0AAAAaQAAAG8AAABuAAAAVAAAAGkAAABtAAAAZQAAAGUAMAA5
127 ADMAMAA0ADAAMAAoAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABDAAAAbwAAAG4AA
128 ABuAAAAZQAAAGMAAAB0AAAAaQAAAG8AAABuAAAAVAAAAGkAAABtAAAAZQAAADQAMAA3ADcAMQBiAD
129 AAMAAcAAAACAAAAAEAAABDAAAAdAAAAHgAAABNAAAAYQAAAHgAAABJAAAAZAAAAGwAAABlAAAAVAA
130 AAGkAAABtAAAAZQAAAGMAMAAyADcAMAA5ADAAMAAgAAAAAgAAAAEAAABDAAAAdAAAAHgAAABXAAAA
131 bwAAAHIAAABrAAAARAAAAGkAAAByAAAAZQAAAGMAAAB0AAAAbwAAAHIAAAB5AAAAMAAwABgAAAAIA
132 AAAAQAAAEMAAAB0AAAAeAAAAEMAAABmAAAAZwAAAEYAAABsAAAAYQAAAGcAAABzAAAAMQAAADAAMA
133 BmADAAMgA2ADgAMAAiAAAAAgAAAAEAAABDAAAAdAAAAHgAAABJAAAAbgAAAGkAAAB0AAAAaQAAAGE
134 AAABsAAAAUAAAAHIAAABvAAAAZwAAAHIAAABhAAAAbQAAADAAMAA=
141 $PYTHON $BINDIR/samba-tool dbcheck --reindex -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
144 do_current_version_mod() {
145 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
146 # Confirm (in combination with the ldbsearch below) that
147 # changing the attribute with current Samba fixes it, and that
148 # a fixed attriute isn't unfixed by dbcheck.
149 tmpldif=$release_dir/sudoers2-mod.ldif
150 $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $tmpldif
155 check_expected_before_values() {
156 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
157 tmpldif=$PREFIX_ABS/$RELEASE/expected-replpropertymetadata-before-dbcheck.ldif.tmp
158 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
159 diff $tmpldif $release_dir/expected-replpropertymetadata-before-dbcheck.ldif
160 if [ "$?" != "0" ]; then
164 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
166 # Here we remove originating_change_time and whenChanged as
167 # these are time-dependent, caused by the ldbmodify above.
169 diff $tmpldif $release_dir/expected-replpropertymetadata-before-dbcheck2.ldif
170 if [ "$?" != "0" ]; then
174 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
175 diff $tmpldif $release_dir/expected-replpropertymetadata-before-dbcheck3.ldif
176 if [ "$?" != "0" ]; then
183 # This should 'fail', because it returns the number of modified records
185 $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
188 check_expected_after_values() {
189 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
190 tmpldif=$PREFIX_ABS/$RELEASE/expected-replpropertymetadata-before-dbcheck.ldif.tmp
191 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
192 diff $tmpldif $release_dir/expected-replpropertymetadata-after-dbcheck.ldif
193 if [ "$?" != "0" ]; then
196 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
197 diff $tmpldif $release_dir/expected-replpropertymetadata-after-dbcheck2.ldif
198 if [ "$?" != "0" ]; then
201 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
202 diff $tmpldif $release_dir/expected-replpropertymetadata-after-dbcheck3.ldif
203 if [ "$?" != "0" ]; then
210 check_forced_duplicate_values() {
211 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
212 ldif=$release_dir/forced-duplicate-value-for-dbcheck.ldif
213 TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb $ldif
214 if [ "$?" != "0" ]; then
222 # This should 'fail', because it returns the number of modified records
223 dbcheck_after_dup() {
224 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
225 $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
231 check_expected_after_dup_values() {
232 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
233 tmpldif=$PREFIX_ABS/$RELEASE/expected-otherphone-after-dbcheck.ldif.tmp
234 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
235 diff $tmpldif $release_dir/expected-otherphone-after-dbcheck.ldif
236 if [ "$?" != "0" ]; then
243 # But having fixed it all up, this should pass
245 $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
248 # This should 'fail', because it returns the number of modified records.
249 # We don't need to run this against 4.1 releases
250 dbcheck_acl_reset() {
251 if [ x$RELEASE = x"release-4-0-0" -o x$RELEASE = x"alpha13" ]; then
252 $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
257 # But having fixed it all up, this should pass.
258 # We don't need to run this against 4.1.0rc3
259 dbcheck_acl_reset_clean() {
260 if [ x$RELEASE != x"release-4-1-0rc3" ]; then
261 $PYTHON $BINDIR/samba-tool dbcheck --reset-well-known-acls --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
265 # This should 'fail', because it returns the number of modified records
267 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
268 $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
273 # But having fixed it all up, this should pass
275 if [ x$RELEASE = x"release-4-1-0rc3" ]; then
276 $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
280 referenceprovision() {
281 if [ x$RELEASE == x"release-4-0-0" ]; then
282 $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
287 if [ x$RELEASE == x"release-4-0-0" ]; then
288 $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
293 if [ x$RELEASE == x"release-4-0-0" ]; then
294 $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
298 if [ -d $release_dir ]; then
299 testit $RELEASE undump
300 testit "reindex" reindex
301 testit "current_version_mod" do_current_version_mod
302 testit "check_expected_before_values" check_expected_before_values
303 testit_expect_failure "dbcheck" dbcheck
304 testit "check_expected_after_values" check_expected_after_values
305 testit "check_forced_duplicate_values" check_forced_duplicate_values
306 testit_expect_failure "dbcheck_after_dup" dbcheck_after_dup
307 testit "check_expected_after_dup_values" check_expected_after_dup_values
308 testit "dbcheck_clean" dbcheck_clean
309 testit_expect_failure "dbcheck_acl_reset" dbcheck_acl_reset
310 testit "dbcheck_acl_reset_clean" dbcheck_acl_reset_clean
311 testit "add_userparameters0" add_userparameters1
312 testit "add_userparameters1" add_userparameters1
313 testit "add_userparameters2" add_userparameters2
314 testit "add_userparameters3" add_userparameters3
315 testit_expect_failure "dbcheck2" dbcheck2
316 testit "dbcheck_clean2" dbcheck_clean2
317 testit "referenceprovision" referenceprovision
318 testit "ldapcmp" ldapcmp
319 testit "ldapcmp_sd" ldapcmp_sd
321 subunit_start_test $RELEASE
322 subunit_skip_test $RELEASE <<EOF
326 subunit_start_test "reindex"
327 subunit_skip_test "reindex" <<EOF
330 subunit_start_test check_expected_before_values
331 subunit_skip_test check_expected_before_values<<EOF
334 subunit_start_test "dbcheck"
335 subunit_skip_test "dbcheck" <<EOF
338 subunit_start_test "dbcheck_clean"
339 subunit_skip_test "dbcheck_clean" <<EOF
342 subunit_start_test check_expected_after_values
343 subunit_skip_test check_expected_after_values<<EOF
346 subunit_start_test "dbcheck_acl_reset"
347 subunit_skip_test "dbcheck_acl_reset" <<EOF
350 subunit_start_test "dbcheck_clean_acl_reset"
351 subunit_skip_test "dbcheck_clean_acl_reset" <<EOF
354 subunit_start_test add_userparameters0
355 subunit_skip_test add_userparameters0<<EOF
359 subunit_start_test add_userparameters1
360 subunit_skip_test add_userparameters1<<EOF
364 subunit_start_test add_userparameters2
365 subunit_skip_test add_userparameters2<<EOF
369 subunit_start_test add_userparameters3
370 subunit_skip_test add_userparameters3<<EOF
374 subunit_start_test check_expected_before_values
375 subunit_skip_test check_expected_before_values<<EOF
379 subunit_start_test "dbcheck2"
380 subunit_skip_test "dbcheck2" <<EOF
384 subunit_start_test "referenceprovision"
385 subunit_skip_test "referenceprovision" <<EOF
388 subunit_start_test "ldapcmp"
389 subunit_skip_test "ldapcmp" <<EOF
392 subunit_start_test "ldapcmp_sd"
393 subunit_skip_test "ldapcmp_sd" <<EOF
398 if [ -d $PREFIX_ABS/${RELEASE} ]; then
399 rm -fr $PREFIX_ABS/${RELEASE}
402 if [ -d $PREFIX_ABS/${RELEASE}_reference ]; then
403 rm -fr $PREFIX_ABS/${RELEASE}_reference