Add a test to run fsx with the AIO flag switched on, in combination with various...
authorNathan Scott <nathans@sgi.com>
Thu, 17 Feb 2005 02:52:28 +0000 (02:52 +0000)
committerNathan Scott <nathans@sgi.com>
Thu, 17 Feb 2005 02:52:28 +0000 (02:52 +0000)
Merge of master-melb:xfs-cmds:21536a by kenmcd.

075
112 [new file with mode: 0755]
112.out [new file with mode: 0755]
group

diff --git a/075 b/075
index fdedce2d5d85b5529f1aaf65e385a458b907899c..bf32cb8c7c8a7ea158b22a6ef809f5bb9b1c0055 100755 (executable)
--- a/075
+++ b/075
@@ -1,7 +1,7 @@
 #! /bin/sh
 # FS QA Test No. 075
 #
-# fsx
+# fsx (non-AIO variant)
 #
 #-----------------------------------------------------------------------
 # Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
diff --git a/112 b/112
new file mode 100755 (executable)
index 0000000..55e0d64
--- /dev/null
+++ b/112
@@ -0,0 +1,170 @@
+#! /bin/sh
+# FS QA Test No. 112
+#
+# fsx (AIO variant, based on 075)
+#
+#-----------------------------------------------------------------------
+# Copyright (c) 2005 Silicon Graphics, Inc.  All Rights Reserved.
+# 
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+# 
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# 
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like.  Any license provided herein, whether implied or
+# otherwise, applies only to this software file.  Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+# 
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write the Free Software Foundation, Inc., 59
+# Temple Place - Suite 330, Boston MA 02111-1307, USA.
+# 
+# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+# Mountain View, CA  94043, or:
+# 
+# http://www.sgi.com 
+# 
+# For further information regarding this notice, see: 
+# 
+# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+#-----------------------------------------------------------------------
+#
+# creator
+owner=nathans@sgi.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=0       # success is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+    cd /
+    rm -rf $testdir/fsx.* $tmp.*
+    _cleanup_testdir
+}
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_do_test()
+{
+    _n="$1"
+    _param="$2"
+
+    out=$testdir/fsx
+    rm -rf $out
+    if ! mkdir $out
+    then
+       echo "    failed to mkdir $out"
+       status=1
+       exit
+    fi
+
+    _filter_param=`echo "$_param" | sed\
+       -e 's/-N [0-9][0-9]*/-N numops/' \
+       -e 's/-l [0-9][0-9]*/-l filelen/'`
+
+    echo ""
+    echo "-----------------------------------------------"
+    echo "fsx.$_n : $_filter_param"
+    echo "-----------------------------------------------"
+
+    # This cd and use of -P gets full debug on $here (not TEST_DEV)
+    cd $out
+    if ! $here/ltp/fsx $_param -P $here $seq.$_n >/dev/null
+    then
+       echo "    fsx ($_param) returned $? - see $seq.$_n.full"
+       mv $seq.$_n.fsxlog $here/$seq.$_n.full
+       status=1
+       exit
+    fi
+
+    cd $here
+    _check_test_fs
+}
+
+_usage()
+{
+    echo "$0: [-l filelen] [-n numops1] [-N numops2]"
+}
+
+_process_args()
+{
+    while getopts "l:n:N:?" c $@
+    do
+        case $c
+        in
+            l)
+                filelen=$OPTARG
+               param_type="$param_type, overidde -l"
+                ;;
+            N)
+                numops2=$OPTARG
+               param_type="$param_type, overidde -N"
+                ;;
+            n)
+                numops1=$OPTARG
+               param_type="$param_type, overidde -n"
+                ;;
+           ?)
+               _usage
+               exit    
+               ;;
+       esac
+    done
+}
+
+
+# real QA test starts here
+_supported_fs xfs
+_supported_os Linux
+
+[ -x $here/ltp/aio-stress ] || \
+       _notrun "fsx not built with AIO for this platform"
+
+size10=`expr 10 \* 1024 \* 1024`       # 10 megabytes
+filelen=$size10
+numops1=1000
+numops2=10000
+
+# can override the params here
+_process_args "$@"
+
+echo "Params are for $param_type" >>$seq.full
+echo "Params: n = $numops1 N = $numops2 l = $filelen" >>$seq.full
+
+_setup_testdir
+
+rm -f $here/$seq.full
+echo "brevity is wit..."
+
+_check_test_fs
+
+# Options:
+# -d: debug output for all operations
+# -l flen: the upper bound on file size (default 262144)
+# -o oplen: the upper bound on operation size
+# -N numops: total # operations to do (default infinity)
+# -P: save .fsxlog and .fsxgood files in dirpath (default ./)
+# -S seed: for random # generator (default 1) 0 gets timestamp
+# -x: pre-allocate file space, exercising unwritten extents
+# -A: use the AIO system calls
+
+_do_test 0 "-A -d -N $numops1 -S 0"
+_do_test 1 "-A -d -N $numops1 -S 0 -x"
+_do_test 2 "-A -d -N $numops2 -l $filelen -S 0"
+_do_test 3 "-A -d -N $numops2 -l $filelen -S 0 -x"
+
+rm -f $seq.*.fsx{good,log}
+exit 0
diff --git a/112.out b/112.out
new file mode 100755 (executable)
index 0000000..7d1709c
--- /dev/null
+++ b/112.out
@@ -0,0 +1,18 @@
+QA output created by 112
+brevity is wit...
+
+-----------------------------------------------
+fsx.0 : -A -d -N numops -S 0
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.1 : -A -d -N numops -S 0 -x
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.2 : -A -d -N numops -l filelen -S 0
+-----------------------------------------------
+
+-----------------------------------------------
+fsx.3 : -A -d -N numops -l filelen -S 0 -x
+-----------------------------------------------
diff --git a/group b/group
index 98088d0c67db2f52f82572da2c7bccd02085e516..ff5b85b486e33c8ed85c715cc40f02a834536349 100644 (file)
--- a/group
+++ b/group
@@ -72,6 +72,9 @@ ioctl         nathans@sgi.com
 # udf filesystem
 udf            ajones@sgi.com
 
+# AIO operations
+aio            nathans@sgi.com
+
 # test-group association ... one line per test
 #
 001 rw dir udf auto
@@ -178,4 +181,5 @@ udf         ajones@sgi.com
 102 udf auto
 103 metadata dir ioctl auto
 104 growfs ioctl
+112 rw aio auto
 113 rw aio auto