mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
7cfab6bc8d
Signed-off-by: Michael Adam <obnox@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
161 lines
3.3 KiB
Bash
Executable File
161 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
|
|
|
|
#
|
|
# List of parameters to skip when importing configuration files:
|
|
# They are forbidden in the registry and would lead import to fail.
|
|
#
|
|
SED_INVALID_PARAMS="{
|
|
s/state directory/;&/g
|
|
s/lock directory/;&/g
|
|
s/lock dir/;&/g
|
|
s/config backend/;&/g
|
|
s/include/;&/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()
|
|
(
|
|
DIR=$(mktemp -d ${PREFIX}/${LOGDIR_PREFIX}_XXXXXX)
|
|
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
|
|
|