From d5db47c7d412c1795a7485f10c2517e36f80c7fc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bj=C3=B6rn=20Baumbach?= Date: Wed, 9 Nov 2011 13:24:42 +0100 Subject: [PATCH] s3-selftest: introduce new net registry check check Add a new check which checks for defects in the net registry check tool. Signed-off-by: Michael Adam --- source3/script/tests/test_net_registry_check.sh | 146 ++++++++++++++++++++++++ 1 file changed, 146 insertions(+) create mode 100755 source3/script/tests/test_net_registry_check.sh diff --git a/source3/script/tests/test_net_registry_check.sh b/source3/script/tests/test_net_registry_check.sh new file mode 100755 index 00000000000..627f67c55a8 --- /dev/null +++ b/source3/script/tests/test_net_registry_check.sh @@ -0,0 +1,146 @@ +#!/bin/sh +# +# Blackbox tests for the "net registry check" command. +# +# Copyright (C) 2011 Björn Baumbach + +if [ $# -lt 5 ]; then + echo "Usage: test_net_registry.sh SCRIPTDIR SERVERCONFFILE NET CONFIGURATION DBWRAP_TOOL" + exit 1 +fi + +SCRIPTDIR="$1" +SERVERCONFFILE="$2" +NET="$3" +CONFIGURATION="$4" +DBWRAP_TOOL="$5" + +NET="$VALGRIND ${NET:-$BINDIR/net} $CONFIGURATION" + +NETREG="${NET} registry" +REGORIG="$(grep 'state directory = ' $SERVERCONFFILE | sed 's/[^=]*=//')/registry.tdb" +REG=$REGORIG.wip + +incdir=`dirname $0`/../../../testprogs/blackbox +. $incdir/subunit.sh + +failed=0 + +# run registry check and filter allowed errors +regcheck() +{ + ALLOWEDERR="Check database:|INFO: version =" + ERRSTR=$(${NETREG} check $REG $@ 2>&1 | grep -E -v "$ALLOWEDERR") +} + +# try to repair registry +regrepair() +{ + regcheck -a +} + +# check if $ERRSTR contains expected error +checkerr() +{ + EXPERR=$1 + + ERRCNT=$(echo "$ERRSTR" | grep "$EXPERR" | wc -l) + return $ERRCNT +} + +regchecknrepair() +{ + EXPERR="$1" + EXPERRCNT="$2" + + regcheck + checkerr "$EXPERR" + test "x$?" = "x$ERRCNT" || { + echo "Expected $EXPERRCNT of error $EXPERR. Received $ERRCNT" + return 1 + } + + regrepair + regcheck + test "x$ERRSTR" = "x" || { + echo "Error: Can't repair database" + return 1 + } +} + +test_simple() +{ + local ERRSTR="" + cp $REGORIG $REG + + regcheck + test "x$ERRSTR" = "x" || { + echo $ERRSTR + return 1 + } +} + +test_damage() +{ + diff $REGORIG $REG +} + +test_duplicate() +{ + local ERRSTR="" + $DBWRAP_TOOL $REG store 'HKLM/SOFTWARE' hex '02000000534F4654574152450053595354454D00' + + regchecknrepair "Duplicate subkeylist" 1 +} + +test_slashes() +{ + local ERRSTR="" + $DBWRAP_TOOL $REG store 'HKLM/SOFTWARE' hex '02000000534F4654574152450053595354454D00' + + regchecknrepair "Unnormal key:" 1 +} + +test_uppercase() +{ + local ERRSTR="" + $DBWRAP_TOOL $REG store 'HKLM\Software' hex '02000000534F4654574152450053595354454D00' + + regchecknrepair "Unnormal key:" 1 +} + +test_strangeletters() +{ + local ERRSTR="" + $DBWRAP_TOOL $REG store 'HKLM\SOFTWARE' hex '02000000534F4654574FABFABFABFAB354454D00' + + regchecknrepair "Conversion error: Incomplete multibyte sequence" 1 +} + +testit "simple" \ + test_simple || \ + failed=`expr $failed + 1` + +testit "damages_registry" \ + test_damage || \ + failed=`expr $failed + 1` + +testit "duplicate" \ + test_duplicate || \ + failed=`expr $failed + 1` + +testit "slashes" \ + test_slashes || \ + failed=`expr $failed + 1` + +testit "uppercase" \ + test_uppercase || \ + failed=`expr $failed + 1` + +#Can't repair this atm +#testit "strangeletters" \ +# test_strangeletters || \ +# failed=`expr $failed + 1` + +testok $0 $failed + -- 2.11.4.GIT