1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-22 13:34:15 +03:00

tdb: test for readonly locks mode on tdbbackup command

Simple bash test for readonly locks on tdbbackup:
1. Running tdbbackup on a database with and without readonly locks enabled.
2. Dump both backups and original.
3. Check all three dumps match.

A binary sample_tdb.tdb file is included for the test because the existing
sample tdbs in lib/tdb/test are either corrupt or empty.

Signed-off-by: Aaron Haslett <aaron.haslett@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
This commit is contained in:
Aaron Haslett 2018-07-31 10:07:53 +12:00 committed by Gary Lockyer
parent 8f83933f6e
commit 04217372f4
3 changed files with 65 additions and 0 deletions

BIN
lib/tdb/test/sample_tdb.tdb Normal file

Binary file not shown.

54
lib/tdb/test/test_tdbbackup.sh Executable file
View File

@ -0,0 +1,54 @@
#!/bin/sh
# Blackbox test for tdbbackup of given ldb or tdb database
# Copyright (C) 2018 Andrew Bartlett <abartlet@samba.org>
if [ $# -lt 1 ]; then
echo "Usage: $0 LDBFILE"
exit 1;
fi
LDBFILE=$1
timestamp() {
date -u +'time: %Y-%m-%d %H:%M:%S.%6NZ' | sed 's/\..*NZ$/.000000Z/'
}
subunit_fail_test () {
timestamp
printf 'failure: %s [\n' "$1"
cat -
echo "]"
}
testit () {
name="$1"
shift
cmdline="$@"
timestamp
printf 'test: %s\n' "$1"
output=`$cmdline 2>&1`
status=$?
if [ x$status = x0 ]; then
timestamp
printf 'success: %s\n' "$name"
else
echo "$output" | subunit_fail_test "$name"
fi
return $status
}
$BINDIR/tdbdump $LDBFILE | sort > orig_dump
testit "normal tdbbackup on tdb file" $BINDIR/tdbbackup $LDBFILE -s .bak
$BINDIR/tdbdump $LDBFILE.bak | sort > bak_dump
testit "cmp between tdbdumps of original and backup" cmp orig_dump bak_dump
rm $LDBFILE.bak
rm bak_dump
testit "readonly tdbbackup on tdb file" $BINDIR/tdbbackup $LDBFILE -s .bak -r
$BINDIR/tdbdump $LDBFILE.bak | sort > bak_dump
testit "cmp between tdbdumps of original and back dbs" cmp orig_dump bak_dump
rm $LDBFILE.bak
rm bak_dump
rm orig_dump

View File

@ -213,6 +213,17 @@ def testonly(ctx):
if not os.path.exists(link):
os.symlink(os.path.abspath(os.path.join(env.cwd, 'test')), link)
sh_tests = ["test/test_tdbbackup.sh test/jenkins-be-hash.tdb"]
for sh_test in sh_tests:
cmd = "BINDIR={} {}".format(Utils.g_module.blddir, sh_test)
print("shell test: " + cmd)
ret = samba_utils.RUN_COMMAND(cmd)
if ret != 0:
print("%s sh test failed" % cmd)
ecode = ret
break
for t in tdb1_unit_tests:
f = "tdb1-" + t
cmd = "cd " + testdir + " && " + os.path.abspath(os.path.join(Utils.g_module.blddir, f)) + " > test-output 2>&1"