| #! /bin/bash |
| # FS QA Test No. 074 |
| # |
| # fstest |
| # |
| #----------------------------------------------------------------------- |
| # Copyright (c) 2000-2003 Silicon Graphics, Inc. All Rights Reserved. |
| # |
| # This program is free software; you can redistribute it and/or |
| # modify it under the terms 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. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write the Free Software Foundation, |
| # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
| # |
| #----------------------------------------------------------------------- |
| # |
| # 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/fstest.$$.* $tmp.* |
| _cleanup_testdir |
| } |
| |
| # get standard environment, filters and checks |
| . ./common.rc |
| . ./common.filter |
| |
| _do_test() |
| { |
| _n="$1" |
| _param="$2" |
| |
| out=$testdir/fstest.$$.$_n |
| 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 children/' \ |
| -e 's/-l [0-9][0-9]*/-l loops/' \ |
| -e 's/-f [0-9][0-9]*/-f files/'` |
| |
| echo "" |
| echo "-----------------------------------------------" |
| echo "fstest.$_n : $_filter_param" |
| echo "-----------------------------------------------" |
| if ! $here/src/fstest $_param -p $out >>$seq.full |
| then |
| echo " fstest ($_param) returned $? - see $seq.full" |
| status=1 |
| exit |
| fi |
| |
| _check_test_fs |
| } |
| |
| _usage() |
| { |
| echo "$0: [-f files] [-l loops] [-n children]" |
| } |
| |
| _process_args() |
| { |
| while getopts "f:l:n:?" c $@ |
| do |
| case $c |
| in |
| f) |
| numfiles=$OPTARG |
| param_type="$param_type, overidde -f" |
| ;; |
| l) |
| numloops=$OPTARG |
| param_type="$param_type, overidde -l" |
| ;; |
| n) |
| numchildren=$OPTARG |
| param_type="$param_type, overidde -n" |
| ;; |
| ?) |
| _usage |
| exit |
| ;; |
| esac |
| done |
| } |
| |
| |
| # real QA test starts here |
| rm -f $here/$seq.full |
| |
| _supported_fs generic |
| _supported_os IRIX Linux |
| |
| # |
| # set params |
| # These params can take a while on different CPUs/OSs |
| # so we set them differently for different machines |
| # |
| if [ $HOSTOS == "IRIX" ]; then |
| if uname -R | grep -iq debug; then |
| # e.g. getting around 37secs for 1,1,1 on IP30 debug |
| numchildren=2 |
| numloops=1 |
| numfiles=2 |
| param_type="IRIX debug" |
| else |
| # getting around 1 sec 1,1,1 - 10secs 1,10,1 on IP30 nondebug |
| numloops=2 |
| numfiles=3 |
| numchildren=3 |
| param_type="IRIX nondebug" |
| fi |
| elif [ $HOSTOS == "Linux" ]; then |
| if uname -a | grep -q SMP; then |
| numloops=10 |
| numfiles=5 |
| numchildren=3 |
| param_type="Linux SMP" |
| else |
| numloops=2 |
| numfiles=3 |
| numchildren=3 |
| param_type="Linux UP" |
| fi |
| else |
| numloops=1 |
| numfiles=1 |
| numchildren=1 |
| param_type="Default" |
| fi |
| |
| # can override the params here |
| _process_args "$@" |
| |
| echo "Params are for $param_type" >>$seq.full |
| echo "Params: n = $numchildren l = $numloops f = $numfiles" >>$seq.full |
| |
| _setup_testdir |
| |
| _check_test_fs |
| |
| # Options: |
| # -F generate files with holes (default=no) |
| # -n num_children set number of child processes (default=1) |
| # -f num_files set number of files (default=1) |
| # -s file_size set file sizes (default=1MiB) |
| # -b block_size set block (IO) size (default=1024) |
| # -l loops set loop count (default=100) |
| # -m use mmap (default=no) |
| # -S use synchronous IO (default=no) |
| # -P preallocate space (default=no) |
| |
| size10=`expr 10 \* 1024 \* 1024` # 10 megabytes |
| size30=`expr 30 \* 1024 \* 1024` # 30 megabytes |
| |
| _do_test 0 "-l $numloops" |
| |
| _do_test 1 "-l $numloops -s $size10 -b 8192 -m" |
| |
| _do_test 2 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512" |
| |
| _do_test 3 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512 -m" |
| |
| _do_test 4 "-n $numchildren -F -l $numloops -f $numfiles -s $size10 -b 512 -mS" |