fsx: Replace use of bzero() with memset()
[xfstests-dev.git] / 074
1 #! /bin/sh
2 # FS QA Test No. 074
3 #
4 # fstest
5 #
6 #-----------------------------------------------------------------------
7 # Copyright (c) 2000-2003 Silicon Graphics, Inc.  All Rights Reserved.
8 #-----------------------------------------------------------------------
9 #
10 # creator
11 owner=nathans@sgi.com
12
13 seq=`basename $0`
14 echo "QA output created by $seq"
15
16 here=`pwd`
17 tmp=/tmp/$$
18 status=0        # success is the default!
19 trap "_cleanup; exit \$status" 0 1 2 3 15
20
21 _cleanup()
22 {
23     cd /
24     rm -rf $testdir/fstest.$$.* $tmp.*
25     _cleanup_testdir
26 }
27
28 # get standard environment, filters and checks
29 . ./common.rc
30 . ./common.filter
31
32 _do_test()
33 {
34     _n="$1"
35     _param="$2"
36
37     out=$testdir/fstest.$$.$_n
38     rm -rf $out
39     if ! mkdir $out
40     then
41         echo "    failed to mkdir $out"
42         status=1
43         exit
44     fi
45
46     _filter_param=`echo "$_param" | sed\
47         -e 's/-n [0-9][0-9]*/-n children/' \
48         -e 's/-l [0-9][0-9]*/-l loops/' \
49         -e 's/-f [0-9][0-9]*/-f files/'`
50     
51     echo ""
52     echo "-----------------------------------------------"
53     echo "fstest.$_n : $_filter_param"
54     echo "-----------------------------------------------"
55     if ! $here/src/fstest $_param -p $out >>$seq.full
56     then
57         echo "    fstest ($_param) returned $? - see $seq.full"
58         status=1
59         exit
60     fi
61
62     _check_test_fs
63 }
64
65 _usage()
66 {
67     echo "$0: [-f files] [-l loops] [-n children]"
68 }
69
70 _process_args()
71 {
72     while getopts "f:l:n:?" c $@
73     do
74         case $c
75         in
76             f)
77                 numfiles=$OPTARG
78                 param_type="$param_type, overidde -f"
79                 ;;
80             l)
81                 numloops=$OPTARG
82                 param_type="$param_type, overidde -l"
83                 ;;
84             n)
85                 numchildren=$OPTARG
86                 param_type="$param_type, overidde -n"
87                 ;;
88             ?)
89                 _usage
90                 exit    
91                 ;;
92         esac
93     done
94 }
95
96
97 # real QA test starts here
98 rm -f $here/$seq.full
99
100 _supported_fs xfs udf nfs
101 _supported_os IRIX Linux
102
103 #
104 # set params
105 # These params can take a while on different CPUs/OSs
106 # so we set them differently for different machines
107 #
108 if [ $HOSTOS == "IRIX" ]; then 
109     if uname -R | grep -iq debug; then 
110         # e.g. getting around 37secs for 1,1,1 on IP30 debug
111         numchildren=2
112         numloops=1
113         numfiles=2
114         param_type="IRIX debug"
115     else
116         # getting around 1 sec 1,1,1 - 10secs 1,10,1 on IP30 nondebug
117         numloops=2
118         numfiles=3
119         numchildren=3
120         param_type="IRIX nondebug"
121     fi
122 elif [ $HOSTOS == "Linux" ]; then
123     if uname -a | grep -q SMP; then
124         numloops=10
125         numfiles=5
126         numchildren=3
127         param_type="Linux SMP"
128     else
129         numloops=2
130         numfiles=3
131         numchildren=3
132         param_type="Linux UP"
133     fi
134 else
135     numloops=1
136     numfiles=1
137     numchildren=1
138     param_type="Default"
139 fi
140
141 # can override the params here
142 _process_args "$@"
143
144 echo "Params are for $param_type" >>$seq.full
145 echo "Params: n = $numchildren l = $numloops f = $numfiles" >>$seq.full
146
147 _setup_testdir
148
149 _check_test_fs
150
151 # Options:
152 # -F                    generate files with holes  (default=no)
153 # -n num_children       set number of child processes (default=1)
154 # -f num_files          set number of files (default=1)
155 # -s file_size          set file sizes (default=1MiB)
156 # -b block_size         set block (IO) size (default=1024)
157 # -l loops              set loop count (default=100)
158 # -m                    use mmap (default=no)
159 # -S                    use synchronous IO (default=no)
160 # -P                    preallocate space (default=no)
161
162 size10=`expr 10 \* 1024 \* 1024`        # 10 megabytes
163 size30=`expr 30 \* 1024 \* 1024`        # 30 megabytes
164
165 _do_test 0 "-l $numloops"
166
167 _do_test 1 "-l $numloops -s $size10 -b 8192 -m"
168
169 _do_test 2 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512"
170
171 _do_test 3 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512 -m"
172
173 _do_test 4 "-n $numchildren -F -l $numloops -f $numfiles -s $size10 -b 512 -mS"