From 7be38c605468786894a373e15068b8017323da78 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 30 Oct 2017 15:29:36 +1300 Subject: [PATCH] selftest: add more dbcheck tests This validates some more combinations and ensures that the changes in 962a1b32201fce0a49c6be55943d4fbb57ed781e are tested. Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher --- .../add-dangling-deleted-link.ldif | 5 + .../add-deleted-backlink-user.ldif | 3 + .../add-deleted-backlink.ldif | 5 + .../add-deleted-target-backlink-user.ldif | 3 + .../add-deleted-target-backlink.ldif | 4 + .../dangling-one-way-dn.ldif | 15 +++ .../dangling-one-way-link.ldif | 22 ++--- .../deleted-one-way-dn.ldif | 13 +++ .../expected-dbcheck-link-output.txt | 21 ++++- .../expected-dbcheck-link-output_one_way.txt | 7 ++ testprogs/blackbox/dbcheck-links.sh | 93 ++++++++++++++++--- 11 files changed, 159 insertions(+), 32 deletions(-) create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/add-dangling-deleted-link.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink-user.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink-user.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-dn.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/deleted-one-way-dn.ldif create mode 100644 source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output_one_way.txt diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-dangling-deleted-link.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-dangling-deleted-link.ldif new file mode 100644 index 00000000000..b740252e277 --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/add-dangling-deleted-link.ldif @@ -0,0 +1,5 @@ +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=fred\0ADEL:2301a64c-5b42-4ca8-851e-12d4a711cfb4,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp +- diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink-user.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink-user.ldif new file mode 100644 index 00000000000..19b6d6525fa --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink-user.ldif @@ -0,0 +1,3 @@ +dn: CN=deleted-back,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +objectclass: user +samaccountname: deleted-back diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink.ldif new file mode 100644 index 00000000000..14e014ad2a6 --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-backlink.ldif @@ -0,0 +1,5 @@ +dn:CN=dsg\0ADEL:6d66d0ef-cad7-4e5d-b1b6-4a233a21c269,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: modify +add: memberOf +memberOf: ;;CN=Allowed RODC Password Replication Group,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +- \ No newline at end of file diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink-user.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink-user.ldif new file mode 100644 index 00000000000..6e99aae7375 --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink-user.ldif @@ -0,0 +1,3 @@ +dn: CN=deleted-target-back,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +objectclass: user +samaccountname: deleted-target-back diff --git a/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink.ldif b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink.ldif new file mode 100644 index 00000000000..6a46e2827ee --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/add-deleted-target-backlink.ldif @@ -0,0 +1,4 @@ +dn: CN=deleted-target-back,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: modify +add: memberOf +memberOf: ;;CN=gdg\0ADEL:e0f581e7-14ee-4fc2-839c-8f46f581c72a,CN=Deleted Objects,DC=release-4-5-0-pre1,DC=samba,DC=corp diff --git a/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-dn.ldif b/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-dn.ldif new file mode 100644 index 00000000000..c215c0655c3 --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-dn.ldif @@ -0,0 +1,15 @@ +dn: CN=secretary,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: add +objectclass: user +samaccountname: secretary + +dn: CN=dangling-one-way,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: add +objectclass: user +samaccountname: dangling-one-way +secretary: CN=secretary,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp + +dn: CN=secretary,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: modrdn +newrdn: cn=new-secretary +deleteoldrdn: 1 diff --git a/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-link.ldif b/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-link.ldif index c215c0655c3..2e43cca6a17 100644 --- a/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-link.ldif +++ b/source4/selftest/provisions/release-4-5-0-pre1/dangling-one-way-link.ldif @@ -1,15 +1,7 @@ -dn: CN=secretary,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp -changetype: add -objectclass: user -samaccountname: secretary - -dn: CN=dangling-one-way,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp -changetype: add -objectclass: user -samaccountname: dangling-one-way -secretary: CN=secretary,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp - -dn: CN=secretary,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp -changetype: modrdn -newrdn: cn=new-secretary -deleteoldrdn: 1 +dn: CN=36a28334-a8d3-4e67-bfe9-7e66c1af7cff,CN=Partitions,CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: modify +add: msDS-NC-Replica-Locations +msDS-NC-Replica-Locations: ;CN=NTDS + Settings,CN=NOT-A_SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,C + N=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp +- diff --git a/source4/selftest/provisions/release-4-5-0-pre1/deleted-one-way-dn.ldif b/source4/selftest/provisions/release-4-5-0-pre1/deleted-one-way-dn.ldif new file mode 100644 index 00000000000..b6cd3df02ce --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/deleted-one-way-dn.ldif @@ -0,0 +1,13 @@ +dn: CN=secretary-del,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: add +objectclass: user +samaccountname: secretary-del + +dn: CN=deleted-one-way-del,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: add +objectclass: user +samaccountname: dangling-one-way-del +secretary: CN=secretary-del,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp + +dn: CN=secretary-del,CN=users,DC=release-4-5-0-pre1,DC=samba,DC=corp +changetype: delete 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 772331b3641..44e10d01db9 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,13 +1,20 @@ -Checking 223 objects +Checking 225 objects 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=Allowed RODC Password Replication Group,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp - ;;CN=fred\0ADEL:2301a64c-5b42-4ca8-851e-12d4a711cfb4,CN=Deleted Objects,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 DN link? [YES] +Removed deleted DN on attribute 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=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 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=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 +ERROR: linked attribute 'memberOf' to ';;CN=Allowed RODC Password Replication Group,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 memberOf [YES] +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 @@ -26,23 +33,27 @@ 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=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 -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 WARNING: target DN is deleted for member in object CN=swimmers,CN=Users,DC=release-4-5-0-pre1,DC=samba,DC=corp - ;;;;;;;;;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] Removed deleted DN on attribute 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=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: 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: 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 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=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 -Checked 223 objects (15 errors) +Checked 225 objects (18 errors) diff --git a/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output_one_way.txt b/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output_one_way.txt new file mode 100644 index 00000000000..4309d1f7de7 --- /dev/null +++ b/source4/selftest/provisions/release-4-5-0-pre1/expected-dbcheck-link-output_one_way.txt @@ -0,0 +1,7 @@ +Checking 1612 objects +WARNING: no target object found for GUID component for DN value msDS-NC-Replica-Locations in object CN=36a28334-a8d3-4e67-bfe9-7e66c1af7cff,CN=Partitions,CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp - ;CN=NTDS Settings,CN=NOT-A_SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp +WARNING: target DN is deleted for msDS-NC-Replica-Locations in object CN=36a28334-a8d3-4e67-bfe9-7e66c1af7cff,CN=Partitions,CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp - ;CN=NTDS Settings,CN=NOT-A_SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp +Target GUID points at deleted DN ';CN=NTDS Settings,CN=NOT-A_SERVER,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp' +Remove stale DN link? [YES] +Removed deleted DN on attribute msDS-NC-Replica-Locations +Checked 1612 objects (0 errors) diff --git a/testprogs/blackbox/dbcheck-links.sh b/testprogs/blackbox/dbcheck-links.sh index 17973e97429..655e1aa2de0 100755 --- a/testprogs/blackbox/dbcheck-links.sh +++ b/testprogs/blackbox/dbcheck-links.sh @@ -50,31 +50,41 @@ undump() { } dbcheck() { - tmpfile=$PREFIX_ABS/$RELEASE/expected-dbcheck-link-output.txt.tmp - tmpldif1=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp1 + tmpfile=$PREFIX_ABS/$RELEASE/expected-dbcheck-link-output${1}.txt.tmp + tmpldif1=$PREFIX_ABS/$RELEASE/expected-dbcheck-output${1}2.txt.tmp1 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb -s base -b '' | grep highestCommittedUSN > $tmpldif1 - $PYTHON $BINDIR/samba-tool dbcheck -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --fix --yes > $tmpfile - if [ "$?" != "1" ]; then + $PYTHON $BINDIR/samba-tool dbcheck -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $3 --fix --yes > $tmpfile + if [ "$?" != "$2" ]; then return 1 fi sort $tmpfile > $tmpfile.sorted - sort $release_dir/expected-dbcheck-link-output.txt > $tmpfile.expected + sort $release_dir/expected-dbcheck-link-output${1}.txt > $tmpfile.expected diff -u $tmpfile.sorted $tmpfile.expected if [ "$?" != "0" ]; then return 1 fi - tmpldif2=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp2 + tmpldif2=$PREFIX_ABS/$RELEASE/expected-dbcheck-output${1}2.txt.tmp2 TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb -s base -b '' | grep highestCommittedUSN > $tmpldif2 - diff $tmpldif1 $tmpldif2 + diff -u $tmpldif1 $tmpldif2 if [ "$?" != "0" ]; then return 1 fi } +dbcheck_dangling() { + dbcheck "" "1" "" + return $? +} + +dbcheck_one_way() { + dbcheck "_one_way" "0" "CN=Configuration,DC=release-4-5-0-pre1,DC=samba,DC=corp" + return $? +} + dbcheck_clean() { tmpldif1=$PREFIX_ABS/$RELEASE/expected-dbcheck-output2.txt.tmp1 @@ -127,6 +137,42 @@ add_dangling_backlink() { fi } +add_deleted_dangling_backlink() { + ldif=$release_dir/add-deleted-backlink-user.ldif + TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi + + ldif=$release_dir/add-deleted-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_deleted_target_backlink() { + ldif=$release_dir/add-deleted-target-backlink-user.ldif + TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi + + ldif=$release_dir/add-deleted-target-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_deleted_target_link() { + ldif=$release_dir/add-dangling-deleted-link.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_two_more_users() { ldif=$release_dir/add-two-more-users.ldif TZ=UTC $ldbadd -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif @@ -193,14 +239,30 @@ check_expected_after_objects() { fi } -dangling_one_way() { - ldif=$release_dir/dangling-one-way-link.ldif +dangling_one_way_dn() { + ldif=$release_dir/dangling-one-way-dn.ldif TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif if [ "$?" != "0" ]; then return 1 fi } +deleted_one_way_dn() { + ldif=$release_dir/deleted-one-way-dn.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi +} + +dangling_one_way_link() { + ldif=$release_dir/dangling-one-way-link.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/CN%3DCONFIGURATION,DC%3DRELEASE-4-5-0-PRE1,DC%3DSAMBA,DC%3DCORP.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi +} + dangling_multi_valued() { # multi1 - All 4 backlinks # multi2 - Missing all 4 backlinks @@ -282,13 +344,20 @@ if [ -d $release_dir ]; then 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 "add_deleted_dangling_backlink" add_deleted_dangling_backlink + testit "add_deleted_target_link" add_deleted_target_link + testit "add_deleted_target_backlink" add_deleted_target_backlink + testit "dbcheck_dangling" dbcheck_dangling testit "dbcheck_clean" dbcheck_clean testit "check_expected_after_deleted_links" check_expected_after_deleted_links testit "check_expected_after_links" check_expected_after_links testit "check_expected_after_objects" check_expected_after_objects - testit "dangling_one_way" dangling_one_way - testit "dbcheck_clean" dbcheck_clean + testit "dangling_one_way_link" dangling_one_way_link + testit "dbcheck_one_way" dbcheck_one_way + testit "dbcheck_clean2" dbcheck_clean + testit "dangling_one_way_dn" dangling_one_way_dn + testit "deleted_one_way_dn" deleted_one_way_dn + testit "dbcheck_clean3" dbcheck_clean testit "dangling_multi_valued" dangling_multi_valued testit "dangling_multi_valued_check_missing" dangling_multi_valued_check_missing testit "dangling_multi_valued_check_equal_or_too_many" dangling_multi_valued_check_equal_or_too_many