Add qemu 2.4.0
[kvmfornfv.git] / qemu / tests / qemu-iotests / common.config
1 #!/bin/bash
2 #
3 # Copyright (C) 2009 Red Hat, Inc.
4 # Copyright (c) 2000-2003,2006 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 # setup and check for config parameters, and in particular
20 #
21 # EMAIL -           email of the script runner.
22 # TEST_DIR -        scratch test directory
23 #
24 # - These can be added to $HOST_CONFIG_DIR (witch default to ./config)
25 #   below or a separate local configuration file can be used (using
26 #   the HOST_OPTIONS variable).
27 # - This script is shared by the stress test system and the auto-qa
28 #   system (includes both regression test and benchmark components).
29 # - this script shouldn't make any assertions about filesystem
30 #   validity or mountedness.
31 #
32
33 # all tests should use a common language setting to prevent golden
34 # output mismatches.
35 export LANG=C
36
37 PATH=".:$PATH"
38
39 HOST=`hostname -s 2> /dev/null`
40 HOSTOS=`uname -s`
41
42 EMAIL=root@localhost    # where auto-qa will send its status messages
43 export HOST_OPTIONS=${HOST_OPTIONS:=local.config}
44 export CHECK_OPTIONS=${CHECK_OPTIONS:="-g auto"}
45 export PWD=`pwd`
46
47 # $1 = prog to look for, $2* = default pathnames if not found in $PATH
48 set_prog_path()
49 {
50     p=`command -v $1 2> /dev/null`
51     if [ -n "$p" -a -x "$p" ]; then
52         echo $p
53         return 0
54     fi
55     p=$1
56
57     shift
58     for f; do
59         if [ -x $f ]; then
60             echo $f
61             return 0
62         fi
63     done
64
65     echo ""
66     return 1
67 }
68
69 _fatal()
70 {
71     echo "$*"
72     status=1
73     exit 1
74 }
75
76 export PERL_PROG="`set_prog_path perl`"
77 [ "$PERL_PROG" = "" ] && _fatal "perl not found"
78
79 export AWK_PROG="`set_prog_path awk`"
80 [ "$AWK_PROG" = "" ] && _fatal "awk not found"
81
82 export SED_PROG="`set_prog_path sed`"
83 [ "$SED_PROG" = "" ] && _fatal "sed not found"
84
85 export BC_PROG="`set_prog_path bc`"
86 [ "$BC_PROG" = "" ] && _fatal "bc not found"
87
88 export PS_ALL_FLAGS="-ef"
89
90 if [ -z "$QEMU_PROG" ]; then
91     export QEMU_PROG="`set_prog_path qemu`"
92 fi
93
94 if [ -z "$QEMU_IMG_PROG" ]; then
95     export QEMU_IMG_PROG="`set_prog_path qemu-img`"
96 fi
97
98 if [ -z "$QEMU_IO_PROG" ]; then
99     export QEMU_IO_PROG="`set_prog_path qemu-io`"
100 fi
101
102 if [ -z "$QEMU_NBD_PROG" ]; then
103     export QEMU_NBD_PROG="`set_prog_path qemu-nbd`"
104 fi
105
106 export QEMU=$QEMU_PROG
107 export QEMU_IMG=$QEMU_IMG_PROG
108 export QEMU_IO="$QEMU_IO_PROG $QEMU_IO_OPTIONS"
109 export QEMU_NBD=$QEMU_NBD_PROG
110
111 [ -f /etc/qemu-iotest.config ]       && . /etc/qemu-iotest.config
112
113 if [ -z "$TEST_DIR" ]; then
114         TEST_DIR=`pwd`/scratch
115 fi
116
117 if [ ! -e "$TEST_DIR" ]; then
118         mkdir "$TEST_DIR"
119 fi
120
121 if [ ! -d "$TEST_DIR" ]; then
122     echo "common.config: Error: \$TEST_DIR ($TEST_DIR) is not a directory"
123     exit 1
124 fi
125
126 export TEST_DIR
127
128 if [ -z "$SAMPLE_IMG_DIR" ]; then
129         SAMPLE_IMG_DIR="$source_iotests/sample_images"
130 fi
131
132 if [ ! -d "$SAMPLE_IMG_DIR" ]; then
133     echo "common.config: Error: \$SAMPLE_IMG_DIR ($SAMPLE_IMG_DIR) is not a directory"
134     exit 1
135 fi
136
137 export SAMPLE_IMG_DIR
138
139 _readlink()
140 {
141     if [ $# -ne 1 ]; then
142         echo "Usage: _readlink filename" 1>&2
143         exit 1
144     fi
145
146     perl -e "\$in=\"$1\";" -e '
147     $lnk = readlink($in);
148     if ($lnk =~ m!^/.*!) {
149         print "$lnk\n";
150     }
151     else {
152         chomp($dir = `dirname $in`);
153         print "$dir/$lnk\n";
154     }'
155 }
156
157 # make sure this script returns success
158 true