tests/dbcheck: Add a test for two live objects, with a dangling forward link
authorGarming Sam <garming@catalyst.net.nz>
Wed, 22 Feb 2017 04:43:21 +0000 (17:43 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 23 Feb 2017 22:58:21 +0000 (23:58 +0100)
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

source4/selftest/provisions/release-4-5-0-pre1/add-dangling-forwardlink-user.ldif [new file with mode: 0644]
source4/selftest/provisions/release-4-5-0-pre1/add-initially-normal-link.ldif [new file with mode: 0644]
source4/selftest/provisions/release-4-5-0-pre1/delete-only-backlink.ldif [new file with mode: 0644]
source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output.txt
testprogs/blackbox/dbcheck-links.sh

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 (file)
index 0000000..db4a68c
--- /dev/null
@@ -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 (file)
index 0000000..35b282b
--- /dev/null
@@ -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 (file)
index 0000000..d97550c
--- /dev/null
@@ -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
index e6370a479d9e41c1b38d3374f57214e3652725d3..ea2ef233802f4e8c26a77f088d0d4229c4137286 100644 (file)
@@ -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)
index f6c6a76d8f4e7aabca03ff70ad66ef4836ed8e67..2a1bfbace02b85bbbf7102fa2103e1c3db2d9af1 100755 (executable)
@@ -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