summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2017-02-22 17:43:21 +1300
committerAndrew Bartlett <abartlet@samba.org>2017-02-23 23:58:21 +0100
commit6f2deb01fa1c6e81f101df49990dadcbc9c31226 (patch)
treeee7b44a6a8f59f28bfd5e624170f47cc332e5fb2
parent86f10eaecd4ed9fd9db83d711cbf1f823528d6e5 (diff)
downloadsamba-6f2deb01fa1c6e81f101df49990dadcbc9c31226.tar.gz
tests/dbcheck: Add a test for two live objects, with a dangling forward link
Handling backlinks appears to be rather non-deterministic, so the forward link hangs off of the RODC replication group (which has no other valid forward links). In other situations, it either won't delete the memberOf, or the expected output order will vary. Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> BUG: https://bugzilla.samba.org/show_bug.cgi?id=12600
-rw-r--r--source4/selftest/provisions/release-4-5-0-pre1/add-dangling-forwardlink-user.ldif3
-rw-r--r--source4/selftest/provisions/release-4-5-0-pre1/add-initially-normal-link.ldif4
-rw-r--r--source4/selftest/provisions/release-4-5-0-pre1/delete-only-backlink.ldif4
-rw-r--r--source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output.txt7
-rwxr-xr-xtestprogs/blackbox/dbcheck-links.sh22
5 files changed, 38 insertions, 2 deletions
diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-dangling-forwardlink-user.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-dangling-forwardlink-user.ldif
new file mode 100644
index 00000000000..db4a68ccb59
--- /dev/null
+++ b/source4/selftest/provisions/release-4-5-0-pre1/add-dangling-forwardlink-user.ldif
@@ -0,0 +1,3 @@
+dn: CN=dangling-forward,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp
+objectclass: user
+samaccountname: dangling-forward
diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-initially-normal-link.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-initially-normal-link.ldif
new file mode 100644
index 00000000000..35b282bf392
--- /dev/null
+++ b/source4/selftest/provisions/release-4-5-0-pre1/add-initially-normal-link.ldif
@@ -0,0 +1,4 @@
+dn: CN=Allowed RODC Password Replication Group,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp
+changetype: modify
+add: member
+member: cn=dangling-forward,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp
diff --git a/source4/selftest/provisions/release-4-5-0-pre1/delete-only-backlink.ldif b/source4/selftest/provisions/release-4-5-0-pre1/delete-only-backlink.ldif
new file mode 100644
index 00000000000..d97550c5ed9
--- /dev/null
+++ b/source4/selftest/provisions/release-4-5-0-pre1/delete-only-backlink.ldif
@@ -0,0 +1,4 @@
+dn: CN=dangling-forward,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp
+changetype: modify
+delete: memberOf
+memberOf: <GUID=a5b834bf-e4ca-4e1b-9c9f-0f01c9656f3b>;<SID=S-1-5-21-4177067393-1453636373-93818738-571>;CN=Allowed RODC Password Replication Group,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp
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 e6370a479d9..ea2ef233802 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
@@ -1,4 +1,4 @@
-Checking 222 objects
+Checking 223 objects
ERROR: linked attribute 'member' to '<GUID=118943ce-41c2-48cb-a511-b68c6feaa8aa>;<RMD_ADDTIME=131116484670000000>;<RMD_CHANGETIME=131116484700000000>;<RMD_FLAGS=1>;<RMD_INVOCID=4e4496a3-7fb8-4f97-8a33-d238db8b5e2d>;<RMD_LOCAL_USN=3729>;<RMD_ORIGINATING_USN=3729>;<RMD_VERSION=1>;<SID=S-1-5-21-4177067393-1453636373-93818738-1103>;CN=User 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
@@ -11,6 +11,9 @@ Fixed undead forward link member
ERROR: linked attribute 'member' to '<GUID=50d78122-17c8-4352-acf0-8f549b5b5b3c>;<RMD_ADDTIME=131116484690000000>;<RMD_CHANGETIME=131116484720000000>;<RMD_FLAGS=1>;<RMD_INVOCID=4e4496a3-7fb8-4f97-8a33-d238db8b5e2d>;<RMD_LOCAL_USN=3733>;<RMD_ORIGINATING_USN=3733>;<RMD_VERSION=1>;<SID=S-1-5-21-4177067393-1453636373-93818738-1104>;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: missing backlink attribute 'memberOf' in CN=dangling-forward,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
+Fix missing backlink memberOf [YES]
+Fixed missing backlink memberOf
ERROR: target DN is deleted for member in object CN=swimmers,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp - <GUID=2301a64c-5b42-4ca8-851e-12d4a711cfb4>;<RMD_ADDTIME=131116485990000000>;<RMD_CHANGETIME=131116485990000000>;<RMD_FLAGS=1>;<RMD_INVOCID=4e4496a3-7fb8-4f97-8a33-d238db8b5e2d>;<RMD_LOCAL_USN=3745>;<RMD_ORIGINATING_USN=3745>;<RMD_VERSION=1>;<SID=S-1-5-21-4177067393-1453636373-93818738-1111>;CN=fred,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp
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 stale DN link? [YES]
@@ -42,4 +45,4 @@ Fixed undead forward link member
ERROR: linked attribute 'member' to '<GUID=50d78122-17c8-4352-acf0-8f549b5b5b3c>;<RMD_ADDTIME=131116484680000000>;<RMD_CHANGETIME=131116484710000000>;<RMD_FLAGS=1>;<RMD_INVOCID=4e4496a3-7fb8-4f97-8a33-d238db8b5e2d>;<RMD_LOCAL_USN=3731>;<RMD_ORIGINATING_USN=3731>;<RMD_VERSION=1>;<SID=S-1-5-21-4177067393-1453636373-93818738-1104>;CN=User1 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
-Checked 222 objects (14 errors)
+Checked 223 objects (15 errors)
diff --git a/testprogs/blackbox/dbcheck-links.sh b/testprogs/blackbox/dbcheck-links.sh
index f6c6a76d8f4..2a1bfbace02 100755
--- a/testprogs/blackbox/dbcheck-links.sh
+++ b/testprogs/blackbox/dbcheck-links.sh
@@ -91,6 +91,27 @@ dbcheck_clean() {
fi
}
+add_dangling_link() {
+ ldif=$release_dir/add-dangling-forwardlink-user.ldif
+ TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
+ if [ "$?" != "0" ]; then
+ return 1
+ fi
+
+ ldif=$release_dir/add-initially-normal-link.ldif
+ TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
+ if [ "$?" != "0" ]; then
+ return 1
+ fi
+ sleep 6
+
+ ldif=$release_dir/delete-only-backlink.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
+}
+
add_dangling_backlink() {
ldif=$release_dir/add-dangling-backlink-user.ldif
TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif
@@ -186,6 +207,7 @@ if [ -d $release_dir ]; then
testit "remove_one_link" remove_one_link
testit "remove_one_user" remove_one_user
testit "move_one_user" move_one_user
+ testit "add_dangling_link" add_dangling_link
testit "add_dangling_backlink" add_dangling_backlink
testit "dbcheck" dbcheck
testit "dbcheck_clean" dbcheck_clean