diff options
Diffstat (limited to 'qemu/tests/qemu-iotests/common.rc')
-rw-r--r-- | qemu/tests/qemu-iotests/common.rc | 449 |
1 files changed, 0 insertions, 449 deletions
diff --git a/qemu/tests/qemu-iotests/common.rc b/qemu/tests/qemu-iotests/common.rc deleted file mode 100644 index 5249ec592..000000000 --- a/qemu/tests/qemu-iotests/common.rc +++ /dev/null @@ -1,449 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2009 Red Hat, Inc. -# Copyright (c) 2000-2006 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; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will 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, see <http://www.gnu.org/licenses/>. -# - -dd() -{ - if [ "$HOSTOS" == "Linux" ] - then - command dd --help | grep noxfer > /dev/null 2>&1 - - if [ "$?" -eq 0 ] - then - command dd status=noxfer $@ - else - command dd $@ - fi - else - command dd $@ - fi -} - -# poke_file 'test.img' 512 '\xff\xfe' -poke_file() -{ - printf "$3" | dd "of=$1" bs=1 "seek=$2" conv=notrunc &>/dev/null -} - -# we need common.config -if [ "$iam" != "check" ] -then - if ! . ./common.config - then - echo "$iam: failed to source common.config" - exit 1 - fi -fi - -# make sure we have a standard umask -umask 022 - -if [ "$IMGPROTO" = "file" ]; then - TEST_IMG=$TEST_DIR/t.$IMGFMT -elif [ "$IMGPROTO" = "nbd" ]; then - TEST_IMG_FILE=$TEST_DIR/t.$IMGFMT - TEST_IMG="nbd:127.0.0.1:10810" -elif [ "$IMGPROTO" = "ssh" ]; then - TEST_IMG_FILE=$TEST_DIR/t.$IMGFMT - TEST_IMG="ssh://127.0.0.1$TEST_IMG_FILE" -elif [ "$IMGPROTO" = "nfs" ]; then - TEST_DIR="nfs://127.0.0.1/$TEST_DIR" - TEST_IMG=$TEST_DIR/t.$IMGFMT -elif [ "$IMGPROTO" = "archipelago" ]; then - TEST_IMG="archipelago:at.$IMGFMT" -else - TEST_IMG=$IMGPROTO:$TEST_DIR/t.$IMGFMT -fi - -_optstr_add() -{ - if [ -n "$1" ]; then - echo "$1,$2" - else - echo "$2" - fi -} - -_set_default_imgopts() -{ - if [ "$IMGFMT" == "qcow2" ] && ! (echo "$IMGOPTS" | grep "compat=" > /dev/null); then - IMGOPTS=$(_optstr_add "$IMGOPTS" "compat=1.1") - fi -} - -_use_sample_img() -{ - SAMPLE_IMG_FILE="${1%\.bz2}" - TEST_IMG="$TEST_DIR/$SAMPLE_IMG_FILE" - bzcat "$SAMPLE_IMG_DIR/$1" > "$TEST_IMG" - if [ $? -ne 0 ] - then - echo "_use_sample_img error, cannot extract '$SAMPLE_IMG_DIR/$1'" - exit 1 - fi -} - -_make_test_img() -{ - # extra qemu-img options can be added by tests - # at least one argument (the image size) needs to be added - local extra_img_options="" - local image_size=$* - local optstr="" - local img_name="" - local use_backing=0 - local backing_file="" - - if [ -n "$TEST_IMG_FILE" ]; then - img_name=$TEST_IMG_FILE - else - img_name=$TEST_IMG - fi - - if [ -n "$IMGOPTS" ]; then - optstr=$(_optstr_add "$optstr" "$IMGOPTS") - fi - - if [ "$1" = "-b" ]; then - use_backing=1 - backing_file=$2 - image_size=$3 - fi - if [ \( "$IMGFMT" = "qcow2" -o "$IMGFMT" = "qed" \) -a -n "$CLUSTER_SIZE" ]; then - optstr=$(_optstr_add "$optstr" "cluster_size=$CLUSTER_SIZE") - fi - - if [ -n "$optstr" ]; then - extra_img_options="-o $optstr $extra_img_options" - fi - - # XXX(hch): have global image options? - ( - if [ $use_backing = 1 ]; then - $QEMU_IMG create -f $IMGFMT $extra_img_options -b "$backing_file" "$img_name" $image_size 2>&1 - else - $QEMU_IMG create -f $IMGFMT $extra_img_options "$img_name" $image_size 2>&1 - fi - ) | _filter_img_create - - # Start an NBD server on the image file, which is what we'll be talking to - if [ $IMGPROTO = "nbd" ]; then - eval "$QEMU_NBD -v -t -b 127.0.0.1 -p 10810 -f $IMGFMT $TEST_IMG_FILE &" - sleep 1 # FIXME: qemu-nbd needs to be listening before we continue - fi -} - -_rm_test_img() -{ - local img=$1 - if [ "$IMGFMT" = "vmdk" ]; then - # Remove all the extents for vmdk - "$QEMU_IMG" info "$img" 2>/dev/null | grep 'filename:' | cut -f 2 -d: \ - | xargs -I {} rm -f "{}" - fi - rm -f "$img" -} - -_cleanup_test_img() -{ - case "$IMGPROTO" in - - nbd) - if [ -f "${TEST_DIR}/qemu-nbd.pid" ]; then - local QEMU_NBD_PID - read QEMU_NBD_PID < "${TEST_DIR}/qemu-nbd.pid" - kill ${QEMU_NBD_PID} - rm -f "${TEST_DIR}/qemu-nbd.pid" - fi - rm -f "$TEST_IMG_FILE" - ;; - file) - _rm_test_img "$TEST_DIR/t.$IMGFMT" - _rm_test_img "$TEST_DIR/t.$IMGFMT.orig" - _rm_test_img "$TEST_DIR/t.$IMGFMT.base" - if [ -n "$SAMPLE_IMG_FILE" ] - then - rm -f "$TEST_DIR/$SAMPLE_IMG_FILE" - fi - ;; - - rbd) - rbd --no-progress rm "$TEST_DIR/t.$IMGFMT" > /dev/null - ;; - - archipelago) - vlmc remove "at.$IMGFMT" > /dev/null - ;; - - sheepdog) - collie vdi delete "$TEST_DIR/t.$IMGFMT" - ;; - - esac -} - -_check_test_img() -{ - $QEMU_IMG check "$@" -f $IMGFMT "$TEST_IMG" 2>&1 | _filter_testdir | \ - sed -e '/allocated.*fragmented.*compressed clusters/d' \ - -e 's/qemu-img: This image format does not support checks/No errors were found on the image./' \ - -e '/Image end offset: [0-9]\+/d' -} - -_img_info() -{ - if [[ "$1" == "--format-specific" ]]; then - local format_specific=1 - shift - else - local format_specific=0 - fi - - discard=0 - regex_json_spec_start='^ *"format-specific": \{' - $QEMU_IMG info "$@" "$TEST_IMG" 2>&1 | \ - sed -e "s#$IMGPROTO:$TEST_DIR#TEST_DIR#g" \ - -e "s#$TEST_DIR#TEST_DIR#g" \ - -e "s#$IMGFMT#IMGFMT#g" \ - -e "/^disk size:/ D" \ - -e "/actual-size/ D" | \ - while IFS='' read line; do - if [[ $format_specific == 1 ]]; then - discard=0 - elif [[ $line == "Format specific information:" ]]; then - discard=1 - elif [[ $line =~ $regex_json_spec_start ]]; then - discard=2 - regex_json_spec_end="^${line%%[^ ]*}\\},? *$" - fi - if [[ $discard == 0 ]]; then - echo "$line" - elif [[ $discard == 1 && ! $line ]]; then - echo - discard=0 - elif [[ $discard == 2 && $line =~ $regex_json_spec_end ]]; then - discard=0 - fi - done -} - -_get_pids_by_name() -{ - if [ $# -ne 1 ] - then - echo "Usage: _get_pids_by_name process-name" 1>&2 - exit 1 - fi - - # Algorithm ... all ps(1) variants have a time of the form MM:SS or - # HH:MM:SS before the psargs field, use this as the search anchor. - # - # Matches with $1 (process-name) occur if the first psarg is $1 - # or ends in /$1 ... the matching uses sed's regular expressions, - # so passing a regex into $1 will work. - - ps $PS_ALL_FLAGS \ - | sed -n \ - -e 's/$/ /' \ - -e 's/[ ][ ]*/ /g' \ - -e 's/^ //' \ - -e 's/^[^ ]* //' \ - -e "/[0-9]:[0-9][0-9] *[^ ]*\/$1 /s/ .*//p" \ - -e "/[0-9]:[0-9][0-9] *$1 /s/ .*//p" -} - -# fqdn for localhost -# -_get_fqdn() -{ - host=`hostname` - $NSLOOKUP_PROG $host | $AWK_PROG '{ if ($1 == "Name:") print $2 }' -} - -# check if run as root -# -_need_to_be_root() -{ - id=`id | $SED_PROG -e 's/(.*//' -e 's/.*=//'` - if [ "$id" -ne 0 ] - then - echo "Arrgh ... you need to be root (not uid=$id) to run this test" - exit 1 - fi -} - -# bail out, setting up .notrun file -# -_notrun() -{ - echo "$*" >"$OUTPUT_DIR/$seq.notrun" - echo "$seq not run: $*" - status=0 - exit -} - -# just plain bail out -# -_fail() -{ - echo "$*" | tee -a "$OUTPUT_DIR/$seq.full" - echo "(see $seq.full for details)" - status=1 - exit 1 -} - -# tests whether $IMGFMT is one of the supported image formats for a test -# -_supported_fmt() -{ - # "generic" is suitable for most image formats. For some formats it doesn't - # work, however (most notably read-only formats), so they can opt out by - # setting IMGFMT_GENERIC to false. - for f; do - if [ "$f" = "$IMGFMT" -o "$f" = "generic" -a "$IMGFMT_GENERIC" = "true" ]; then - return - fi - done - - _notrun "not suitable for this image format: $IMGFMT" -} - -# tests whether $IMGPROTO is one of the supported image protocols for a test -# -_supported_proto() -{ - for f; do - if [ "$f" = "$IMGPROTO" -o "$f" = "generic" ]; then - return - fi - done - - _notrun "not suitable for this image protocol: $IMGPROTO" -} - -# tests whether the host OS is one of the supported OSes for a test -# -_supported_os() -{ - for h - do - if [ "$h" = "$HOSTOS" ] - then - return - fi - done - - _notrun "not suitable for this OS: $HOSTOS" -} - -_supported_cache_modes() -{ - for mode; do - if [ "$mode" = "$CACHEMODE" ]; then - return - fi - done - _notrun "not suitable for cache mode: $CACHEMODE" -} - -_default_cache_mode() -{ - if $CACHEMODE_IS_DEFAULT; then - CACHEMODE="$1" - QEMU_IO="$QEMU_IO --cache $1" - return - fi -} - -_unsupported_imgopts() -{ - for bad_opt - do - if echo "$IMGOPTS" | grep -q 2>/dev/null "$bad_opt" - then - _notrun "not suitable for image option: $bad_opt" - fi - done -} - -# this test requires that a specified command (executable) exists -# -_require_command() -{ - if [ "$1" = "QEMU" ]; then - c=$QEMU_PROG - elif [ "$1" = "QEMU_IMG" ]; then - c=$QEMU_IMG_PROG - elif [ "$1" = "QEMU_IO" ]; then - c=$QEMU_IO_PROG - elif [ "$1" = "QEMU_NBD" ]; then - c=$QEMU_NBD_PROG - else - eval c=\$$1 - fi - [ -x "$c" ] || _notrun "$1 utility required, skipped this test" -} - -_full_imgfmt_details() -{ - if [ -n "$IMGOPTS" ]; then - echo "$IMGFMT ($IMGOPTS)" - else - echo "$IMGFMT" - fi -} - -_full_imgproto_details() -{ - echo "$IMGPROTO" -} - -_full_platform_details() -{ - os=`uname -s` - host=`hostname -s` - kernel=`uname -r` - platform=`uname -m` - echo "$os/$platform $host $kernel" -} - -_link_out_file() -{ - if [ -z "$1" ]; then - echo Error must pass \$seq. - exit - fi - rm -f $1 - if [ "`uname`" == "IRIX64" ] || [ "`uname`" == "IRIX" ]; then - ln -s $1.irix $1 - elif [ "`uname`" == "Linux" ]; then - ln -s $1.linux $1 - else - echo Error test $seq does not run on the operating system: `uname` - exit - fi -} - -_die() -{ - echo $@ - exit 1 -} - -# make sure this script returns success -true |