1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00
samba-mirror/source3/script/tests/test_net_registry_roundtrip.sh
Andrew Bartlett 28ad50e5fd s3-selftest: Set path to bin/net and bin/wbinfo in command line to test scripts
This makes it easier to reproduce these tests outside the test
environment, as we rely less on environment variables.

Andrew Bartlett
2011-09-12 20:42:22 +10:00

166 lines
3.3 KiB
Bash
Executable File

#!/bin/sh
#
# Blackbox test for net conf/registry roundtrips.
#
# Copyright (C) 2010 Gregor Beck <gbeck@sernet.de>
# Copyright (C) 2011 Michael Adam <obnox@samba.org>
if [ $# -lt 3 ]; then
cat <<EOF
Usage: test_net_registry_roundtrip.sh SCRIPTDIR SERVERCONFFILE NET CONFIGURATION RPC
EOF
exit 1;
fi
SCRIPTDIR="$1"
SERVERCONFFILE="$2"
NET="$3"
CONFIGURATION="$4"
RPC="$5"
NET="$VALGRIND ${NET} $CONFIGURATION"
if test "x${RPC}" = "xrpc" ; then
NETCMD="${NET} -U${USERNAME}%${PASSWORD} -I ${SERVER_IP} rpc"
else
NETCMD="${NET}"
fi
incdir=`dirname $0`/../../../testprogs/blackbox
. $incdir/subunit.sh
failed=0
SED_INVALID_PARAMS="{
s/lock directory/;&/g
s/lock dir/;&/g
s/modules dir/;&/g
s/logging/;&/g
s/status/;&/g
s/logdir/;&/g
s/read prediction/;&/g
s/mkprofile/;&/g
s/valid chars/;&/g
s/timesync/;&/g
s/sambaconf/;&/g
s/logtype/;&/g
s/servername/;&/g
s/postscript/;&/g
}"
REGPATH="HKLM\Software\Samba"
conf_roundtrip_step() {
echo "CMD: $*" >>$LOG
$@ 2>>$LOG
RC=$?
echo "RC: $RC" >> $LOG
test "x$RC" = "x0" || {
echo "ERROR: $@ failed (RC=$RC)" | tee -a $LOG
}
return $RC
# echo -n .
}
LOGDIR_PREFIX="conf_roundtrip"
conf_roundtrip()
{
local DIR=$(mktemp -d ${PREFIX}/${LOGDIR_PREFIX}_XXXXXX)
local LOG=$DIR/log
echo conf_roundtrip $1 > $LOG
sed -e "$SED_INVALID_PARAMS" $1 >$DIR/conf_in
conf_roundtrip_step $NETCMD conf drop
test "x$?" = "x0" || {
return 1
}
test -z "$($NETCMD conf list)" 2>>$LOG
if [ "$?" = "1" ]; then
echo "ERROR: conf drop failed" | tee -a $LOG
return 1
fi
conf_roundtrip_step $NETCMD conf import $DIR/conf_in
test "x$?" = "x0" || {
return 1
}
conf_roundtrip_step $NETCMD conf list > $DIR/conf_exp
test "x$?" = "x0" || {
return 1
}
grep "\[global\]" $DIR/conf_exp >/dev/null 2>>$LOG
if [ "$?" = "1" ]; then
echo "ERROR: conf import => conf export failed" | tee -a $LOG
return 1
fi
conf_roundtrip_step $NETCMD -d10 registry export $REGPATH $DIR/conf_exp.reg
test "x$?" = "x0" || {
return 1
}
conf_roundtrip_step $NETCMD conf drop
test "x$?" = "x0" || {
return 1
}
test -z "$($NETCMD conf list)" 2>>$LOG
if [ "$?" = "1" ]; then
echo "ERROR: conf drop failed" | tee -a $LOG
return 1
fi
conf_roundtrip_step $NETCMD registry import $DIR/conf_exp.reg
test "x$?" = "x0" || {
return 1
}
conf_roundtrip_step $NETCMD conf list >$DIR/conf_out
test "x$?" = "x0" || {
return 1
}
diff -q $DIR/conf_out $DIR/conf_exp >> $LOG
if [ "$?" = "1" ]; then
echo "ERROR: registry import => conf export failed" | tee -a $LOG
return 1
fi
conf_roundtrip_step $NETCMD registry export $REGPATH $DIR/conf_out.reg
test "x$?" = "x0" || {
return 1
}
diff -q $DIR/conf_out.reg $DIR/conf_exp.reg >>$LOG
if [ "$?" = "1" ]; then
echo "Error: registry import => registry export failed" | tee -a $LOG
return 1
fi
rm -r $DIR
}
CONF_FILES=$SERVERCONFFILE
# remove old logs:
for OLDDIR in $(find ${PREFIX} -type d -name "${LOGDIR_PREFIX}_*") ; do
echo "removing old directory ${OLDDIR}"
rm -rf ${OLDDIR}
done
for conf_file in $CONF_FILES
do
testit "conf_roundtrip $conf_file" \
conf_roundtrip $conf_file \
|| failed=`expr $failed + 1`
done
testok $0 $failed