root / tests / qemu-iotests / common.filter @ e8c212d6
History | View | Annotate | Download (3.6 kB)
1 | 6bf19c94 | Christoph Hellwig | #!/bin/sh |
---|---|---|---|
2 | 6bf19c94 | Christoph Hellwig | # |
3 | 6bf19c94 | Christoph Hellwig | # Copyright (C) 2009 Red Hat, Inc. |
4 | 6bf19c94 | Christoph Hellwig | # Copyright (c) 2000-2001 Silicon Graphics, Inc. All Rights Reserved. |
5 | 6bf19c94 | Christoph Hellwig | # |
6 | 6bf19c94 | Christoph Hellwig | # This program is free software; you can redistribute it and/or |
7 | 6bf19c94 | Christoph Hellwig | # modify it under the terms of the GNU General Public License as |
8 | 6bf19c94 | Christoph Hellwig | # published by the Free Software Foundation. |
9 | 6bf19c94 | Christoph Hellwig | # |
10 | 6bf19c94 | Christoph Hellwig | # This program is distributed in the hope that it would be useful, |
11 | 6bf19c94 | Christoph Hellwig | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | 6bf19c94 | Christoph Hellwig | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | 6bf19c94 | Christoph Hellwig | # GNU General Public License for more details. |
14 | 6bf19c94 | Christoph Hellwig | # |
15 | 6bf19c94 | Christoph Hellwig | # You should have received a copy of the GNU General Public License |
16 | e8c212d6 | Christoph Hellwig | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
17 | 6bf19c94 | Christoph Hellwig | # |
18 | 6bf19c94 | Christoph Hellwig | # |
19 | 6bf19c94 | Christoph Hellwig | # standard filters |
20 | 6bf19c94 | Christoph Hellwig | # |
21 | 6bf19c94 | Christoph Hellwig | |
22 | 6bf19c94 | Christoph Hellwig | # Checks that given_value is in range of correct_value +/- tolerance. |
23 | 6bf19c94 | Christoph Hellwig | # Tolerance can be an absolute value or a percentage of the correct value |
24 | 6bf19c94 | Christoph Hellwig | # (see examples with tolerances below). |
25 | 6bf19c94 | Christoph Hellwig | # Outputs suitable message to stdout if it's not in range. |
26 | 6bf19c94 | Christoph Hellwig | # |
27 | 6bf19c94 | Christoph Hellwig | # A verbose option, -v, may be used as the LAST argument |
28 | 6bf19c94 | Christoph Hellwig | # |
29 | 6bf19c94 | Christoph Hellwig | # e.g. |
30 | 6bf19c94 | Christoph Hellwig | # foo: 0.0298 = 0.03 +/- 5% |
31 | 6bf19c94 | Christoph Hellwig | # _within_tolerance "foo" 0.0298 0.03 5% |
32 | 6bf19c94 | Christoph Hellwig | # |
33 | 6bf19c94 | Christoph Hellwig | # foo: 0.0298 = 0.03 +/- 0.01 |
34 | 6bf19c94 | Christoph Hellwig | # _within_tolerance "foo" 0.0298 0.03 0.01 |
35 | 6bf19c94 | Christoph Hellwig | # |
36 | 6bf19c94 | Christoph Hellwig | # foo: 0.0298 = 0.03 -0.01 +0.002 |
37 | 6bf19c94 | Christoph Hellwig | # _within_tolerance "foo" 0.0298 0.03 0.01 0.002 |
38 | 6bf19c94 | Christoph Hellwig | # |
39 | 6bf19c94 | Christoph Hellwig | # foo: verbose output of 0.0298 = 0.03 +/- 5% |
40 | 6bf19c94 | Christoph Hellwig | # _within_tolerance "foo" 0.0298 0.03 5% -v |
41 | 6bf19c94 | Christoph Hellwig | _within_tolerance() |
42 | 6bf19c94 | Christoph Hellwig | { |
43 | 6bf19c94 | Christoph Hellwig | _name=$1 |
44 | 6bf19c94 | Christoph Hellwig | _given_val=$2 |
45 | 6bf19c94 | Christoph Hellwig | _correct_val=$3 |
46 | 6bf19c94 | Christoph Hellwig | _mintol=$4 |
47 | 6bf19c94 | Christoph Hellwig | _maxtol=$_mintol |
48 | 6bf19c94 | Christoph Hellwig | _verbose=0 |
49 | 6bf19c94 | Christoph Hellwig | _debug=false |
50 | 6bf19c94 | Christoph Hellwig | |
51 | 6bf19c94 | Christoph Hellwig | # maxtol arg is optional |
52 | 6bf19c94 | Christoph Hellwig | # verbose arg is optional |
53 | 6bf19c94 | Christoph Hellwig | if [ $# -ge 5 ] |
54 | 6bf19c94 | Christoph Hellwig | then |
55 | 6bf19c94 | Christoph Hellwig | if [ "$5" = "-v" ] |
56 | 6bf19c94 | Christoph Hellwig | then |
57 | 6bf19c94 | Christoph Hellwig | _verbose=1 |
58 | 6bf19c94 | Christoph Hellwig | else |
59 | 6bf19c94 | Christoph Hellwig | _maxtol=$5 |
60 | 6bf19c94 | Christoph Hellwig | fi |
61 | 6bf19c94 | Christoph Hellwig | fi |
62 | 6bf19c94 | Christoph Hellwig | if [ $# -ge 6 ] |
63 | 6bf19c94 | Christoph Hellwig | then |
64 | 6bf19c94 | Christoph Hellwig | [ "$6" = "-v" ] && _verbose=1 |
65 | 6bf19c94 | Christoph Hellwig | fi |
66 | 6bf19c94 | Christoph Hellwig | |
67 | 6bf19c94 | Christoph Hellwig | # find min with or without % |
68 | 6bf19c94 | Christoph Hellwig | _mintolerance=`echo $_mintol | sed -e 's/%//'` |
69 | 6bf19c94 | Christoph Hellwig | if [ $_mintol = $_mintolerance ] |
70 | 6bf19c94 | Christoph Hellwig | then |
71 | 6bf19c94 | Christoph Hellwig | _min=`echo "scale=5; $_correct_val-$_mintolerance" | bc` |
72 | 6bf19c94 | Christoph Hellwig | else |
73 | 6bf19c94 | Christoph Hellwig | _min=`echo "scale=5; $_correct_val-$_mintolerance*0.01*$_correct_val" | bc` |
74 | 6bf19c94 | Christoph Hellwig | fi |
75 | 6bf19c94 | Christoph Hellwig | |
76 | 6bf19c94 | Christoph Hellwig | # find max with or without % |
77 | 6bf19c94 | Christoph Hellwig | _maxtolerance=`echo $_maxtol | sed -e 's/%//'` |
78 | 6bf19c94 | Christoph Hellwig | if [ $_maxtol = $_maxtolerance ] |
79 | 6bf19c94 | Christoph Hellwig | then |
80 | 6bf19c94 | Christoph Hellwig | _max=`echo "scale=5; $_correct_val+$_maxtolerance" | bc` |
81 | 6bf19c94 | Christoph Hellwig | else |
82 | 6bf19c94 | Christoph Hellwig | _max=`echo "scale=5; $_correct_val+$_maxtolerance*0.01*$_correct_val" | bc` |
83 | 6bf19c94 | Christoph Hellwig | fi |
84 | 6bf19c94 | Christoph Hellwig | |
85 | 6bf19c94 | Christoph Hellwig | $_debug && echo "min = $_min" |
86 | 6bf19c94 | Christoph Hellwig | $_debug && echo "max = $_max" |
87 | 6bf19c94 | Christoph Hellwig | |
88 | 6bf19c94 | Christoph Hellwig | cat <<EOF >$tmp.bc.1 |
89 | 6bf19c94 | Christoph Hellwig | scale=5; |
90 | 6bf19c94 | Christoph Hellwig | if ($_min <= $_given_val) 1; |
91 | 6bf19c94 | Christoph Hellwig | if ($_min > $_given_val) 0; |
92 | 6bf19c94 | Christoph Hellwig | EOF |
93 | 6bf19c94 | Christoph Hellwig | |
94 | 6bf19c94 | Christoph Hellwig | cat <<EOF >$tmp.bc.2 |
95 | 6bf19c94 | Christoph Hellwig | scale=5; |
96 | 6bf19c94 | Christoph Hellwig | if ($_given_val <= $_max) 1; |
97 | 6bf19c94 | Christoph Hellwig | if ($_given_val > $_max) 0; |
98 | 6bf19c94 | Christoph Hellwig | EOF |
99 | 6bf19c94 | Christoph Hellwig | |
100 | 6bf19c94 | Christoph Hellwig | _above_min=`bc <$tmp.bc.1` |
101 | 6bf19c94 | Christoph Hellwig | _below_max=`bc <$tmp.bc.2` |
102 | 6bf19c94 | Christoph Hellwig | |
103 | 6bf19c94 | Christoph Hellwig | rm -f $tmp.bc.[12] |
104 | 6bf19c94 | Christoph Hellwig | |
105 | 6bf19c94 | Christoph Hellwig | _in_range=`expr $_above_min \& $_below_max` |
106 | 6bf19c94 | Christoph Hellwig | |
107 | 6bf19c94 | Christoph Hellwig | # fix up min, max precision for output |
108 | 6bf19c94 | Christoph Hellwig | # can vary for 5.3, 6.2 |
109 | 6bf19c94 | Christoph Hellwig | _min=`echo $_min | sed -e 's/0*$//'` # get rid of trailling zeroes |
110 | 6bf19c94 | Christoph Hellwig | _max=`echo $_max | sed -e 's/0*$//'` # get rid of trailling zeroes |
111 | 6bf19c94 | Christoph Hellwig | |
112 | 6bf19c94 | Christoph Hellwig | if [ $_in_range -eq 1 ] |
113 | 6bf19c94 | Christoph Hellwig | then |
114 | 6bf19c94 | Christoph Hellwig | [ $_verbose -eq 1 ] && echo $_name is in range |
115 | 6bf19c94 | Christoph Hellwig | return 0 |
116 | 6bf19c94 | Christoph Hellwig | else |
117 | 6bf19c94 | Christoph Hellwig | [ $_verbose -eq 1 ] && echo $_name has value of $_given_val |
118 | 6bf19c94 | Christoph Hellwig | [ $_verbose -eq 1 ] && echo $_name is NOT in range $_min .. $_max |
119 | 6bf19c94 | Christoph Hellwig | return 1 |
120 | 6bf19c94 | Christoph Hellwig | fi |
121 | 6bf19c94 | Christoph Hellwig | } |
122 | 6bf19c94 | Christoph Hellwig | |
123 | 6bf19c94 | Christoph Hellwig | # ctime(3) dates |
124 | 6bf19c94 | Christoph Hellwig | # |
125 | 6bf19c94 | Christoph Hellwig | _filter_date() |
126 | 6bf19c94 | Christoph Hellwig | { |
127 | 6bf19c94 | Christoph Hellwig | sed \ |
128 | 6bf19c94 | Christoph Hellwig | -e 's/[A-Z][a-z][a-z] [A-z][a-z][a-z] *[0-9][0-9]* [0-9][0-9]:[0-9][0-9]:[0-9][0-9] [0-9][0-9][0-9][0-9]$/DATE/' |
129 | 6bf19c94 | Christoph Hellwig | } |
130 | 6bf19c94 | Christoph Hellwig | |
131 | 6bf19c94 | Christoph Hellwig | # replace occurances of the actual TEST_DIR value with TEST_DIR |
132 | 6bf19c94 | Christoph Hellwig | _filter_testdir() |
133 | 6bf19c94 | Christoph Hellwig | { |
134 | 6bf19c94 | Christoph Hellwig | sed -e "s#$TEST_DIR#TEST_DIR#g" |
135 | 6bf19c94 | Christoph Hellwig | } |
136 | 6bf19c94 | Christoph Hellwig | |
137 | 6bf19c94 | Christoph Hellwig | # sanitize qemu-io output |
138 | 6bf19c94 | Christoph Hellwig | _filter_qemu_io() |
139 | 6bf19c94 | Christoph Hellwig | { |
140 | 6bf19c94 | Christoph Hellwig | sed -e "s/[0-9]* ops\; [0-9/:. sec]* ([0-9/.]* [GMKiBbytes]*\/sec and [0-9/.]* ops\/sec)/X ops\; XX:XX:XX.X (XXX YYY\/sec and XXX ops\/sec)/" |
141 | 6bf19c94 | Christoph Hellwig | } |
142 | 6bf19c94 | Christoph Hellwig | |
143 | 6bf19c94 | Christoph Hellwig | # make sure this script returns success |
144 | 6bf19c94 | Christoph Hellwig | /bin/true |