From 25ae8d72d66cbe7342b50254ede7e5890bc23b73 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 31 Oct 2017 08:23:39 +1300 Subject: [PATCH] selftest: Split out creation of complex (often invalid) links This will allow us to test other run-time behaviour with broken databases. Signed-off-by: Andrew Bartlett Reviewed-by: Stefan Metzmacher --- testprogs/blackbox/common-links.sh | 199 +++++++++++++++++++++++++++ testprogs/blackbox/dbcheck-links.sh | 200 +--------------------------- 2 files changed, 200 insertions(+), 199 deletions(-) create mode 100644 testprogs/blackbox/common-links.sh diff --git a/testprogs/blackbox/common-links.sh b/testprogs/blackbox/common-links.sh new file mode 100644 index 00000000000..7c80e35007a --- /dev/null +++ b/testprogs/blackbox/common-links.sh @@ -0,0 +1,199 @@ +release_dir=`dirname $0`/../../source4/selftest/provisions/$RELEASE + +ldbadd="ldbadd" +if [ -x "$BINDIR/ldbadd" ]; then + ldbadd="$BINDIR/ldbadd" +fi + +ldbmodify="ldbmodify" +if [ -x "$BINDIR/ldbmodify" ]; then + ldbmodify="$BINDIR/ldbmodify" +fi + +ldbdel="ldbdel" +if [ -x "$BINDIR/ldbdel" ]; then + ldbdel="$BINDIR/ldbdel" +fi + +ldbsearch="ldbsearch" +if [ -x "$BINDIR/ldbsearch" ]; then + ldbsearch="$BINDIR/ldbsearch" +fi + +ldbrename="ldbrename" +if [ -x "$BINDIR/ldbrename" ]; then + ldbrename="$BINDIR/ldbrename" +fi + +undump() { + if test -x $BINDIR/tdbrestore; + then + `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE $BINDIR/tdbrestore + else + `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE + 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 + + 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 + if [ "$?" != "0" ]; then + return 1 + fi + + ldif=$release_dir/add-dangling-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_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 + if [ "$?" != "0" ]; then + return 1 + fi +} + +add_four_more_links() { + ldif=$release_dir/add-four-more-links.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi +} + +remove_one_link() { + ldif=$release_dir/remove-one-more-link.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi +} + +remove_one_user() { + ldif=$release_dir/remove-one-more-user.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi +} + +move_one_user() { + TZ=UTC $ldbrename -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb 'cn=user1,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp' 'cn=user1x,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp' + if [ "$?" != "0" ]; then + return 1 + fi +} + +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 +} + +add_dangling_multi_valued() { + # multi1 - All 4 backlinks + # multi2 - Missing all 4 backlinks + # multi3 - Missing 2 backlinks + # Administrator - Has 2 too many backlinks + # multi5 - Has 2 backlinks but no forward links + ldif=$release_dir/add-dangling-multilink-users.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-multilink.ldif + TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif + if [ "$?" != "0" ]; then + return 1 + fi + + ldif=$release_dir/delete-only-multi-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 + + ldif=$release_dir/add-dangling-multi-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 +} diff --git a/testprogs/blackbox/dbcheck-links.sh b/testprogs/blackbox/dbcheck-links.sh index 208ec00dfc0..e1db50f4faa 100755 --- a/testprogs/blackbox/dbcheck-links.sh +++ b/testprogs/blackbox/dbcheck-links.sh @@ -13,41 +13,7 @@ shift 2 . `dirname $0`/subunit.sh -release_dir=`dirname $0`/../../source4/selftest/provisions/$RELEASE - -ldbadd="ldbadd" -if [ -x "$BINDIR/ldbadd" ]; then - ldbadd="$BINDIR/ldbadd" -fi - -ldbmodify="ldbmodify" -if [ -x "$BINDIR/ldbmodify" ]; then - ldbmodify="$BINDIR/ldbmodify" -fi - -ldbdel="ldbdel" -if [ -x "$BINDIR/ldbdel" ]; then - ldbdel="$BINDIR/ldbdel" -fi - -ldbsearch="ldbsearch" -if [ -x "$BINDIR/ldbsearch" ]; then - ldbsearch="$BINDIR/ldbsearch" -fi - -ldbrename="ldbrename" -if [ -x "$BINDIR/ldbrename" ]; then - ldbrename="$BINDIR/ldbrename" -fi - -undump() { - if test -x $BINDIR/tdbrestore; - then - `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE $BINDIR/tdbrestore - else - `dirname $0`/../../source4/selftest/provisions/undump.sh $release_dir $PREFIX_ABS/$RELEASE - fi -} +. `dirname $0`/common-links.sh dbcheck() { tmpfile=$PREFIX_ABS/$RELEASE/expected-dbcheck-link-output${1}.txt.tmp @@ -103,115 +69,6 @@ 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 - - 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 - if [ "$?" != "0" ]; then - return 1 - fi - - ldif=$release_dir/add-dangling-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_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 - if [ "$?" != "0" ]; then - return 1 - fi -} - -add_four_more_links() { - ldif=$release_dir/add-four-more-links.ldif - TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif - if [ "$?" != "0" ]; then - return 1 - fi -} - -remove_one_link() { - ldif=$release_dir/remove-one-more-link.ldif - TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif - if [ "$?" != "0" ]; then - return 1 - fi -} - -remove_one_user() { - ldif=$release_dir/remove-one-more-user.ldif - TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif - if [ "$?" != "0" ]; then - return 1 - fi -} - -move_one_user() { - TZ=UTC $ldbrename -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb 'cn=user1,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp' 'cn=user1x,cn=users,DC=release-4-5-0-pre1,DC=samba,DC=corp' - if [ "$?" != "0" ]; then - return 1 - fi -} - check_expected_after_links() { tmpldif=$PREFIX_ABS/$RELEASE/expected-links-after-link-dbcheck.ldif.tmp TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb '(|(cn=swimmers)(cn=leaders)(cn=helpers))' -s sub -b DC=release-4-5-0-pre1,DC=samba,DC=corp --show-deleted --sorted member > $tmpldif @@ -239,61 +96,6 @@ check_expected_after_objects() { fi } -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 -} - -add_dangling_multi_valued() { - # multi1 - All 4 backlinks - # multi2 - Missing all 4 backlinks - # multi3 - Missing 2 backlinks - # Administrator - Has 2 too many backlinks - # multi5 - Has 2 backlinks but no forward links - ldif=$release_dir/add-dangling-multilink-users.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-multilink.ldif - TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $ldif - if [ "$?" != "0" ]; then - return 1 - fi - - ldif=$release_dir/delete-only-multi-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 - - ldif=$release_dir/add-dangling-multi-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 -} - dbcheck_dangling_multi_valued() { $PYTHON $BINDIR/samba-tool dbcheck -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb --fix --yes -- 2.34.1