diff options
Diffstat (limited to 'source4/client/tests/test_cifsdd.sh')
-rwxr-xr-x | source4/client/tests/test_cifsdd.sh | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/source4/client/tests/test_cifsdd.sh b/source4/client/tests/test_cifsdd.sh new file mode 100755 index 0000000..21a8840 --- /dev/null +++ b/source4/client/tests/test_cifsdd.sh @@ -0,0 +1,77 @@ +#!/bin/sh + +# Basic script to make sure that cifsdd can do both local and remote I/O. + +if [ $# -lt 4 ]; then + cat <<EOF +Usage: test_cifsdd.sh SERVER USERNAME PASSWORD DOMAIN +EOF + exit 1 +fi + +SERVER=$1 +USERNAME=$2 +PASSWORD=$3 +DOMAIN=$4 + +. $(dirname $0)/../../../testprogs/blackbox/subunit.sh + +samba4bindir="$BINDIR" +DD="$samba4bindir/cifsdd" + +SHARE=tmp +DEBUGLEVEL=1 + +runcopy() +{ + message="$1" + shift + + testit "$message" $VALGRIND $DD $CONFIGURATION --debuglevel=$DEBUGLEVEL -W "$DOMAIN" -U "$USERNAME"%"$PASSWORD" \ + "$@" || failed=$(expr $failed + 1) +} + +compare() +{ + testit "$1" cmp "$2" "$3" || failed=$(expr $failed + 1) +} + +sourcefile=tempfile.src.$$ +sourcepath=${SELFTEST_TMPDIR}/$sourcefile +destfile=tempfile.dst.$$ +destpath=${SELFTEST_TMPDIR}/$destfile + +# Create a source file with arbitrary contents +dd if=$DD of=$sourcepath bs=1024 count=50 >/dev/null + +ls -l $sourcepath + +for bs in 512 4k 48k; do + + echo "Testing $bs block size ..." + + # Check whether we can do local IO + runcopy "Testing local -> local copy" if=$sourcepath of=$destpath bs=$bs + compare "Checking local differences" $sourcepath $destpath + + # Check whether we can do a round trip + runcopy "Testing local -> remote copy" \ + if=$sourcepath of=//$SERVER/$SHARE/$sourcefile bs=$bs + runcopy "Testing remote -> local copy" \ + if=//$SERVER/$SHARE/$sourcefile of=$destpath bs=$bs + compare "Checking differences" $sourcepath $destpath + + # Check that copying within the remote server works + runcopy "Testing local -> remote copy" \ + if=//$SERVER/$SHARE/$sourcefile of=//$SERVER/$SHARE/$sourcefile bs=$bs + runcopy "Testing remote -> remote copy" \ + if=//$SERVER/$SHARE/$sourcefile of=//$SERVER/$SHARE/$destfile bs=$bs + runcopy "Testing remote -> local copy" \ + if=//$SERVER/$SHARE/$destfile of=$destpath bs=$bs + compare "Checking differences" $sourcepath $destpath + +done + +rm -f $sourcepath $destpath + +exit $failed |