Annotation of qemu/tests/qemu-iotests/common, revision 1.1

1.1     ! root        1: #!/bin/bash
        !             2: #
        !             3: # Copyright (C) 2009 Red Hat, Inc.
        !             4: # Copyright (c) 2000-2005 Silicon Graphics, Inc.  All Rights Reserved.
        !             5: #
        !             6: # This program is free software; you can redistribute it and/or
        !             7: # modify it under the terms of the GNU General Public License as
        !             8: # published by the Free Software Foundation.
        !             9: #
        !            10: # This program is distributed in the hope that it would be useful,
        !            11: # but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            12: # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            13: # GNU General Public License for more details.
        !            14: #
        !            15: # You should have received a copy of the GNU General Public License
        !            16: # along with this program.  If not, see <http://www.gnu.org/licenses/>.
        !            17: #
        !            18: #
        !            19: # common procedures for QA scripts
        !            20: #
        !            21: 
        !            22: _setenvironment()
        !            23: {
        !            24:     MSGVERB="text:action"
        !            25:     export MSGVERB
        !            26: }
        !            27: 
        !            28: here=`pwd`
        !            29: rm -f $here/$iam.out
        !            30: _setenvironment
        !            31: 
        !            32: check=${check-true}
        !            33: 
        !            34: diff="diff -u"
        !            35: verbose=false
        !            36: group=false
        !            37: xgroup=false
        !            38: imgopts=false
        !            39: showme=false
        !            40: sortme=false
        !            41: expunge=true
        !            42: have_test_arg=false
        !            43: randomize=false
        !            44: rm -f $tmp.list $tmp.tmp $tmp.sed
        !            45: 
        !            46: export IMGFMT=raw
        !            47: export IMGPROTO=file
        !            48: export IMGOPTS=""
        !            49: export QEMU_IO_OPTIONS=""
        !            50: 
        !            51: for r
        !            52: do
        !            53: 
        !            54:     if $group
        !            55:     then
        !            56:        # arg after -g
        !            57:        group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
        !            58: s/ .*//p
        !            59: }'`
        !            60:        if [ -z "$group_list" ]
        !            61:        then
        !            62:            echo "Group \"$r\" is empty or not defined?"
        !            63:            exit 1
        !            64:        fi
        !            65:        [ ! -s $tmp.list ] && touch $tmp.list
        !            66:        for t in $group_list
        !            67:        do
        !            68:            if grep -s "^$t\$" $tmp.list >/dev/null
        !            69:            then
        !            70:                :
        !            71:            else
        !            72:                echo "$t" >>$tmp.list
        !            73:            fi
        !            74:        done
        !            75:        group=false
        !            76:        continue
        !            77: 
        !            78:     elif $xgroup
        !            79:     then
        !            80:        # arg after -x
        !            81:        [ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
        !            82:        group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
        !            83: s/ .*//p
        !            84: }'`
        !            85:        if [ -z "$group_list" ]
        !            86:        then
        !            87:            echo "Group \"$r\" is empty or not defined?"
        !            88:            exit 1
        !            89:        fi
        !            90:        numsed=0
        !            91:        rm -f $tmp.sed
        !            92:        for t in $group_list
        !            93:        do
        !            94:            if [ $numsed -gt 100 ]
        !            95:            then
        !            96:                sed -f $tmp.sed <$tmp.list >$tmp.tmp
        !            97:                mv $tmp.tmp $tmp.list
        !            98:                numsed=0
        !            99:                rm -f $tmp.sed
        !           100:            fi
        !           101:            echo "/^$t\$/d" >>$tmp.sed
        !           102:            numsed=`expr $numsed + 1`
        !           103:        done
        !           104:        sed -f $tmp.sed <$tmp.list >$tmp.tmp
        !           105:        mv $tmp.tmp $tmp.list
        !           106:        xgroup=false
        !           107:        continue
        !           108: 
        !           109:     elif $imgopts
        !           110:     then
        !           111:         IMGOPTS="$r"
        !           112:         imgopts=false
        !           113:         continue
        !           114: 
        !           115:     fi
        !           116: 
        !           117:     xpand=true
        !           118:     case "$r"
        !           119:     in
        !           120: 
        !           121:        -\? | -h | --help)      # usage
        !           122:            echo "Usage: $0 [options] [testlist]"'
        !           123: 
        !           124: common options
        !           125:     -v                 verbose
        !           126: 
        !           127: check options
        !           128:     -raw                test raw (default)
        !           129:     -cow                test cow
        !           130:     -qcow               test qcow
        !           131:     -qcow2              test qcow2
        !           132:     -qed                test qed
        !           133:     -vdi                test vdi
        !           134:     -vpc                test vpc
        !           135:     -vmdk               test vmdk
        !           136:     -rbd                test rbd
        !           137:     -sheepdog           test sheepdog
        !           138:     -xdiff             graphical mode diff
        !           139:     -nocache           use O_DIRECT on backing file
        !           140:     -misalign          misalign memory allocations
        !           141:     -n                 show me, do not run tests
        !           142:     -o options          -o options to pass to qemu-img create/convert
        !           143:     -T                 output timestamps
        !           144:     -r                         randomize test order
        !           145:     
        !           146: testlist options
        !           147:     -g group[,group...]        include tests from these groups
        !           148:     -x group[,group...]        exclude tests from these groups
        !           149:     NNN                        include test NNN
        !           150:     NNN-NNN            include test range (eg. 012-021)
        !           151: '
        !           152:            exit 0
        !           153:            ;;
        !           154: 
        !           155:        -raw)
        !           156:            IMGFMT=raw
        !           157:            xpand=false
        !           158:            ;;
        !           159: 
        !           160:        -cow)
        !           161:            IMGFMT=cow
        !           162:            xpand=false
        !           163:            ;;
        !           164: 
        !           165:        -qcow)
        !           166:            IMGFMT=qcow
        !           167:            xpand=false
        !           168:            ;;
        !           169: 
        !           170:        -qcow2)
        !           171:            IMGFMT=qcow2
        !           172:            xpand=false
        !           173:            ;;
        !           174: 
        !           175:        -qed)
        !           176:            IMGFMT=qed
        !           177:            xpand=false
        !           178:            ;;
        !           179: 
        !           180:        -vdi)
        !           181:            IMGFMT=vdi
        !           182:            xpand=false
        !           183:            ;;
        !           184: 
        !           185:        -vmdk)
        !           186:            IMGFMT=vmdk
        !           187:            xpand=false
        !           188:            ;;
        !           189: 
        !           190:        -vpc)
        !           191:            IMGFMT=vpc
        !           192:            xpand=false
        !           193:            ;;
        !           194: 
        !           195:        -rbd)
        !           196:            IMGPROTO=rbd
        !           197:            xpand=false
        !           198:            ;;
        !           199: 
        !           200:        -sheepdog)
        !           201:            IMGPROTO=sheepdog
        !           202:            xpand=false
        !           203:            ;;
        !           204: 
        !           205:        -nocache)
        !           206:            QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --nocache"
        !           207:            xpand=false
        !           208:            ;;
        !           209: 
        !           210:        -misalign)
        !           211:            QEMU_IO_OPTIONS="$QEMU_IO_OPTIONS --misalign"
        !           212:            xpand=false
        !           213:            ;;
        !           214: 
        !           215:        -g)     # -g group ... pick from group file
        !           216:            group=true
        !           217:            xpand=false
        !           218:            ;;
        !           219: 
        !           220:        -xdiff) # graphical diff mode
        !           221:            xpand=false
        !           222: 
        !           223:            if [ ! -z "$DISPLAY" ]
        !           224:            then
        !           225:                which xdiff >/dev/null 2>&1 && diff=xdiff
        !           226:                which gdiff >/dev/null 2>&1 && diff=gdiff
        !           227:                which tkdiff >/dev/null 2>&1 && diff=tkdiff
        !           228:                which xxdiff >/dev/null 2>&1 && diff=xxdiff
        !           229:            fi
        !           230:            ;;
        !           231: 
        !           232:        -n)     # show me, don't do it
        !           233:            showme=true
        !           234:            xpand=false
        !           235:            ;;
        !           236:         -o)
        !           237:             imgopts=true
        !           238:             xpand=false
        !           239:             ;;
        !           240:         -r)    # randomize test order
        !           241:            randomize=true
        !           242:            xpand=false
        !           243:            ;;
        !           244: 
        !           245:        -T)     # turn on timestamp output
        !           246:            timestamp=true
        !           247:            xpand=false
        !           248:            ;;
        !           249: 
        !           250:        -v)
        !           251:            verbose=true
        !           252:            xpand=false
        !           253:            ;;
        !           254:        -x)     # -x group ... exclude from group file
        !           255:            xgroup=true
        !           256:            xpand=false
        !           257:            ;;
        !           258:        '[0-9][0-9][0-9] [0-9][0-9][0-9][0-9]')
        !           259:            echo "No tests?"
        !           260:            status=1
        !           261:            exit $status
        !           262:            ;;
        !           263: 
        !           264:        [0-9]*-[0-9]*)
        !           265:            eval `echo $r | sed -e 's/^/start=/' -e 's/-/ end=/'`
        !           266:            ;;
        !           267: 
        !           268:        [0-9]*-)
        !           269:            eval `echo $r | sed -e 's/^/start=/' -e 's/-//'`
        !           270:            end=`echo [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] | sed -e 's/\[0-9]//g' -e 's/  *$//' -e 's/.* //'`
        !           271:            if [ -z "$end" ]
        !           272:            then
        !           273:                echo "No tests in range \"$r\"?"
        !           274:                status=1
        !           275:                exit $status
        !           276:            fi
        !           277:            ;;
        !           278: 
        !           279:        *)
        !           280:            start=$r
        !           281:            end=$r
        !           282:            ;;
        !           283: 
        !           284:     esac
        !           285: 
        !           286:     # get rid of leading 0s as can be interpreted as octal
        !           287:     start=`echo $start | sed 's/^0*//'`
        !           288:     end=`echo $end | sed 's/^0*//'`
        !           289: 
        !           290:     if $xpand
        !           291:     then
        !           292:        have_test_arg=true
        !           293:        $AWK_PROG </dev/null '
        !           294: BEGIN  { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
        !           295:        | while read id
        !           296:        do
        !           297:            if grep -s "^$id " group >/dev/null
        !           298:            then
        !           299:                # in group file ... OK
        !           300:                echo $id >>$tmp.list
        !           301:            else
        !           302:                if [ -f expunged ] && $expunge && egrep "^$id([         ]|\$)" expunged >/dev/null
        !           303:                then
        !           304:                    # expunged ... will be reported, but not run, later
        !           305:                    echo $id >>$tmp.list
        !           306:                else
        !           307:                    # oops
        !           308:                    echo "$id - unknown test, ignored"
        !           309:                fi
        !           310:            fi
        !           311:        done
        !           312:     fi
        !           313: 
        !           314: done
        !           315: 
        !           316: # Set default options for qemu-img create -o if they were not specified
        !           317: _set_default_imgopts
        !           318: 
        !           319: if [ -s $tmp.list ]
        !           320: then
        !           321:     # found some valid test numbers ... this is good
        !           322:     :
        !           323: else
        !           324:     if $have_test_arg
        !           325:     then
        !           326:        # had test numbers, but none in group file ... do nothing
        !           327:        touch $tmp.list
        !           328:     else
        !           329:        # no test numbers, do everything from group file
        !           330:        sed -n -e '/^[0-9][0-9][0-9]*/s/[       ].*//p' <group >$tmp.list
        !           331:     fi
        !           332: fi
        !           333: 
        !           334: # should be sort -n, but this did not work for Linux when this
        !           335: # was ported from IRIX
        !           336: #
        !           337: list=`sort $tmp.list`
        !           338: rm -f $tmp.list $tmp.tmp $tmp.sed
        !           339: 
        !           340: if $randomize
        !           341: then
        !           342:     list=`echo $list | awk -f randomize.awk`
        !           343: fi
        !           344: 
        !           345: [ "$QEMU" = "" ] && _fatal "qemu not found"
        !           346: [ "$QEMU_IMG" = "" ] && _fatal "qemu-img not found"
        !           347: [ "$QEMU_IO" = "" ] && _fatal "qemu-img not found"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.