golden output is the same for irix and linux, merge both
[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     numloops=10
124     numfiles=5
125     numchildren=3
126     param_type="Linux"
127 else
128     numloops=1
129     numfiles=1
130     numchildren=1
131     param_type="Default"
132 fi
133
134 # can override the params here
135 _process_args "$@"
136
137 echo "Params are for $param_type" >>$seq.full
138 echo "Params: n = $numchildren l = $numloops f = $numfiles" >>$seq.full
139
140 _setup_testdir
141
142 _check_test_fs
143
144 # Options:
145 # -F                    generate files with holes  (default=no)
146 # -n num_children       set number of child processes (default=1)
147 # -f num_files          set number of files (default=1)
148 # -s file_size          set file sizes (default=1MiB)
149 # -b block_size         set block (IO) size (default=1024)
150 # -l loops              set loop count (default=100)
151 # -m                    use mmap (default=no)
152 # -S                    use synchronous IO (default=no)
153 # -P                    preallocate space (default=no)
154
155 size10=`expr 10 \* 1024 \* 1024`        # 10 megabytes
156 size30=`expr 30 \* 1024 \* 1024`        # 30 megabytes
157
158 _do_test 0 "-l $numloops"
159
160 _do_test 1 "-l $numloops -s $size10 -b 8192 -m"
161
162 _do_test 2 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512"
163
164 _do_test 3 "-n $numchildren -F -l $numloops -f $numfiles -s $size30 -b 512 -m"
165
166 _do_test 4 "-n $numchildren -F -l $numloops -f $numfiles -s $size10 -b 512 -mS"