diff options
author | Christoph Hellwig <hch@brick.lst.de> | 2009-06-22 18:29:05 +0200 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2012-02-22 16:15:22 +0100 |
commit | 6bf19c94a0518a2c9101f2ee368c9a0ea56101ba (patch) | |
tree | 23eec42372118118691554744ed7e04ad0e21df8 /tests/qemu-iotests/common.filter | |
download | qemu-6bf19c94a0518a2c9101f2ee368c9a0ea56101ba.tar.gz |
qemu-iotests: Initial import into the public repository.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'tests/qemu-iotests/common.filter')
-rw-r--r-- | tests/qemu-iotests/common.filter | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter new file mode 100644 index 0000000000..b12f50bdf5 --- /dev/null +++ b/tests/qemu-iotests/common.filter @@ -0,0 +1,145 @@ +#!/bin/sh +# +# Copyright (C) 2009 Red Hat, Inc. +# Copyright (c) 2000-2001 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 +# +# +# standard filters +# + +# Checks that given_value is in range of correct_value +/- tolerance. +# Tolerance can be an absolute value or a percentage of the correct value +# (see examples with tolerances below). +# Outputs suitable message to stdout if it's not in range. +# +# A verbose option, -v, may be used as the LAST argument +# +# e.g. +# foo: 0.0298 = 0.03 +/- 5% +# _within_tolerance "foo" 0.0298 0.03 5% +# +# foo: 0.0298 = 0.03 +/- 0.01 +# _within_tolerance "foo" 0.0298 0.03 0.01 +# +# foo: 0.0298 = 0.03 -0.01 +0.002 +# _within_tolerance "foo" 0.0298 0.03 0.01 0.002 +# +# foo: verbose output of 0.0298 = 0.03 +/- 5% +# _within_tolerance "foo" 0.0298 0.03 5% -v +_within_tolerance() +{ + _name=$1 + _given_val=$2 + _correct_val=$3 + _mintol=$4 + _maxtol=$_mintol + _verbose=0 + _debug=false + + # maxtol arg is optional + # verbose arg is optional + if [ $# -ge 5 ] + then + if [ "$5" = "-v" ] + then + _verbose=1 + else + _maxtol=$5 + fi + fi + if [ $# -ge 6 ] + then + [ "$6" = "-v" ] && _verbose=1 + fi + + # find min with or without % + _mintolerance=`echo $_mintol | sed -e 's/%//'` + if [ $_mintol = $_mintolerance ] + then + _min=`echo "scale=5; $_correct_val-$_mintolerance" | bc` + else + _min=`echo "scale=5; $_correct_val-$_mintolerance*0.01*$_correct_val" | bc` + fi + + # find max with or without % + _maxtolerance=`echo $_maxtol | sed -e 's/%//'` + if [ $_maxtol = $_maxtolerance ] + then + _max=`echo "scale=5; $_correct_val+$_maxtolerance" | bc` + else + _max=`echo "scale=5; $_correct_val+$_maxtolerance*0.01*$_correct_val" | bc` + fi + + $_debug && echo "min = $_min" + $_debug && echo "max = $_max" + + cat <<EOF >$tmp.bc.1 +scale=5; +if ($_min <= $_given_val) 1; +if ($_min > $_given_val) 0; +EOF + + cat <<EOF >$tmp.bc.2 +scale=5; +if ($_given_val <= $_max) 1; +if ($_given_val > $_max) 0; +EOF + + _above_min=`bc <$tmp.bc.1` + _below_max=`bc <$tmp.bc.2` + + rm -f $tmp.bc.[12] + + _in_range=`expr $_above_min \& $_below_max` + + # fix up min, max precision for output + # can vary for 5.3, 6.2 + _min=`echo $_min | sed -e 's/0*$//'` # get rid of trailling zeroes + _max=`echo $_max | sed -e 's/0*$//'` # get rid of trailling zeroes + + if [ $_in_range -eq 1 ] + then + [ $_verbose -eq 1 ] && echo $_name is in range + return 0 + else + [ $_verbose -eq 1 ] && echo $_name has value of $_given_val + [ $_verbose -eq 1 ] && echo $_name is NOT in range $_min .. $_max + return 1 + fi +} + +# ctime(3) dates +# +_filter_date() +{ + sed \ + -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/' +} + +# replace occurances of the actual TEST_DIR value with TEST_DIR +_filter_testdir() +{ + sed -e "s#$TEST_DIR#TEST_DIR#g" +} + +# sanitize qemu-io output +_filter_qemu_io() +{ + 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)/" +} + +# make sure this script returns success +/bin/true |