7208fa29c0fc3c81a35ded7512b04880f992c55f
[xfstests-dev.git] / tests / generic / 113
1 #! /bin/bash
2 # FS QA Test No. 113
3 #
4 # aio-stress
5 #
6 #-----------------------------------------------------------------------
7 # Copyright (c) 2005 Silicon Graphics, Inc.  All Rights Reserved.
8 #
9 # This program is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU General Public License as
11 # published by the Free Software Foundation.
12 #
13 # This program is distributed in the hope that it would be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write the Free Software Foundation,
20 # Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
21 #
22 #-----------------------------------------------------------------------
23 #
24
25 seq=`basename $0`
26 seqres=$RESULT_DIR/$seq
27 echo "QA output created by $seq"
28
29 here=`pwd`
30 tmp=/tmp/$$
31 status=0        # success is the default!
32 trap "_cleanup; exit \$status" 0 1 2 3 15
33
34 _cleanup()
35 {
36     cd /
37     rm -f $TEST_DIR/aio-stress.$$.*
38 }
39
40 # get standard environment, filters and checks
41 . ./common/rc
42 . ./common/filter
43
44 _do_test()
45 {
46     _n="$1"
47     _param="$2"
48     _count="$3"
49     _nproc="$4"
50
51     _files="$TEST_DIR/aiostress.$$.$_n"
52     __proc=$_nproc
53     [ $__proc -gt 1 ] && _param="-t $__proc $_param"
54     while [ $__proc -gt 1 ]; do
55         _files="$_files $TEST_DIR/aiostress.$$.$_n.$__proc"
56         let __proc=$__proc-1
57     done
58     rm -f $_files
59  
60     echo ""
61     echo "-----------------------------------------------"
62     echo "aio-stress.$_n : $_param"
63     echo "-----------------------------------------------"
64     if ! $here/ltp/aio-stress $_param $AIOSTRESS_AVOID -I $_count $_files >>$tmp.out 2>&1
65     then
66         echo "    aio-stress (count=$_count) returned $?"
67         cat $tmp.out
68         status=1
69         exit
70     fi
71
72     _check_test_fs
73     rm -f $_files
74 }
75
76 # real QA test starts here
77 _supported_fs generic
78 _supported_os Linux
79 _require_test
80
81 [ -x $here/ltp/aio-stress ] || _notrun "aio-stress not built for this platform"
82
83 echo "brevity is wit..."
84
85 count=1000
86 procs=20
87
88 _check_test_fs
89
90 # the default
91 _do_test 1 "-s 120m" $count 1
92
93 # and the default with multiprocess
94 _do_test 2 "-s 10m" $count $procs
95
96 # as above, but now using direct IO
97 _do_test 3 "-s 10m -O" $count $procs
98
99 # dio with O_SYNC and unwritten extent conversion
100 _do_test 4 "-s 10m -O -S" $count $procs
101
102 # random dio writes with O_SYNC and unwritten extent conversion
103 _do_test 5 "-s 10m -O -S -o 2" $count $procs
104
105 exit