testprogs: Fix and improve dbcheck-links test
[kseeger/samba-autobuild/.git] / testprogs / blackbox / dbcheck-links.sh
index eb0e0b3163f58e6d2756ca14e7e84d5c5ae1e009..ead59d691e0bacdacd41a6e2f5d592b8c6bce749 100755 (executable)
@@ -14,6 +14,23 @@ shift 2
 . `dirname $0`/subunit.sh
 
 . `dirname $0`/common-links.sh
+. `dirname $0`/common_test_fns.inc
+
+failed=0
+
+if [ ! -x $samba_undump ] || [ ! -d $release_dir ]; then
+    subunit_start_test $RELEASE
+    subunit_skip_test $RELEASE <<EOF
+no test provision
+EOF
+
+    subunit_start_test "tombstones_expunge"
+    subunit_skip_test "tombstones_expunge" <<EOF
+no test provision
+EOF
+
+    exit 0
+fi
 
 dbcheck() {
     tmpfile=$PREFIX_ABS/$RELEASE/expected-dbcheck-link-output${1}.txt.tmp
@@ -873,83 +890,70 @@ EOF
     fi
 }
 
-if [ -d $release_dir ]; then
-    testit $RELEASE undump
-    testit "add_two_more_users" add_two_more_users
-    testit "add_four_more_links" add_four_more_links
-    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 "add_deleted_dangling_backlink" add_deleted_dangling_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
-    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 "duplicate_member" duplicate_member
-    testit "dbcheck_duplicate_member" dbcheck_duplicate_member
-    testit "check_expected_after_duplicate_links" check_expected_after_duplicate_links
-    testit "duplicate_clean" dbcheck_clean
-    testit "forward_link_corruption" forward_link_corruption
-    testit "dbcheck_forward_link_corruption" dbcheck_forward_link_corruption
-    testit "check_expected_after_dbcheck_forward_link_corruption" check_expected_after_dbcheck_forward_link_corruption
-    testit "forward_link_corruption_clean" dbcheck_clean
-    testit "oneway_link_corruption" oneway_link_corruption
-    testit "dbcheck_oneway_link_corruption" dbcheck_oneway_link_corruption
-    testit "check_expected_after_dbcheck_oneway_link_corruption" check_expected_after_dbcheck_oneway_link_corruption
-    testit "oneway_link_corruption_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 "missing_link_sid_corruption" missing_link_sid_corruption
-    testit "dbcheck_missing_link_sid_corruption" dbcheck_missing_link_sid_corruption
-    testit "missing_link_sid_clean" dbcheck_clean
-    testit "add_lost_deleted_user1" add_lost_deleted_user1
-    testit "dbcheck_lost_deleted_user1" dbcheck_lost_deleted_user1
-    testit "lost_deleted_user1_clean_A" dbcheck_clean
-    testit "remove_lost_deleted_user1" remove_lost_deleted_user1
-    testit "lost_deleted_user1_clean_B" dbcheck_clean
-    testit "add_lost_deleted_user2" add_lost_deleted_user2
-    testit "dbcheck_lost_deleted_user2" dbcheck_lost_deleted_user2
-    testit "lost_deleted_user2_clean" dbcheck_clean
-    testit "add_lost_deleted_user3" add_lost_deleted_user3
-    testit "dbcheck_lost_deleted_user3" dbcheck_lost_deleted_user3
-    testit "lost_deleted_user3_clean_A" dbcheck_clean
-    testit "remove_lost_deleted_user3" remove_lost_deleted_user3
-    testit "lost_deleted_user3_clean_B" 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 "add_dangling_multi_valued" add_dangling_multi_valued
-    testit "dbcheck_dangling_multi_valued" dbcheck_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
-    # Currently this cannot pass
-    testit "dbcheck_dangling_multi_valued_clean" dbcheck_clean
-    testit "dangling_link_does_not_prevent_delete" dangling_link_does_not_prevent_delete
-    testit "dangling_link_to_unknown_does_not_prevent_delete" dangling_link_to_unknown_does_not_prevent_delete
-    testit "dangling_link_to_known_and_unknown_does_not_prevent_delete" dangling_link_to_known_and_unknown_does_not_prevent_delete
-
-else
-    subunit_start_test $RELEASE
-    subunit_skip_test $RELEASE <<EOF
-no test provision
-EOF
-
-    subunit_start_test "tombstones_expunge"
-    subunit_skip_test "tombstones_expunge" <<EOF
-no test provision
-EOF
-fi
-
-if [ -d $PREFIX_ABS/${RELEASE} ]; then
-    rm -fr $PREFIX_ABS/${RELEASE}
-fi
+remove_directory $PREFIX_ABS/${RELEASE}
+
+testit $RELEASE undump || failed=`expr $failed + 1`
+testit "add_two_more_users" add_two_more_users || failed=`expr $failed + 1`
+testit "add_four_more_links" add_four_more_links || failed=`expr $failed + 1`
+testit "remove_one_link" remove_one_link || failed=`expr $failed + 1`
+testit "remove_one_user" remove_one_user || failed=`expr $failed + 1`
+testit "move_one_user" move_one_user || failed=`expr $failed + 1`
+testit "add_dangling_link" add_dangling_link || failed=`expr $failed + 1`
+testit "add_dangling_backlink" add_dangling_backlink || failed=`expr $failed + 1`
+testit "add_deleted_dangling_backlink" add_deleted_dangling_backlink || failed=`expr $failed + 1`
+testit "revive_links_on_deleted_group" revive_links_on_deleted_group || failed=`expr $failed + 1`
+testit "revive_backlink_on_deleted_group" revive_backlink_on_deleted_group || failed=`expr $failed + 1`
+testit "add_deleted_target_link" add_deleted_target_link || failed=`expr $failed + 1`
+testit "add_deleted_target_backlink" add_deleted_target_backlink || failed=`expr $failed + 1`
+testit "dbcheck_dangling" dbcheck_dangling || failed=`expr $failed + 1`
+testit "dbcheck_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "check_expected_after_deleted_links" check_expected_after_deleted_links || failed=`expr $failed + 1`
+testit "check_expected_after_links" check_expected_after_links || failed=`expr $failed + 1`
+testit "check_expected_after_objects" check_expected_after_objects || failed=`expr $failed + 1`
+testit "duplicate_member" duplicate_member || failed=`expr $failed + 1`
+testit "dbcheck_duplicate_member" dbcheck_duplicate_member || failed=`expr $failed + 1`
+testit "check_expected_after_duplicate_links" check_expected_after_duplicate_links || failed=`expr $failed + 1`
+testit "duplicate_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "forward_link_corruption" forward_link_corruption || failed=`expr $failed + 1`
+testit "dbcheck_forward_link_corruption" dbcheck_forward_link_corruption || failed=`expr $failed + 1`
+testit "check_expected_after_dbcheck_forward_link_corruption" check_expected_after_dbcheck_forward_link_corruption || failed=`expr $failed + 1`
+testit "forward_link_corruption_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "oneway_link_corruption" oneway_link_corruption || failed=`expr $failed + 1`
+testit "dbcheck_oneway_link_corruption" dbcheck_oneway_link_corruption || failed=`expr $failed + 1`
+testit "check_expected_after_dbcheck_oneway_link_corruption" check_expected_after_dbcheck_oneway_link_corruption || failed=`expr $failed + 1`
+testit "oneway_link_corruption_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "dangling_one_way_link" dangling_one_way_link || failed=`expr $failed + 1`
+testit "dbcheck_one_way" dbcheck_one_way || failed=`expr $failed + 1`
+testit "dbcheck_clean2" dbcheck_clean || failed=`expr $failed + 1`
+testit "missing_link_sid_corruption" missing_link_sid_corruption || failed=`expr $failed + 1`
+testit "dbcheck_missing_link_sid_corruption" dbcheck_missing_link_sid_corruption || failed=`expr $failed + 1`
+testit "missing_link_sid_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "add_lost_deleted_user1" add_lost_deleted_user1 || failed=`expr $failed + 1`
+testit "dbcheck_lost_deleted_user1" dbcheck_lost_deleted_user1 || failed=`expr $failed + 1`
+testit "lost_deleted_user1_clean_A" dbcheck_clean || failed=`expr $failed + 1`
+testit "remove_lost_deleted_user1" remove_lost_deleted_user1 || failed=`expr $failed + 1`
+testit "lost_deleted_user1_clean_B" dbcheck_clean || failed=`expr $failed + 1`
+testit "add_lost_deleted_user2" add_lost_deleted_user2 || failed=`expr $failed + 1`
+testit "dbcheck_lost_deleted_user2" dbcheck_lost_deleted_user2 || failed=`expr $failed + 1`
+testit "lost_deleted_user2_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "add_lost_deleted_user3" add_lost_deleted_user3 || failed=`expr $failed + 1`
+testit "dbcheck_lost_deleted_user3" dbcheck_lost_deleted_user3 || failed=`expr $failed + 1`
+testit "lost_deleted_user3_clean_A" dbcheck_clean || failed=`expr $failed + 1`
+testit "remove_lost_deleted_user3" remove_lost_deleted_user3 || failed=`expr $failed + 1`
+testit "lost_deleted_user3_clean_B" dbcheck_clean || failed=`expr $failed + 1`
+testit "dangling_one_way_dn" dangling_one_way_dn || failed=`expr $failed + 1`
+testit "deleted_one_way_dn" deleted_one_way_dn || failed=`expr $failed + 1`
+testit "dbcheck_clean3" dbcheck_clean || failed=`expr $failed + 1`
+testit "add_dangling_multi_valued" add_dangling_multi_valued || failed=`expr $failed + 1`
+testit "dbcheck_dangling_multi_valued" dbcheck_dangling_multi_valued || failed=`expr $failed + 1`
+testit "dangling_multi_valued_check_missing" dangling_multi_valued_check_missing || failed=`expr $failed + 1`
+testit "dangling_multi_valued_check_equal_or_too_many" dangling_multi_valued_check_equal_or_too_many || failed=`expr $failed + 1`
+# Currently this cannot pass
+testit "dbcheck_dangling_multi_valued_clean" dbcheck_clean || failed=`expr $failed + 1`
+testit "dangling_link_does_not_prevent_delete" dangling_link_does_not_prevent_delete || failed=`expr $failed + 1`
+testit "dangling_link_to_unknown_does_not_prevent_delete" dangling_link_to_unknown_does_not_prevent_delete || failed=`expr $failed + 1`
+testit "dangling_link_to_known_and_unknown_does_not_prevent_delete" dangling_link_to_known_and_unknown_does_not_prevent_delete || failed=`expr $failed + 1`
+
+remove_directory $PREFIX_ABS/${RELEASE}
 
 exit $failed