[SCM] Samba Shared Repository - branch master updated

Michael Adam obnox at samba.org
Thu Nov 3 18:59:03 MDT 2011


The branch, master has been updated
       via  e308927 s3:selftest: improve logging in the registry upgrade test
       via  2e1f7e1 s3-selftest: add new registry upgrade test to test list
       via  2f9b453 s3-selftest: introduce registry upgrade test
      from  767c54d Fix bug #8562 - talloc: double free error.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit e30892764e8d8d69ceee8334de536e1dfa3cdcf7
Author: Michael Adam <obnox at samba.org>
Date:   Thu Nov 3 23:59:55 2011 +0100

    s3:selftest: improve logging in the registry upgrade test
    
    Don't only log to the log file. Give "make test" a cance to grab
    some output. And add some more messages.
    
    Autobuild-User: Michael Adam <obnox at samba.org>
    Autobuild-Date: Fri Nov  4 01:58:20 CET 2011 on sn-devel-104

commit 2e1f7e137d87de5a05985bfe05dc69f1b1b87f45
Author: Björn Baumbach <bb at sernet.de>
Date:   Wed Nov 2 20:02:35 2011 +0100

    s3-selftest: add new registry upgrade test to test list
    
    Signed-off-by: Michael Adam <obnox at samba.org>

commit 2f9b453635215774d2bf6a47db5ba26642b25b8e
Author: Björn Baumbach <bb at sernet.de>
Date:   Wed Nov 2 20:05:24 2011 +0100

    s3-selftest: introduce registry upgrade test
    
    Signed-off-by: Michael Adam <obnox at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/script/tests/test_registry_upgrade.sh |  195 +++++++++++++++++++++++++
 source3/selftest/tests.py                     |    2 +
 2 files changed, 197 insertions(+), 0 deletions(-)
 create mode 100755 source3/script/tests/test_registry_upgrade.sh


Changeset truncated at 500 lines:

diff --git a/source3/script/tests/test_registry_upgrade.sh b/source3/script/tests/test_registry_upgrade.sh
new file mode 100755
index 0000000..8e012bf
--- /dev/null
+++ b/source3/script/tests/test_registry_upgrade.sh
@@ -0,0 +1,195 @@
+#!/bin/sh
+#
+# Test for registry upgrades.
+#
+# Copyright (C) 2011 Björn Baumbach <bb at sernet.de>
+
+if [ $# -lt 2 ]; then
+    echo "Usage: test_registry_upgrade.sh NET DBWRAP_TOOL"
+    exit 1
+fi
+
+SCRIPT_DIR=$(dirname $0)
+BASE_DIR="${SCRIPT_DIR}/../../.."
+
+NET="$1"
+DBWRAP_TOOL="$2"
+DATADIR="${BASE_DIR}/testdata/samba3"
+WORKSPACE="${PREFIX}/registry_upgrade"
+CONFIG_FILE="${WORKSPACE}/smb.conf"
+CONFIGURATION="--configfile=${CONFIG_FILE}"
+
+NETCMD="$NET $CONFIGURATION"
+
+incdir="${BASE_DIR}/testprogs/blackbox"
+. $incdir/subunit.sh
+
+failed=0
+
+REGPATH="HKLM\Software\Samba"
+
+LOGDIR_PREFIX="registry_upgrade"
+
+registry_check()
+{
+    local CHECKNO="$1"
+    local CHECKDIFF="$2"
+    local REGVER=""
+    local ALLOWEDERR="INFO: version =|Check database:|overwrite registry format version 0 with 1|no INFO/version found"
+
+    test "x$CHECKNO" = "x0" && {
+        REGVER="--reg-version=1"
+    }
+
+    echo "Registry check $CHECKNO" | tee -a $LOG
+    CHECK="$($NETCMD registry check $REGVER 2>&1)"
+    RC=$?
+
+    ERRORSTR="$(echo "$CHECK" | grep -vE $ALLOWEDERR )"
+    test "x$RC" = "x0" || {
+        echo "upgrade check $CHECKNO failed:" | tee -a $LOG
+        return 1
+    }
+
+    test "x$ERRORSTR" = "x" || {
+        echo "upgrade check $CHECKNO failed:" | tee -a $LOG
+        echo "reason: $CHECK" | tee -a $LOG
+        return 1
+    }
+
+    test "x$CHECKDIFF" = "xcheckdiff" && {
+        $NETCMD registry export 'HKLM' $WORKSPACE/export_${CHECKNO}.reg >> $LOG
+        test "x$?" = "x0" || {
+            echo "Error: 'net registry export HKLM' failed" | tee -a $LOG
+        }
+
+        diff -q $WORKSPACE/export_0.reg $WORKSPACE/export_${CHECKNO}.reg >> $LOG
+        test "x$?" = "x0" || {
+            echo "Error: $WORKSPACE/export_0.reg differs from $WORKSPACE/export_${CHECKNO}.reg" | tee -a  $LOG
+            return 1
+        }
+    }
+
+    return 0
+}
+
+registry_upgrade()
+{
+    echo registry_upgrade $1 | tee -a $LOG
+
+    cp -v $DATADIR/registry.tdb $WORKSPACE/registry.tdb >> $LOG 2>&1
+
+    REGISTRY="${WORKSPACE}/registry.tdb"
+
+    test -e $REGISTRY || {
+        echo "Error: Database file not available" | tee -a $LOG
+        return 1
+    }
+
+    # create config file
+    echo '[global]' > ${CONFIG_FILE}
+    echo "	state directory = ${WORKSPACE}" >> ${CONFIG_FILE}
+
+    # set database INFO/version to 1
+    #$DBWRAP_TOOL $REGISTRY store 'INFO/version' uint32 1
+    #test "x$?" = "x0" || {
+    #    echo "Error: Can not set INFO/version" >> $LOG
+    #    return 1
+    #}
+
+    # check original registry.tdb
+    echo "$REGISTRY" | tee -a $LOG
+    registry_check 0
+    test "x$?" = "x0" || {
+        echo "Error: initial 'registry_check 0' failed" | tee -a $LOG
+        return 1
+    }
+
+    # trigger upgrade
+    echo "$NETCMD registry enumerate $REGPATH" >> $LOG
+    $NETCMD registry enumerate $REGPATH >> $LOG
+    test "x$?" = "x0" || {
+        echo "Error: 'net registry enumerate $REGPATH' failed" | tee -a $LOG
+        return 1
+    }
+
+    # check upgraded database
+    registry_check 1
+    test "x$?" = "x0" || {
+        echo "Error: 'registry_check 1' after upgrade failed" | tee -a $LOG
+        return 1
+    }
+
+    # export database for diffs
+    $NETCMD registry export 'HKLM' $WORKSPACE/export_0.reg | tee -a $LOG
+    test "x$?" = "x0" || {
+        echo "Error 'net registry export' failed" | tee -a $LOG
+        return 1
+    }
+
+    # remove version string
+    $DBWRAP_TOOL $REGISTRY delete INFO/version | tee -a $LOG
+    test "x$?" = "x0" || {
+        echo "Error: Can not remove INFO/version key from registry" | tee -a $LOG
+        return 1
+    }
+
+    # trigger upgrade on upgraded database
+    echo "$NETCMD registry enumerate $REGPATH" >> $LOG
+    $NETCMD registry enumerate $REGPATH >> $LOG 2>&1
+    test "x$?" = "x0" || {
+        echo "Error: 'net registry enumerate $REGPATH' failed" | tee -a $LOG
+        return 1
+    }
+
+    # check upgraded database again
+    registry_check 2 checkdiff
+    test "x$?" = "x0" || {
+        echo "Error: 'registry_check 2' after upgrade failed" | tee -a $LOG
+        return 1
+    }
+
+    # set database INFO/version to version 2
+    $DBWRAP_TOOL $REGISTRY store 'INFO/version' uint32 2
+    test "x$?" = "x0" || {
+        echo "Error: Can not set INFO/version" | tee -a $LOG
+        return 1
+    }
+
+    # trigger upgrade
+    $NETCMD registry enumerate $REGPATH >> $LOG
+    test "x$?" = "x0" || {
+        echo "Error: 'net registry enumerate $REGPATH' failed" | tee -a $LOG
+        return 1
+    }
+
+    # check upgraded database again
+    registry_check 3 checkdiff
+    test "x$?" = "x0" || {
+        echo "Error: 'registry_check 3' after upgrade failed" | tee -a $LOG
+        return 1
+    }
+}
+
+# remove old logs
+for OLDDIR in $(find ${PREFIX} -type d -name "${LOGDIR_PREFIX}_*") ; do
+	echo "removing old directory ${OLDDIR}"
+	rm -rf ${OLDDIR}
+done
+
+# remove old workspace
+rm -rf $WORKSPACE
+
+mkdir $WORKSPACE
+
+DIR=$(mktemp -d ${PREFIX}/${LOGDIR_PREFIX}_XXXXXX)
+LOG=$DIR/log
+
+testit "registry_upgrade" registry_upgrade || failed=`expr $failed + 1`
+
+if [ $failed -eq 0 ]; then
+    rm -r $DIR
+fi
+
+testok $0 $failed
+
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 02afde5..5906cf4 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -51,6 +51,8 @@ plantestsuite("samba3.blackbox.failure", "s3dc:local", [os.path.join(samba3srcdi
 
 plantestsuite("samba3.local_s3", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_local_s3.sh")])
 
+plantestsuite("samba3.blackbox.registry.upgrade", "s3dc:local", [os.path.join(samba3srcdir, "script/tests/test_registry_upgrade.sh"), binpath('net'), binpath('dbwrap_tool')])
+
 tests=[ "FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7", "LOCK9",
         "UNLINK", "BROWSE", "ATTR", "TRANS2", "TORTURE",
         "OPLOCK1", "OPLOCK2", "OPLOCK4", "STREAMERROR",


-- 
Samba Shared Repository


More information about the samba-cvs mailing list