From: Andrew Bartlett Date: Tue, 31 Oct 2017 20:02:01 +0000 (+1300) Subject: selftest: Add more corruption cases for runtime and dbcheck X-Git-Tag: talloc-2.1.11~366 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4815efc0e3f89079e7c9b868b7514ea7c49a807c;p=thirdparty%2Fsamba.git selftest: Add more corruption cases for runtime and dbcheck These tests now confirm we can handle these issues at runtime as well as at dbcheck Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher --- diff --git a/selftest/knownfail.d/delete_member_of_deleted_group b/selftest/knownfail.d/delete_member_of_deleted_group new file mode 100644 index 00000000000..f399d33ccc1 --- /dev/null +++ b/selftest/knownfail.d/delete_member_of_deleted_group @@ -0,0 +1 @@ +^samba4\.blackbox\.runtime-links\.release-4-5-0-pre1\.delete_member_of_deleted_group \ No newline at end of file diff --git a/selftest/knownfail.d/runtime-links b/selftest/knownfail.d/runtime-links new file mode 100644 index 00000000000..70de8be3d55 --- /dev/null +++ b/selftest/knownfail.d/runtime-links @@ -0,0 +1,2 @@ +^samba4\.blackbox\.runtime-links\.release-4-5-0-pre1\.delete_backlink_memberof_deleted_group +^samba4\.blackbox\.runtime-links\.release-4-5-0-pre1\.delete_dangling_backlink_memberof_group \ No newline at end of file diff --git a/selftest/tests.py b/selftest/tests.py index 181313ebc95..209800c8ba4 100644 --- a/selftest/tests.py +++ b/selftest/tests.py @@ -125,6 +125,11 @@ plantestsuite( ["PYTHON=%s" % python, os.path.join(bbdir, "dbcheck-links.sh"), '$PREFIX_ABS/provision', 'release-4-5-0-pre1', configuration]) +plantestsuite( + "samba4.blackbox.runtime-links.release-4-5-0-pre1", "none", + ["PYTHON=%s" % python, + os.path.join(bbdir, "runtime-links.sh"), + '$PREFIX_ABS/provision', 'release-4-5-0-pre1', configuration]) planpythontestsuite("none", "samba.tests.upgradeprovision") planpythontestsuite("none", "samba.tests.xattr", py3_compatible=True) planpythontestsuite("none", "samba.tests.ntacls") diff --git a/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output.txt b/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output.txt index 6f0d2fc2bd6..5a083f7da79 100644 --- a/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output.txt +++ b/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output.txt @@ -7,6 +7,9 @@ ERROR: target DN is deleted for member in object CN=Allowed RODC Password Replic Target GUID points at deleted DN 'CN=fred\\0ADEL:2301a64c-5b42-4ca8-851e-12d4a711cfb4,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp' Remove DN link? [YES] Removed deleted DN on attribute member +ERROR: orphaned backlink attribute 'memberOf' in CN=dangling-back,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp for link member in CN=Allowed RODC Password Replication Group,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +Remove orphaned backlink memberOf [YES] +Fixed orphaned backlink memberOf ERROR: linked attribute 'member' to ';;;;;;;;;CN=User UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=dsg\0ADEL:6d66d0ef-cad7-4e5d-b1b6-4a233a21c269,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member @@ -19,7 +22,7 @@ Fixed undead forward link memberOf ERROR: linked attribute 'member' to ';;;;;;;;;CN=User UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=udg\0ADEL:7cff5537-51b1-4d26-a295-0225dbea8525,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member -ERROR: linked attribute 'member' to ';;;;;;;;;CN=User1 UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=udg\0ADEL:7cff5537-51b1-4d26-a295-0225dbea8525,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp +ERROR: linked attribute 'member' to ';;;;;;;;;CN=User1 UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=udg\0ADEL:7cff5537-51b1-4d26-a295-0225dbea8525,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member ERROR: linked attribute 'member' to ';;;;;;;;;CN=User UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=usg\0ADEL:d012e8f5-a4bd-40ea-a2a1-68ff2508847d,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp @@ -28,10 +31,6 @@ Fixed undead forward link member ERROR: linked attribute 'member' to ';;;;;;;;;CN=User1 UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=usg\0ADEL:d012e8f5-a4bd-40ea-a2a1-68ff2508847d,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member -ERROR: target DN is deleted for memberOf in object CN=deleted-target-back,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp - ;;CN=gdg\0ADEL:e0f581e7-14ee-4fc2-839c-8f46f581c72a,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp -Target GUID points at deleted DN 'CN=gdg\\0ADEL:e0f581e7-14ee-4fc2-839c-8f46f581c72a,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp' -Remove DN link? [YES] -Removed deleted DN on attribute memberOf ERROR: linked attribute 'member' to ';;;;;;;;;CN=User UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=ddg\0ADEL:fb8c2fe3-5448-43de-99f9-e1d3b9357cfc,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member @@ -48,9 +47,10 @@ Fixed undead forward link member ERROR: linked attribute 'member' to ';;;;;;;;;CN=User1 UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=gsg\0ADEL:91aa85cc-fc19-4b8c-9fc7-aaba425439c7,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member -ERROR: orphaned backlink attribute 'memberOf' in CN=dangling-back,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp for link member in CN=Allowed RODC Password Replication Group,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp -Remove orphaned backlink memberOf [YES] -Fixed orphaned backlink memberOf +ERROR: target DN is deleted for memberOf in object CN=deleted-target-back,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp - ;;CN=gdg\0ADEL:e0f581e7-14ee-4fc2-839c-8f46f581c72a,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp +Target GUID points at deleted DN 'CN=gdg\\0ADEL:e0f581e7-14ee-4fc2-839c-8f46f581c72a,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp' +Remove DN link? [YES] +Removed deleted DN on attribute memberOf ERROR: linked attribute 'member' to ';;;;;;;;;CN=User UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp' is present on deleted object CN=gdg\0ADEL:e0f581e7-14ee-4fc2-839c-8f46f581c72a,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp Remove linked attribute member [YES] Fixed undead forward link member diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-source-backlink.ldif b/source4/selftest/provisions/release-4-5-0-pre1/revive-backlink-on-deleted-group.ldif similarity index 62% rename from source4/selftest/provisions/release-4-5-0-pre1/add-deleted-source-backlink.ldif rename to source4/selftest/provisions/release-4-5-0-pre1/revive-backlink-on-deleted-group.ldif index 40e2f8cddff..8bfcbb7b4a4 100644 --- a/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-source-backlink.ldif +++ b/source4/selftest/provisions/release-4-5-0-pre1/revive-backlink-on-deleted-group.ldif @@ -1,6 +1,5 @@ -dn: CN=User1 UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +dn: CN=User UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp changetype: modify add: memberOf memberOf: ;;CN=udg\0ADEL:7cff5537-51b1-4d26-a295-0225dbea8525,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp - -# in group udg, the link is deleted, so this is sort of a dangling backlink too \ No newline at end of file diff --git a/source4/selftest/provisions/release-4-5-0-pre1/revive-links-on-deleted-group.ldif b/source4/selftest/provisions/release-4-5-0-pre1/revive-links-on-deleted-group.ldif new file mode 100644 index 00000000000..a4301a068f4 --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/revive-links-on-deleted-group.ldif @@ -0,0 +1,20 @@ +dn: CN=User1 UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: modify +add: memberOf +memberOf: ;;CN=udg\0ADEL:7cff5537-51b1-4d26-a295-0225dbea8525,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp +- + +dn: CN=udg\0ADEL:7cff5537-51b1-4d26-a295-0225dbea8525,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: modify +delete: member +member: ;;;;;;;;;CN=User1 + UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +add: member +member: ;;;;;;;;;CN=User1 + UT. Tester,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp \ No newline at end of file diff --git a/testprogs/blackbox/common-links.sh b/testprogs/blackbox/common-links.sh index e36cb0b8f66..ee7310b5108 100644 --- a/testprogs/blackbox/common-links.sh +++ b/testprogs/blackbox/common-links.sh @@ -96,8 +96,16 @@ add_deleted_target_backlink() { fi } -add_deleted_source_backlink() { - ldif=$release_dir/add-deleted-source-backlink.ldif +revive_links_on_deleted_group() { + ldif=$release_dir/revive-links-on-deleted-group.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-5-0-PRE1,DC%3DSAMBA,DC%3DCORP.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi +} + +revive_backlink_on_deleted_group() { + ldif=$release_dir/revive-backlink-on-deleted-group.ldif TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-5-0-PRE1,DC%3DSAMBA,DC%3DCORP.ldb $ldif if [ "$?" != "0" ]; then return 1 diff --git a/testprogs/blackbox/dbcheck-links.sh b/testprogs/blackbox/dbcheck-links.sh index 074b60164dd..0aeada037fc 100755 --- a/testprogs/blackbox/dbcheck-links.sh +++ b/testprogs/blackbox/dbcheck-links.sh @@ -185,7 +185,8 @@ if [ -d $release_dir ]; then testit "add_dangling_link" add_dangling_link testit "add_dangling_backlink" add_dangling_backlink testit "add_deleted_dangling_backlink" add_deleted_dangling_backlink - testit "add_deleted_source_backlink" add_deleted_source_backlink + testit "revive_links_on_deleted_group" revive_links_on_deleted_group + testit "revive_backlink_on_deleted_group" revive_backlink_on_deleted_group testit "add_deleted_target_link" add_deleted_target_link testit "add_deleted_target_backlink" add_deleted_target_backlink testit "dbcheck_dangling" dbcheck_dangling diff --git a/testprogs/blackbox/runtime-links.sh b/testprogs/blackbox/runtime-links.sh new file mode 100755 index 00000000000..344b822f07e --- /dev/null +++ b/testprogs/blackbox/runtime-links.sh @@ -0,0 +1,74 @@ +#!/bin/sh + +if [ $# -lt 1 ]; then +cat <