Hi!
> Remove useless comments and abandon the operation which creates
> a 500MB image-file. If user wants to run these tests, a big block
> device should be specified by runltp with -z option.
>
> And we split tests in testscripts/fs_ro_tests into separate testcases,
> keep one entry per test in runtest/fs_readonly
>
> Signed-off-by: Xiaoguang Wang <[email protected]>
> ---
> runtest/fs_readonly | 57 +++++++-
> testscripts/test_robind.sh | 319
> +++++++++++++++++++--------------------------
> 2 files changed, 188 insertions(+), 188 deletions(-)
>
> diff --git a/runtest/fs_readonly b/runtest/fs_readonly
> index 96f12c3..437b94e 100644
> --- a/runtest/fs_readonly
> +++ b/runtest/fs_readonly
> @@ -1 +1,56 @@
> -ROBind $LTPROOT/testscripts/test_robind.sh
> +test_robind01 test_robind.sh -i 1 -D $LTP_BIG_DEV
> +test_robind02 test_robind.sh -i 2 -D $LTP_BIG_DEV
> +test_robind03 test_robind.sh -i 3 -D $LTP_BIG_DEV
> +test_robind04 test_robind.sh -i 4 -D $LTP_BIG_DEV
> +test_robind05 test_robind.sh -i 5 -D $LTP_BIG_DEV
> +test_robind06 test_robind.sh -i 6 -D $LTP_BIG_DEV
> +test_robind07 test_robind.sh -i 7 -D $LTP_BIG_DEV
> +test_robind08 test_robind.sh -i 8 -D $LTP_BIG_DEV
> +test_robind09 test_robind.sh -i 9 -D $LTP_BIG_DEV
> +test_robind10 test_robind.sh -i 10 -D $LTP_BIG_DEV
> +test_robind11 test_robind.sh -i 11 -D $LTP_BIG_DEV
> +test_robind12 test_robind.sh -i 12 -D $LTP_BIG_DEV
> +test_robind13 test_robind.sh -i 13 -D $LTP_BIG_DEV
> +test_robind14 test_robind.sh -i 14 -D $LTP_BIG_DEV
> +test_robind15 test_robind.sh -i 15 -D $LTP_BIG_DEV
> +test_robind16 test_robind.sh -i 16 -D $LTP_BIG_DEV
> +test_robind17 test_robind.sh -i 17 -D $LTP_BIG_DEV
> +test_robind18 test_robind.sh -i 18 -D $LTP_BIG_DEV
> +test_robind19 test_robind.sh -i 19 -D $LTP_BIG_DEV
> +test_robind20 test_robind.sh -i 20 -D $LTP_BIG_DEV
> +test_robind21 test_robind.sh -i 21 -D $LTP_BIG_DEV
> +test_robind22 test_robind.sh -i 22 -D $LTP_BIG_DEV
> +test_robind23 test_robind.sh -i 23 -D $LTP_BIG_DEV
> +test_robind24 test_robind.sh -i 24 -D $LTP_BIG_DEV
> +test_robind25 test_robind.sh -i 25 -D $LTP_BIG_DEV
> +test_robind26 test_robind.sh -i 26 -D $LTP_BIG_DEV
> +test_robind27 test_robind.sh -i 27 -D $LTP_BIG_DEV
> +test_robind28 test_robind.sh -i 28 -D $LTP_BIG_DEV
> +test_robind29 test_robind.sh -i 29 -D $LTP_BIG_DEV
> +test_robind30 test_robind.sh -i 30 -D $LTP_BIG_DEV
> +test_robind31 test_robind.sh -i 31 -D $LTP_BIG_DEV
> +test_robind32 test_robind.sh -i 32 -D $LTP_BIG_DEV
> +test_robind33 test_robind.sh -i 33 -D $LTP_BIG_DEV
> +test_robind34 test_robind.sh -i 34 -D $LTP_BIG_DEV
> +test_robind35 test_robind.sh -i 35 -D $LTP_BIG_DEV
> +test_robind36 test_robind.sh -i 36 -D $LTP_BIG_DEV
> +test_robind37 test_robind.sh -i 37 -D $LTP_BIG_DEV
> +test_robind38 test_robind.sh -i 38 -D $LTP_BIG_DEV
> +test_robind39 test_robind.sh -i 39 -D $LTP_BIG_DEV
> +test_robind40 test_robind.sh -i 40 -D $LTP_BIG_DEV
> +test_robind41 test_robind.sh -i 41 -D $LTP_BIG_DEV
> +test_robind42 test_robind.sh -i 42 -D $LTP_BIG_DEV
> +test_robind43 test_robind.sh -i 43 -D $LTP_BIG_DEV
> +test_robind44 test_robind.sh -i 44 -D $LTP_BIG_DEV
> +test_robind45 test_robind.sh -i 45 -D $LTP_BIG_DEV
> +test_robind46 test_robind.sh -i 46 -D $LTP_BIG_DEV
> +test_robind47 test_robind.sh -i 47 -D $LTP_BIG_DEV
> +test_robind48 test_robind.sh -i 48 -D $LTP_BIG_DEV
> +test_robind49 test_robind.sh -i 49 -D $LTP_BIG_DEV
> +test_robind50 test_robind.sh -i 50 -D $LTP_BIG_DEV
> +test_robind51 test_robind.sh -i 51 -D $LTP_BIG_DEV
> +test_robind52 test_robind.sh -i 52 -D $LTP_BIG_DEV
> +test_robind53 test_robind.sh -i 53 -D $LTP_BIG_DEV
> +test_robind54 test_robind.sh -i 54 -D $LTP_BIG_DEV
> +test_robind55 test_robind.sh -i 55 -D $LTP_BIG_DEV
> +test_robind56 test_robind.sh -i 56 -D $LTP_BIG_DEV
What about passing the command line from fs_ro_test directly here
instead of the line number?
> diff --git a/testscripts/test_robind.sh b/testscripts/test_robind.sh
> index 4c01f4e..82ca943 100755
> --- a/testscripts/test_robind.sh
> +++ b/testscripts/test_robind.sh
> @@ -23,15 +23,16 @@
> # FUNCTIONALITY: File system tests for normal mount, bind mount and RO
> mount
> #
> # DESCRIPTION: Performs filesystems tests for RO mount.
> -# For filesystem's like ext2, ext3, reiserfs, jfs & xfs.
> -# This test creates an image-file and
> +# For filesystem, like ext2, ext3, reiserfs, jfs & xfs,
> +# This test needs a big block device(>=500MB is ok), and you can specify
> +# it by -z option when running runltp.
> # a) mounts on dir1,
> # b) mount --bind dir2
> # c) mount -o remount,ro
> # It verifies the tests on a) and b) works correctly.
> -# For the c) option it checks that the tests are not able to write into
> dir.
> +# For the c) option it checks that the tests are not able to write
> +# into dir.
> # Then it executes the tests from flat-file
> {LTPROOT}/testscripts/fs_ro_tests
> -# Check the logs /tmp/fs$$/errs.log and /tmp/fs$$/pass.log for
> pass/failures.
>
> #===============================================================================
> #
> # CHANGE HISTORY:
> @@ -41,161 +42,97 @@
> # This script is based on the Dave Hansen script for testing the robind.
>
> #*******************************************************************************
>
> -#trace_logic=${trace_logic:-"set -x"}
> -$trace_logic
> -
> -# The test case ID, the test case count and the total number of test case
> -TCID=${TCID:-test_robind.sh}
> -TST_TOTAL=1
> -TST_COUNT=1
> -export TCID
> -export TST_COUNT
> -export TST_TOTAL
> +export TCID="test_robind"
> +export TST_TOTAL=3
> +export TST_COUNT=1
>
> usage()
> {
> - cat << EOF
> - usage: $0 [ext3,ext2,jfs,xfs,reiserfs,ramfs]
> + cat << EOF
> + usage: $0 -i command_id -D device [ext3,ext2,jfs,xfs,reiserfs,ramfs]
> +
> + This script verifies ReadOnly-filesystem, by mounting block device and
> + executing the filesystem tests.
>
> - This script verifies ReadOnly-filesystem, by mounting imagefile and
> - executing the filesystem tests.
> + OPTIONS
> + -h display this message and exit
> + -i command index in fs_ro_tests
> + -D theese tests require an unmounted block device
>
> - OPTIONS
> - -h display this message and exit
> EOF
> + exit 1
> }
>
> DIRS="dir1 dir2-bound dir3-ro"
> -TMPDIR=/tmp/fs$$
> trap cleanup ERR
> trap cleanup INT
>
> -#==============================================================================
> -# FUNCTION NAME: cleanup
> -#
> -# FUNCTION DESCRIPTION: Unmounts dir, Removes dir's, files created by the
> tests.
> -#
> -# PARAMETERS: The $fs_image .
> -#
> -# RETURNS: None.
> -#==============================================================================
> +# umount dirs
> function cleanup
> {
> - umount ${TMPDIR}/dir3-ro 2> /dev/null > /dev/null
> - umount ${TMPDIR}/dir2-bound 2> /dev/null 1> /dev/null
> - umount ${TMPDIR}/dir1 2> /dev/null 1> /dev/null
> - if [ ! -z $1 ]; then {
> - rm -rf $1 || true
> - }
> - fi
> + umount ${TESTDIR}/dir3-ro 2> /dev/null > /dev/null
> + umount ${TESTDIR}/dir2-bound 2> /dev/null 1> /dev/null
> + umount ${TESTDIR}/dir1 2> /dev/null 1> /dev/null
I would rather see the redirection removed, umount does not print
anything in case it's sucessful, so this only hides error messages and
makes it harder to do any debugging.
> }
>
> -#===============================================================================
> -# FUNCTION NAME: setup
> -#
> -# FUNCTION DESCRIPTION: Does the initailization
> -#
> -# PARAMETERS: File_systems (if any )
> -#
> -# RETURNS: None.
> -#===============================================================================
> +# do the initailization
> +# parameters: file_systems (if any )
> function setup
> {
> - mkdir ${TMPDIR}
> - FAILLOG="$TMPDIR/errs.log"
> - PASSLOG="$TMPDIR/pass.log"
> -
> - for i in $DIRS; do
> - rm -rf ${TMPDIR}/$i || true
> - mkdir -p ${TMPDIR}/$i
> - done;
> -
> - # Populating the default FS as ext3, if FS is not given
> - if [ -z "$*" ]; then
> - FSTYPES="ext3"
> - else
> - FSTYPES="$*"
> - fi
> -
> - # set the LTPROOT directory
> - cd `dirname $0`
> - echo "${PWD}" | grep testscripts > /dev/null 2>&1
> - if [ $? -eq 0 ]; then
> - cd ..
> - export LTPROOT="${PWD}"
> - export PATH="${PATH}:${LTPROOT}/testcases/bin"
> - fi
> -
> - FS_Tests="${LTPROOT}/testscripts/fs_ro_tests"
> - cd ${TMPDIR}
> + for i in $DIRS
> + do
> + rm -rf ${TESTDIR}/$i || true
> + mkdir -p ${TESTDIR}/$i
> + done
> +
> + # populating the default FS as ext3, if FS is not given
> + if [ -z "$*" ]; then
> + FSTYPES="ext3"
> + else
> + FSTYPES="$*"
> + fi
> +
> + fs_ro_tests="${LTPROOT}/testscripts/fs_ro_tests"
> }
>
> -#=============================================================================
> -# FUNCTION NAME: testdir
> -#
> -# FUNCTION DESCRIPTION: The core function where it runs the tests
> -#
> -# PARAMETERS: dir_name, file_systems, Read_only flag = [true|false]
> -#
> -# RETURNS: None.
> -#=============================================================================
> +# the core function where it runs the tests
> +# $1 - directory where to run tests
> +# $2 - file system type
> +# $3 - read-only flag [true|false]
> function testdir
> {
> - dir=$1
> - fs=$2
> - RO=$3
> - pushd $dir
> - testnums=`wc -l $FS_Tests | cut -f1 -d" "`
> - status=0
> -
> - echo "---------------------------------------------------" >> $FAILLOG ;
> - echo "Running RO-FileSystem Tests for $dir $fs filesystem" >> $FAILLOG ;
> - echo "---------------------------------------------------" >> $FAILLOG ;
> -
> - echo "---------------------------------------------------" >> $PASSLOG ;
> - echo "Running RO-FileSystem Tests for $dir $fs filesystem" >> $PASSLOG ;
> - echo "---------------------------------------------------" >> $PASSLOG ;
> -
> - export TDIRECTORY=$PWD ;
> - echo TDIR is $TDIRECTORY;
> - if [ $RO == false ] ; then # Testing Read-Write
> dir
> - for tests in `seq $testnums` ; do
> - cmd=`cat $FS_Tests | head -$tests | tail -n 1`
> -# eval $cmd 2>&1 /dev/null
> - eval $cmd 2> /dev/null 1> /dev/null
> - if [ $? -eq 0 ]; then
> - echo "$tests. '$cmd' PASS" >> $PASSLOG
> - else
> - echo "$tests. '$cmd' FAIL " >> $FAILLOG
> - echo "TDIR is $TDIRECTORY" >> $FAILLOG;
> - status=1
> - fi
> - done
> -
> - else # Testing Read-Only
> dir
> - for tests in `seq $testnums` ; do
> - cmd=`cat $FS_Tests | head -$tests | tail -n 1`
> - eval $cmd 2> /dev/null 1> /dev/null
> - if [ $? -ne 0 ]; then
> - echo "$tests. '$cmd' PASS " >> $PASSLOG
> - else
> - echo "$tests. '$cmd' FAIL" >> $FAILLOG
> - status=1
> - fi
> - done
> - fi
> - if [ $status == 1 ] ; then
> - echo "RO-FileSystem Tests FAILED for $dir $fs filesystem" >> $FAILLOG
> - echo >> $FAILLOG
> - retcode=$status
> - else
> - echo "RO-FileSystem Tests PASSed for $dir $fs filesystem" >> $PASSLOG
> - echo >> $PASSLOG
> - fi
> - # Remove all the temp-files created.
> - eval rm -rf ${TMPDIR}/${dir}/* > /dev/null 2>&1 || true
> - unset TDIRECTORY
> - popd
> + local dir=$1
> + local fs_type=$2
> + local RO=$3
> + local tst_result=0
> +
> + cd $dir
> +
> + cmd=`cat $fs_ro_tests | head -$command_id | tail -n 1`
> + tst_resm TINFO "command: $cmd"
> +
> + # we need to export TMPDIR, in case test calls tst_rmdir()
> + export TMPDIR=$TESTDIR/$dir
> + eval $cmd > $TESTDIR/test.log 2>&1
> + tst_result=$?
> +
> + # if tst_result isn't 0 and read-only flag is false, the test failed
> + # or if tst_result is 0 and read-only flag is true, the test failed.
> + if [ "$RO" = "false" -a $tst_result -ne 0 -o "$RO" = "true" -a
> $tst_result -eq 0 ];then
> + tst_resm TINFO "error info:"
> + cat $TESTDIR/test.log
> + tst_resm TFAIL "RO-FileSystem Tests FAILED for \
> + $dir $fs_type read-only flag: $RO"
> + retcode=1
> + else
> + tst_resm TPASS "RO-FileSystem Tests PASSED for \
> + $dir $fs_type read-only flag: $RO"
> + fi
> +
> + # remove all the temp files created.
> + rm -f $TESTDIR/test.log
> + rm -rf $TESTDIR/$dir/* > /dev/null 2>&1 || true
> + cd ..
> }
>
>
> #=============================================================================
> @@ -204,62 +141,70 @@ function testdir
> # in this test's prolog.
>
> #=============================================================================
> retcode=0
> -while getopts h: OPTION; do
> - case $OPTION in
> - h)
> - usage
> - exit 1
> - ;;
> - ?)
> - usage
> - exit 1
> - ;;
> - esac
> +
> +TESTDIR=$LTPROOT/testcases/bin/test_robind$$
You must not create files under LTPROOT, create a subdirectory inside
TMPDIR instead (use mktemp with testcase name in template).
> +mkdir -p $TESTDIR || \
> +{
> + tst_brkm TCONF ignored "failed to create $TESTDIR"
> + exit 1
> +}
> +cd ${TESTDIR}
> +
> +while getopts i:D:h: OPTION; do
> + case $OPTION in
> + i)
> + command_id=$OPTARG;;
> + D)
> + device=$OPTARG;;
> + h)
> + usage;;
> + ?)
> + usage;;
> + esac
> done
> -# Does the initial setups
> -oldpwd=${PWD}
> +shift $((OPTIND-1))
> +
> +# does the initial setups
> setup $*
>
> +testnums=`wc -l $fs_ro_tests | cut -f1 -d " "`
> +if [ $command_id -lt 1 -o $command_id -gt $testnums ]; then
> + tst_brkm TCONF ignored " $command_id is invalid"
> + exit 0
> +fi
> +
> # Executes the tests for differnt FS's
> -# Creates an image file of 500 MB and mounts it.
> for fstype in $FSTYPES; do
> - image=$fstype.img
> - dd if=/dev/zero of=$image bs=$((1<<20)) count=500 2> /dev/null 1>
> /dev/null
> - if [ $? -ne 0 ] ; then
> - tst_resm, TFAIL "Unable to create image "
> - tst_resm, TFAIL "Free Disk space of 512MB is required in /tmp fs"
> - tst_resm, TFAIL "Please free it and rerun thank you.."
> - rm -f $image
> - exit -1
> - fi
> -
> - OPTS="-F"
> - if [ "$fstype" == "reiserfs" ]; then
> - OPTS="-f --journal-size 513 -q"
> - elif [ "$fstype" == "jfs" ]; then
> - OPTS="-f"
> - elif [ "$fstype" == "xfs" ]; then
> - OPTS=""
> - fi
> -
> - if [ "$fstype" != "ramfs" ] ; then
> - mkfs.$fstype $OPTS $image 2> /dev/null 1> /dev/null
> - fi
> + opts="-F"
> + if [ "$fstype" == "reiserfs" ]; then
> + opts="-f --journal-size 513 -q"
> + elif [ "$fstype" == "jfs" ]; then
> + opts="-f"
> + elif [ "$fstype" == "xfs" ]; then
> + opts=""
> + fi
> +
> + if [ "$fstype" != "ramfs" ]; then
> + mkfs.$fstype $opts $device 2> /dev/null 1> /dev/null
> + fi
> +
> + mount -t $fstype $device dir1
> + mount --bind dir1 dir2-bound || exit -1
> + mount --bind dir1 dir3-ro || exit -1
> + mount -o remount,ro,bind dir1 dir3-ro || exit -1
> +
> + testdir dir1 $fstype false
> + testdir dir2-bound $fstype false
> + testdir dir3-ro $fstype true
> + cleanup
> +done
--
Cyril Hrubis
[email protected]
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list