All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xiaoguang Wang <wangxg.fnst@cn.fujitsu.com>
To: ltp-list@lists.sourceforge.net
Subject: [LTP] [PATCH] testscripts/test_robind.sh: cleanup and make some fixes
Date: Thu, 19 Dec 2013 23:11:37 +0800	[thread overview]
Message-ID: <52B30CA9.2060509@cn.fujitsu.com> (raw)


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 <wangxg.fnst@cn.fujitsu.com>
---
 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
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
 }
 
-#===============================================================================
-# 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$$
+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
 
-    mount -t $fstype -o loop $image dir1
-    mount --bind dir1 dir2-bound || exit -1
-    mount --bind dir1 dir3-ro    || exit -1
-    mount -o remount,ro dir3-ro  || exit -1
 
-    testdir dir1 $fstype false
-    testdir dir2-bound $fstype false
-    testdir dir3-ro $fstype true
-    cleanup $image
+for i in $DIRS
+do
+	rm -rf ./$i
 done
+cd $LTPROOT
+rm -rf $TESTDIR
 
-    for i in $DIRS; do
-        rm -rf ./$i || true
-    done;
-    cd $oldpwd || true
-    exit $retcode
-
+exit $retcode
-- 
1.8.2.1


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

             reply	other threads:[~2013-12-19 15:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-19 15:11 Xiaoguang Wang [this message]
2014-02-06 15:48 ` [LTP] [PATCH] testscripts/test_robind.sh: cleanup and make some fixes chrubis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52B30CA9.2060509@cn.fujitsu.com \
    --to=wangxg.fnst@cn.fujitsu.com \
    --cc=ltp-list@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.