summaryrefslogtreecommitdiff
path: root/testprogs/blackbox
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2016-02-23 14:57:04 +1300
committerAndrew Bartlett <abartlet@samba.org>2016-03-08 01:58:30 +0100
commitc79c1e405d52c5dc54b8f03cd891e47f7ea04497 (patch)
treec0702d7c920258ae407c3e91218f382ae9c0a752 /testprogs/blackbox
parent13e62b2e350a21beefe871de64900fb78c5385f7 (diff)
downloadsamba-c79c1e405d52c5dc54b8f03cd891e47f7ea04497.tar.gz
dbcheck: Check for and remove duplicate values in attributes
This can happen with three DCs and custom schema, but we test it by just forcing the values directly into the backing tdb. Signed-off-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Garming Sam <garming@catalyst.net.nz>
Diffstat (limited to 'testprogs/blackbox')
-rwxr-xr-xtestprogs/blackbox/dbcheck-oldrelease.sh36
1 files changed, 36 insertions, 0 deletions
diff --git a/testprogs/blackbox/dbcheck-oldrelease.sh b/testprogs/blackbox/dbcheck-oldrelease.sh
index e43dcd8a5e5..18c5c6e2ff4 100755
--- a/testprogs/blackbox/dbcheck-oldrelease.sh
+++ b/testprogs/blackbox/dbcheck-oldrelease.sh
@@ -207,6 +207,39 @@ check_expected_after_values() {
return 0
}
+check_forced_duplicate_values() {
+ if [ x$RELEASE = x"release-4-1-0rc3" ]; then
+ ldif=$release_dir/forced-duplicate-value-for-dbcheck.ldif
+ TZ=UTC $ldbmodify -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb.d/DC%3DRELEASE-4-1-0RC3,DC%3DSAMBA,DC%3DCORP.ldb $ldif
+ if [ "$?" != "0" ]; then
+ return 1
+ fi
+ else
+ return 0
+ fi
+}
+
+# This should 'fail', because it returns the number of modified records
+dbcheck_after_dup() {
+ if [ x$RELEASE = x"release-4-1-0rc3" ]; then
+ $PYTHON $BINDIR/samba-tool dbcheck --cross-ncs --fix --yes -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
+ else
+ return 1
+ fi
+}
+
+check_expected_after_dup_values() {
+ if [ x$RELEASE = x"release-4-1-0rc3" ]; then
+ tmpldif=$PREFIX_ABS/$RELEASE/expected-otherphone-after-dbcheck.ldif.tmp
+ TZ=UTC $ldbsearch -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb cn=administrator -s base -b cn=administrator,cn=users,DC=release-4-1-0rc3,DC=samba,DC=corp otherHomePhone --sorted --show-binary | sort > $tmpldif
+ diff $tmpldif $release_dir/expected-otherphone-after-dbcheck.ldif
+ if [ "$?" != "0" ]; then
+ return 1
+ fi
+ fi
+ return 0
+}
+
# But having fixed it all up, this should pass
dbcheck_clean() {
$PYTHON $BINDIR/samba-tool dbcheck --cross-ncs -H tdb://$PREFIX_ABS/${RELEASE}/private/sam.ldb $@
@@ -269,6 +302,9 @@ if [ -d $release_dir ]; then
testit "check_expected_before_values" check_expected_before_values
testit_expect_failure "dbcheck" dbcheck
testit "check_expected_after_values" check_expected_after_values
+ testit "check_forced_duplicate_values" check_forced_duplicate_values
+ testit_expect_failure "dbcheck_after_dup" dbcheck_after_dup
+ testit "check_expected_after_dup_values" check_expected_after_dup_values
testit "dbcheck_clean" dbcheck_clean
testit_expect_failure "dbcheck_acl_reset" dbcheck_acl_reset
testit "dbcheck_acl_reset_clean" dbcheck_acl_reset_clean