* [Qemu-devel] [PATCH 1/7] iotests: Allow out-of-tree run
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-15 22:52 ` Eric Blake
2014-05-15 22:26 ` [Qemu-devel] [PATCH 2/7] configure: Enable out-of-tree iotests Max Reitz
` (6 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
As out-of-tree builds are preferred for qemu, running the qemu-iotests
in that out-of-tree build should be supported as well. To do so, a
symbolic link has to be created pointing to the check script in the
source directory. That script will check whether it has been run through
a symlink, and if so, will assume it is run in the build tree. All
output and temporary operations performed by iotests are then redirected
here and, unless specified otherwise by the user, QEMU_PROG etc. will be
set to paths appropriate for the build tree.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/check | 78 ++++++++++++++++++++++++++++++++++------
tests/qemu-iotests/common | 8 ++---
tests/qemu-iotests/common.config | 2 +-
tests/qemu-iotests/common.rc | 8 ++---
tests/qemu-iotests/iotests.py | 3 +-
5 files changed, 78 insertions(+), 21 deletions(-)
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index e2ed5a9..a8d9569 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -34,22 +34,77 @@ timestamp=${TIMESTAMP:=false}
# generic initialization
iam=check
+if [ -L "$0" ]
+then
+ # called from the build tree
+ source_iotests="$(cd "$(dirname "$(readlink "$0")")"; pwd)"
+ build_iotests="$PWD"
+ build_root="$build_iotests/../.."
+
+ if [ -x "$build_iotests/socket_scm_helper" ]
+ then
+ export SOCKET_SCM_HELPER="$build_iotests/socket_scm_helper"
+ fi
+else
+ # called from the source tree
+ source_iotests="$PWD"
+fi
+
+if [ -n "$build_root" ]
+then
+ if [ -z "$QEMU_PROG" ]
+ then
+ arch="$(uname -m 2> /dev/null)"
+
+ if [ -n "$arch" -a -x "$build_root/$arch-softmmu/qemu-system-$arch" ]
+ then
+ export QEMU_PROG="$build_root/$arch-softmmu/qemu-system-$arch"
+ else
+ pushd -q "$build_root"
+ for binary in "*-softmmu/qemu-system-*"
+ do
+ if [ -x "$binary" ]
+ then
+ export QEMU_PROG="$build_root/$binary"
+ break
+ fi
+ done
+ popd -q
+ fi
+ fi
+
+ if [ -z "$QEMU_IMG_PROG" -a -x "$build_root/qemu-img" ]
+ then
+ export QEMU_IMG_PROG="$build_root/qemu-img"
+ fi
+
+ if [ -z "$QEMU_IO_PROG" -a -x "$build_root/qemu-io" ]
+ then
+ export QEMU_IO_PROG="$build_root/qemu-io"
+ fi
+
+ if [ -z "$QEMU_NBD_PROG" -a -x "$build_root/qemu-nbd" ]
+ then
+ export QEMU_NBD_PROG="$build_root/qemu-nbd"
+ fi
+fi
+
# we need common.config
-if ! . ./common.config
+if ! . "$source_iotests/common.config"
then
echo "$iam: failed to source common.config"
exit 1
fi
# we need common.rc
-if ! . ./common.rc
+if ! . "$source_iotests/common.rc"
then
echo "check: failed to source common.rc"
exit 1
fi
# we need common
-. ./common
+. "$source_iotests/common"
#if [ `id -u` -ne 0 ]
#then
@@ -194,7 +249,7 @@ do
echo " - expunged"
rm -f $seq.out.bad
echo "/^$seq\$/d" >>$tmp.expunged
- elif [ ! -f $seq ]
+ elif [ ! -f "$source_iotests/$seq" ]
then
echo " - no such test?"
echo "/^$seq\$/d" >>$tmp.expunged
@@ -215,9 +270,10 @@ do
start=`_wallclock`
$timestamp && echo -n " ["`date "+%T"`"]"
- [ ! -x $seq ] && chmod u+x $seq # ensure we can run it
+ export OUTPUT_DIR="$PWD"
+ (cd "$source_iotests";
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \
- ./$seq >$tmp.out 2>&1
+ ./$seq >$tmp.out 2>&1)
sts=$?
$timestamp && _timestamp
stop=`_wallclock`
@@ -242,17 +298,17 @@ do
err=true
fi
- reference=$seq.out
+ reference="$source_iotests/$seq.out"
if [ "$CACHEMODE" = "none" ]; then
- [ -f $seq.out.nocache ] && reference=$seq.out.nocache
+ [ -f "$source_iotests/$seq.out.nocache" ] && reference="$source_iotests/$seq.out.nocache"
fi
- if [ ! -f $reference ]
+ if [ ! -f "$reference" ]
then
echo " - no qualified output"
err=true
else
- if diff -w $reference $tmp.out >/dev/null 2>&1
+ if diff -w "$reference" $tmp.out >/dev/null 2>&1
then
echo ""
if $err
@@ -264,7 +320,7 @@ do
else
echo " - output mismatch (see $seq.out.bad)"
mv $tmp.out $seq.out.bad
- $diff -w $reference $seq.out.bad
+ $diff -w "$reference" $seq.out.bad
err=true
fi
fi
diff --git a/tests/qemu-iotests/common b/tests/qemu-iotests/common
index 0aaf84d..3c53c4f 100644
--- a/tests/qemu-iotests/common
+++ b/tests/qemu-iotests/common
@@ -59,7 +59,7 @@ do
if $group
then
# arg after -g
- group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
+ group_list=`sed -n <"$source_iotests/group" -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
s/ .*//p
}'`
if [ -z "$group_list" ]
@@ -84,7 +84,7 @@ s/ .*//p
then
# arg after -x
[ ! -s $tmp.list ] && ls [0-9][0-9][0-9] [0-9][0-9][0-9][0-9] >$tmp.list 2>/dev/null
- group_list=`sed -n <group -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
+ group_list=`sed -n <"$source_iotests/group" -e 's/$/ /' -e "/^[0-9][0-9][0-9].* $r /"'{
s/ .*//p
}'`
if [ -z "$group_list" ]
@@ -366,7 +366,7 @@ testlist options
BEGIN { for (t='$start'; t<='$end'; t++) printf "%03d\n",t }' \
| while read id
do
- if grep -s "^$id " group >/dev/null
+ if grep -s "^$id " "$source_iotests/group" >/dev/null
then
# in group file ... OK
echo $id >>$tmp.list
@@ -402,7 +402,7 @@ else
touch $tmp.list
else
# no test numbers, do everything from group file
- sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' <group >$tmp.list
+ sed -n -e '/^[0-9][0-9][0-9]*/s/[ ].*//p' <"$source_iotests/group" >$tmp.list
fi
fi
diff --git a/tests/qemu-iotests/common.config b/tests/qemu-iotests/common.config
index d90a8bc..bd6790b 100644
--- a/tests/qemu-iotests/common.config
+++ b/tests/qemu-iotests/common.config
@@ -126,7 +126,7 @@ fi
export TEST_DIR
if [ -z "$SAMPLE_IMG_DIR" ]; then
- SAMPLE_IMG_DIR=`pwd`/sample_images
+ SAMPLE_IMG_DIR="$source_iotests/sample_images"
fi
if [ ! -d "$SAMPLE_IMG_DIR" ]; then
diff --git a/tests/qemu-iotests/common.rc b/tests/qemu-iotests/common.rc
index 195c564..e0ea7e3 100644
--- a/tests/qemu-iotests/common.rc
+++ b/tests/qemu-iotests/common.rc
@@ -318,9 +318,9 @@ _do()
status=1; exit
fi
- (eval "echo '---' \"$_cmd\"") >>$here/$seq.full
+ (eval "echo '---' \"$_cmd\"") >>"$OUTPUT_DIR/$seq.full"
(eval "$_cmd") >$tmp._out 2>&1; ret=$?
- cat $tmp._out >>$here/$seq.full
+ cat $tmp._out >>"$OUTPUT_DIR/$seq.full"
if [ $# -eq 2 ]; then
if [ $ret -eq 0 ]; then
echo "done"
@@ -344,7 +344,7 @@ _do()
#
_notrun()
{
- echo "$*" >$seq.notrun
+ echo "$*" >"$OUTPUT_DIR/$seq.notrun"
echo "$seq not run: $*"
status=0
exit
@@ -354,7 +354,7 @@ _notrun()
#
_fail()
{
- echo "$*" | tee -a $here/$seq.full
+ echo "$*" | tee -a "$OUTPUT_DIR/$seq.full"
echo "(see $seq.full for details)"
status=1
exit 1
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index f6c437c..39a4cfc 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -37,6 +37,7 @@ qemu_args = os.environ.get('QEMU', 'qemu').strip().split(' ')
imgfmt = os.environ.get('IMGFMT', 'raw')
imgproto = os.environ.get('IMGPROTO', 'file')
test_dir = os.environ.get('TEST_DIR', '/var/tmp')
+output_dir = os.environ.get('OUTPUT_DIR', '.')
cachemode = os.environ.get('CACHEMODE')
socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_helper')
@@ -278,7 +279,7 @@ def notrun(reason):
# Each test in qemu-iotests has a number ("seq")
seq = os.path.basename(sys.argv[0])
- open('%s.notrun' % seq, 'wb').write(reason + '\n')
+ open('%s/%s.notrun' % (output_dir, seq), 'wb').write(reason + '\n')
print '%s not run: %s' % (seq, reason)
sys.exit(0)
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] iotests: Allow out-of-tree run
2014-05-15 22:26 ` [Qemu-devel] [PATCH 1/7] " Max Reitz
@ 2014-05-15 22:52 ` Eric Blake
2014-05-16 14:43 ` Max Reitz
0 siblings, 1 reply; 17+ messages in thread
From: Eric Blake @ 2014-05-15 22:52 UTC (permalink / raw)
To: Max Reitz, qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Stefan Hajnoczi
[-- Attachment #1: Type: text/plain, Size: 2254 bytes --]
On 05/15/2014 04:26 PM, Max Reitz wrote:
> As out-of-tree builds are preferred for qemu, running the qemu-iotests
> in that out-of-tree build should be supported as well. To do so, a
> symbolic link has to be created pointing to the check script in the
> source directory. That script will check whether it has been run through
> a symlink, and if so, will assume it is run in the build tree. All
> output and temporary operations performed by iotests are then redirected
> here and, unless specified otherwise by the user, QEMU_PROG etc. will be
> set to paths appropriate for the build tree.
>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
> tests/qemu-iotests/check | 78 ++++++++++++++++++++++++++++++++++------
>
> +if [ -L "$0" ]
> +then
> + # called from the build tree
> + source_iotests="$(cd "$(dirname "$(readlink "$0")")"; pwd)"
This is potentially dangerous. If readlink or dirname fails, you can
invoke cd "" (which on bash is stupidly a no-op instead of an error),
and end up calling pwd in the wrong directory. But in the common case
it works, so I'm not sure it's worth bending over backwards to make it
more robust.
> + if [ -n "$arch" -a -x "$build_root/$arch-softmmu/qemu-system-$arch" ]
-a and -o are NOT portable inside []; POSIX strongly discourages their
use because they can cause ambiguous parses:
Is [ ! '(' -o ')' ] true or false? Depends on whether it was parsed as {
! '(' } -o ')' (false -o true => true) or as ! { '(' -o ')' } (! (true
-o true) => false)
But this is bash, so you could do:
if [[ $arch && -x $build_root/$arch-softmmu/qemu-system-$arch ]]
for less typing, and no risk of [] ambiguity.
> +++ b/tests/qemu-iotests/common.rc
> @@ -318,9 +318,9 @@ _do()
> status=1; exit
> fi
>
> - (eval "echo '---' \"$_cmd\"") >>$here/$seq.full
> + (eval "echo '---' \"$_cmd\"") >>"$OUTPUT_DIR/$seq.full"
> (eval "$_cmd") >$tmp._out 2>&1; ret=$?
Pre-existing, but we're using 'eval'? That's probably a security risk
if $_cmd can contain user-controlled text, such as an odd directory name.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] iotests: Allow out-of-tree run
2014-05-15 22:52 ` Eric Blake
@ 2014-05-16 14:43 ` Max Reitz
2014-05-16 15:09 ` Eric Blake
0 siblings, 1 reply; 17+ messages in thread
From: Max Reitz @ 2014-05-16 14:43 UTC (permalink / raw)
To: Eric Blake, qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Stefan Hajnoczi
On 16.05.2014 00:52, Eric Blake wrote:
> On 05/15/2014 04:26 PM, Max Reitz wrote:
>> As out-of-tree builds are preferred for qemu, running the qemu-iotests
>> in that out-of-tree build should be supported as well. To do so, a
>> symbolic link has to be created pointing to the check script in the
>> source directory. That script will check whether it has been run through
>> a symlink, and if so, will assume it is run in the build tree. All
>> output and temporary operations performed by iotests are then redirected
>> here and, unless specified otherwise by the user, QEMU_PROG etc. will be
>> set to paths appropriate for the build tree.
>>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>> tests/qemu-iotests/check | 78 ++++++++++++++++++++++++++++++++++------
>>
>> +if [ -L "$0" ]
>> +then
>> + # called from the build tree
>> + source_iotests="$(cd "$(dirname "$(readlink "$0")")"; pwd)"
> This is potentially dangerous. If readlink or dirname fails, you can
> invoke cd "" (which on bash is stupidly a no-op instead of an error),
> and end up calling pwd in the wrong directory. But in the common case
> it works, so I'm not sure it's worth bending over backwards to make it
> more robust.
I guess using something like
source_iotests="$(dirname "$(readlink "$0")")"; if [ -z
"$source_iotests" ]; then; /* abort */; fi; source_iotests="$(cd
"$dirname"; pwd)"
should work better, then?
>> + if [ -n "$arch" -a -x "$build_root/$arch-softmmu/qemu-system-$arch" ]
> -a and -o are NOT portable inside []; POSIX strongly discourages their
> use because they can cause ambiguous parses:
Hm, I remembered you telling me something about -a before and looked in
test's manpage but couldn't find anything bad. Well, it's the GNU manpage…
> Is [ ! '(' -o ')' ] true or false? Depends on whether it was parsed as {
> ! '(' } -o ')' (false -o true => true) or as ! { '(' -o ')' } (! (true
> -o true) => false)
>
> But this is bash, so you could do:
>
> if [[ $arch && -x $build_root/$arch-softmmu/qemu-system-$arch ]]
>
> for less typing, and no risk of [] ambiguity.
If you're telling me I'm free to use bashisms, I'll believe you. :-)
>> +++ b/tests/qemu-iotests/common.rc
>> @@ -318,9 +318,9 @@ _do()
>> status=1; exit
>> fi
>>
>> - (eval "echo '---' \"$_cmd\"") >>$here/$seq.full
>> + (eval "echo '---' \"$_cmd\"") >>"$OUTPUT_DIR/$seq.full"
>> (eval "$_cmd") >$tmp._out 2>&1; ret=$?
> Pre-existing, but we're using 'eval'? That's probably a security risk
> if $_cmd can contain user-controlled text, such as an odd directory name.
Actually, I don't even see that function ("_do") being used anywhere in
the iotests. We could probably drop it.
But the eval should be of no harm, as it is the intention of this
function "_do" to execute the function given as a parameter. If anyone
should make sure, this eval does not execute user-controlled text, it is
the code using _do, I think.
Max
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] iotests: Allow out-of-tree run
2014-05-16 14:43 ` Max Reitz
@ 2014-05-16 15:09 ` Eric Blake
2014-05-16 15:11 ` Max Reitz
0 siblings, 1 reply; 17+ messages in thread
From: Eric Blake @ 2014-05-16 15:09 UTC (permalink / raw)
To: Max Reitz, qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Stefan Hajnoczi
[-- Attachment #1: Type: text/plain, Size: 1597 bytes --]
On 05/16/2014 08:43 AM, Max Reitz wrote:
>>> + source_iotests="$(cd "$(dirname "$(readlink "$0")")"; pwd)"
>> This is potentially dangerous. If readlink or dirname fails, you can
>> invoke cd "" (which on bash is stupidly a no-op instead of an error),
>> and end up calling pwd in the wrong directory. But in the common case
>> it works, so I'm not sure it's worth bending over backwards to make it
>> more robust.
>
> I guess using something like
>
> source_iotests="$(dirname "$(readlink "$0")")"; if [ -z "$source_iotests" ]; then; /* abort */; fi;
> source_iotests="$(cd "$dirname"; pwd)"
>
> should work better, then?
Or even safer with
source_iotests=$(cd "$dirname" && pwd) || /* abort */
in the second step, to ensure both the cd and pwd commands succeeded.
(By the way, assignment context does not require "" when passing a
single shell word, such as command substitution, so foo=$(...) and
foo="$(...)" are identical)
>
>> Is [ ! '(' -o ')' ] true or false? Depends on whether it was parsed as {
>> ! '(' } -o ')' (false -o true => true) or as ! { '(' -o ')' } (! (true
>> -o true) => false)
>>
>> But this is bash, so you could do:
>>
>> if [[ $arch && -x $build_root/$arch-softmmu/qemu-system-$arch ]]
>>
>> for less typing, and no risk of [] ambiguity.
>
> If you're telling me I'm free to use bashisms, I'll believe you. :-)
Well, the script IS being run by /bin/bash, and you already ARE using
bashisms elsewhere.
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] iotests: Allow out-of-tree run
2014-05-16 15:09 ` Eric Blake
@ 2014-05-16 15:11 ` Max Reitz
0 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-16 15:11 UTC (permalink / raw)
To: Eric Blake, qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Stefan Hajnoczi
On 16.05.2014 17:09, Eric Blake wrote:
> On 05/16/2014 08:43 AM, Max Reitz wrote:
>
>>>> + source_iotests="$(cd "$(dirname "$(readlink "$0")")"; pwd)"
>>> This is potentially dangerous. If readlink or dirname fails, you can
>>> invoke cd "" (which on bash is stupidly a no-op instead of an error),
>>> and end up calling pwd in the wrong directory. But in the common case
>>> it works, so I'm not sure it's worth bending over backwards to make it
>>> more robust.
>> I guess using something like
>>
>> source_iotests="$(dirname "$(readlink "$0")")"; if [ -z "$source_iotests" ]; then; /* abort */; fi;
>> source_iotests="$(cd "$dirname"; pwd)"
>>
>> should work better, then?
> Or even safer with
>
> source_iotests=$(cd "$dirname" && pwd) || /* abort */
>
> in the second step, to ensure both the cd and pwd commands succeeded.
> (By the way, assignment context does not require "" when passing a
> single shell word, such as command substitution, so foo=$(...) and
> foo="$(...)" are identical)
The more you know... (and of course I meant "$source_iotests" in the
second step)
>>> Is [ ! '(' -o ')' ] true or false? Depends on whether it was parsed as {
>>> ! '(' } -o ')' (false -o true => true) or as ! { '(' -o ')' } (! (true
>>> -o true) => false)
>>>
>>> But this is bash, so you could do:
>>>
>>> if [[ $arch && -x $build_root/$arch-softmmu/qemu-system-$arch ]]
>>>
>>> for less typing, and no risk of [] ambiguity.
>> If you're telling me I'm free to use bashisms, I'll believe you. :-)
> Well, the script IS being run by /bin/bash, and you already ARE using
> bashisms elsewhere.
I feared so. *g*
Max
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH 2/7] configure: Enable out-of-tree iotests
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
2014-05-15 22:26 ` [Qemu-devel] [PATCH 1/7] " Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-15 22:26 ` [Qemu-devel] [PATCH 3/7] iotests: Add default common.env Max Reitz
` (5 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
In order to allow out-of-tree iotests, create a symlink for the check
script in the build tree.
While doing so, also write configured options relevant to the iotests to
common.env in the build tree; currently, this is the command to invoke
Python 2.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
configure | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/configure b/configure
index e565e59..e9d1b80 100755
--- a/configure
+++ b/configure
@@ -5206,6 +5206,18 @@ if test "$docs" = "yes" ; then
mkdir -p QMP
fi
+# set up qemu-iotests in this build directory
+iotests_common_env="tests/qemu-iotests/common.env"
+iotests_check="tests/qemu-iotests/check"
+
+echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
+echo >> "$iotests_common_env"
+echo "export PYTHON='$python'" >> "$iotests_common_env"
+
+if [ ! -e "$iotests_check" ]; then
+ ln -s "$source_path/$iotests_check" "$iotests_check"
+fi
+
# Save the configure command line for later reuse.
cat <<EOD >config.status
#!/bin/sh
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH 3/7] iotests: Add default common.env
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
2014-05-15 22:26 ` [Qemu-devel] [PATCH 1/7] " Max Reitz
2014-05-15 22:26 ` [Qemu-devel] [PATCH 2/7] configure: Enable out-of-tree iotests Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-15 22:26 ` [Qemu-devel] [PATCH 4/7] iotests: Source common.env Max Reitz
` (4 subsequent siblings)
7 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
Add a default common.env in case the one supposed to be emitted by
configure cannot be found.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/common.env.default | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 tests/qemu-iotests/common.env.default
diff --git a/tests/qemu-iotests/common.env.default b/tests/qemu-iotests/common.env.default
new file mode 100644
index 0000000..406e1f1
--- /dev/null
+++ b/tests/qemu-iotests/common.env.default
@@ -0,0 +1,6 @@
+if command -v python2 > /dev/null
+then
+ export PYTHON='python2'
+else
+ export PYTHON='python'
+fi
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH 4/7] iotests: Source common.env
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
` (2 preceding siblings ...)
2014-05-15 22:26 ` [Qemu-devel] [PATCH 3/7] iotests: Add default common.env Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-16 7:40 ` Fam Zheng
2014-05-15 22:26 ` [Qemu-devel] [PATCH 5/7] iotests: Use $PYTHON for Python scripts Max Reitz
` (3 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
Source common.env in the iotests' check script. If the one supposed to
be created by configure cannot be found, use common.env.default from the
source tree.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/check | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index a8d9569..bd66630 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -89,6 +89,23 @@ then
fi
fi
+# we need common.env
+if [ -n "$build_iotests" ]
+then
+ configured_common_env="$build_iotests/common.env"
+else
+ configured_common_env="$source_iotests/common.env"
+fi
+
+if ! . "$configured_common_env"
+then
+ if ! . "$source_iotests/common.env.default"
+ then
+ echo "$iam: failed to source common.env"
+ exit 1
+ fi
+fi
+
# we need common.config
if ! . "$source_iotests/common.config"
then
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 4/7] iotests: Source common.env
2014-05-15 22:26 ` [Qemu-devel] [PATCH 4/7] iotests: Source common.env Max Reitz
@ 2014-05-16 7:40 ` Fam Zheng
2014-05-16 14:49 ` Max Reitz
0 siblings, 1 reply; 17+ messages in thread
From: Fam Zheng @ 2014-05-16 7:40 UTC (permalink / raw)
To: Max Reitz
Cc: Kevin Wolf, Peter Maydell, qemu-devel, Stefan Hajnoczi,
Markus Armbruster
On Fri, 05/16 00:26, Max Reitz wrote:
> Source common.env in the iotests' check script. If the one supposed to
> be created by configure cannot be found, use common.env.default from the
> source tree.
If configure is supposed to create common.env, but we can't find it here, isn't
it a bug of configure? If so, I don't think we need common.env.default, we need
an error.
Thanks,
Fam
>
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
> tests/qemu-iotests/check | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
> index a8d9569..bd66630 100755
> --- a/tests/qemu-iotests/check
> +++ b/tests/qemu-iotests/check
> @@ -89,6 +89,23 @@ then
> fi
> fi
>
> +# we need common.env
> +if [ -n "$build_iotests" ]
> +then
> + configured_common_env="$build_iotests/common.env"
> +else
> + configured_common_env="$source_iotests/common.env"
> +fi
> +
> +if ! . "$configured_common_env"
> +then
> + if ! . "$source_iotests/common.env.default"
> + then
> + echo "$iam: failed to source common.env"
> + exit 1
> + fi
> +fi
> +
> # we need common.config
> if ! . "$source_iotests/common.config"
> then
> --
> 1.9.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 4/7] iotests: Source common.env
2014-05-16 7:40 ` Fam Zheng
@ 2014-05-16 14:49 ` Max Reitz
0 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-16 14:49 UTC (permalink / raw)
To: Fam Zheng
Cc: Kevin Wolf, Peter Maydell, qemu-devel, Stefan Hajnoczi,
Markus Armbruster
On 16.05.2014 09:40, Fam Zheng wrote:
> On Fri, 05/16 00:26, Max Reitz wrote:
>> Source common.env in the iotests' check script. If the one supposed to
>> be created by configure cannot be found, use common.env.default from the
>> source tree.
> If configure is supposed to create common.env, but we can't find it here, isn't
> it a bug of configure? If so, I don't think we need common.env.default, we need
> an error.
In fact, I am getting an error. The first . "$configured_common_env"
will print an error message, so the user should be informed of something
going wrong.
You are right in that this should not happen. However, it may happen if
the user decides to run the iotests from the source tree instead of the
build tree if he/she is still used to the old way of invoking them. So I
think, having a default common.env should solve this without creating
new problems.
Max
> Thanks,
> Fam
>
>> Signed-off-by: Max Reitz <mreitz@redhat.com>
>> ---
>> tests/qemu-iotests/check | 17 +++++++++++++++++
>> 1 file changed, 17 insertions(+)
>>
>> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
>> index a8d9569..bd66630 100755
>> --- a/tests/qemu-iotests/check
>> +++ b/tests/qemu-iotests/check
>> @@ -89,6 +89,23 @@ then
>> fi
>> fi
>>
>> +# we need common.env
>> +if [ -n "$build_iotests" ]
>> +then
>> + configured_common_env="$build_iotests/common.env"
>> +else
>> + configured_common_env="$source_iotests/common.env"
>> +fi
>> +
>> +if ! . "$configured_common_env"
>> +then
>> + if ! . "$source_iotests/common.env.default"
>> + then
>> + echo "$iam: failed to source common.env"
>> + exit 1
>> + fi
>> +fi
>> +
>> # we need common.config
>> if ! . "$source_iotests/common.config"
>> then
>> --
>> 1.9.2
>>
>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH 5/7] iotests: Use $PYTHON for Python scripts
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
` (3 preceding siblings ...)
2014-05-15 22:26 ` [Qemu-devel] [PATCH 4/7] iotests: Source common.env Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-16 7:54 ` Fam Zheng
2014-05-15 22:26 ` [Qemu-devel] [PATCH 6/7] iotests: Drop Python version from 065's Shebang Max Reitz
` (2 subsequent siblings)
7 siblings, 1 reply; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
Instead of invoking Python scripts directly via ./, use $PYTHON to
obtain the correct Python interpreter command.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/031 | 8 ++++----
tests/qemu-iotests/036 | 6 +++---
tests/qemu-iotests/039 | 18 +++++++++---------
tests/qemu-iotests/054 | 2 +-
tests/qemu-iotests/060 | 20 ++++++++++----------
tests/qemu-iotests/061 | 24 ++++++++++++------------
tests/qemu-iotests/083 | 2 +-
tests/qemu-iotests/check | 9 ++++++++-
8 files changed, 48 insertions(+), 41 deletions(-)
diff --git a/tests/qemu-iotests/031 b/tests/qemu-iotests/031
index 1d920ea..2a77ba8 100755
--- a/tests/qemu-iotests/031
+++ b/tests/qemu-iotests/031
@@ -56,22 +56,22 @@ for IMGOPTS in "compat=0.10" "compat=1.1"; do
echo === Create image with unknown header extension ===
echo
_make_test_img 64M
- ./qcow2.py "$TEST_IMG" add-header-ext 0x12345678 "This is a test header extension"
- ./qcow2.py "$TEST_IMG" dump-header
+ $PYTHON qcow2.py "$TEST_IMG" add-header-ext 0x12345678 "This is a test header extension"
+ $PYTHON qcow2.py "$TEST_IMG" dump-header
_check_test_img
echo
echo === Rewrite header with no backing file ===
echo
$QEMU_IMG rebase -u -b "" "$TEST_IMG"
- ./qcow2.py "$TEST_IMG" dump-header
+ $PYTHON qcow2.py "$TEST_IMG" dump-header
_check_test_img
echo
echo === Add a backing file and format ===
echo
$QEMU_IMG rebase -u -b "/some/backing/file/path" -F host_device "$TEST_IMG"
- ./qcow2.py "$TEST_IMG" dump-header
+ $PYTHON qcow2.py "$TEST_IMG" dump-header
done
# success, all done
diff --git a/tests/qemu-iotests/036 b/tests/qemu-iotests/036
index 03b6aa9..a773653 100755
--- a/tests/qemu-iotests/036
+++ b/tests/qemu-iotests/036
@@ -53,15 +53,15 @@ IMGOPTS="compat=1.1"
echo === Create image with unknown autoclear feature bit ===
echo
_make_test_img 64M
-./qcow2.py "$TEST_IMG" set-feature-bit autoclear 63
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 63
+$PYTHON qcow2.py "$TEST_IMG" dump-header
echo
echo === Repair image ===
echo
_check_test_img -r all
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
# success, all done
echo "*** done"
diff --git a/tests/qemu-iotests/039 b/tests/qemu-iotests/039
index b9cbe99..9a232be 100755
--- a/tests/qemu-iotests/039
+++ b/tests/qemu-iotests/039
@@ -58,7 +58,7 @@ _make_test_img $size
$QEMU_IO -c "write -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io
# The dirty bit must not be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
_check_test_img
echo
@@ -73,7 +73,7 @@ $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" | _filter_qemu_io
ulimit -c "$old_ulimit"
# The dirty bit must be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
_check_test_img
echo
@@ -82,7 +82,7 @@ echo "== Read-only access must still work =="
$QEMU_IO -r -c "read -P 0x5a 0 512" "$TEST_IMG" | _filter_qemu_io
# The dirty bit must be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
echo
echo "== Repairing the image file must succeed =="
@@ -90,7 +90,7 @@ echo "== Repairing the image file must succeed =="
_check_test_img -r all
# The dirty bit must not be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
echo
echo "== Data should still be accessible after repair =="
@@ -109,12 +109,12 @@ $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" | _filter_qemu_io
ulimit -c "$old_ulimit"
# The dirty bit must be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
$QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
# The dirty bit must not be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
echo
echo "== Creating an image file with lazy_refcounts=off =="
@@ -128,7 +128,7 @@ $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" | _filter_qemu_io
ulimit -c "$old_ulimit"
# The dirty bit must not be set since lazy_refcounts=off
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
_check_test_img
echo
@@ -144,8 +144,8 @@ $QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
$QEMU_IMG commit "$TEST_IMG"
# The dirty bit must not be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
-./qcow2.py "$TEST_IMG".base dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG".base dump-header | grep incompatible_features
_check_test_img
TEST_IMG="$TEST_IMG".base _check_test_img
diff --git a/tests/qemu-iotests/054 b/tests/qemu-iotests/054
index c8b7082..bd94153 100755
--- a/tests/qemu-iotests/054
+++ b/tests/qemu-iotests/054
@@ -49,7 +49,7 @@ _make_test_img $((1024*1024))T
echo
echo "creating too large image (1 EB) using qcow2.py"
_make_test_img 4G
-./qcow2.py "$TEST_IMG" set-header size $((1024 ** 6))
+$PYTHON qcow2.py "$TEST_IMG" set-header size $((1024 ** 6))
_check_test_img
# success, all done
diff --git a/tests/qemu-iotests/060 b/tests/qemu-iotests/060
index f0116aa..3cffc12 100755
--- a/tests/qemu-iotests/060
+++ b/tests/qemu-iotests/060
@@ -68,13 +68,13 @@ poke_file "$TEST_IMG" "$l1_offset" "\x80\x00\x00\x00\x00\x03\x00\x00"
_check_test_img
# The corrupt bit should not be set anyway
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
# Try to write something, thereby forcing the corrupt bit to be set
$QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io
# The corrupt bit must now be set
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
# Try to open the image R/W (which should fail)
$QEMU_IO -c "$OPEN_RW" -c "read 0 512" 2>&1 | _filter_qemu_io \
@@ -99,19 +99,19 @@ poke_file "$TEST_IMG" "$(($rb_offset+8))" "\x00\x01"
# Redirect new data cluster onto refcount block
poke_file "$TEST_IMG" "$l2_offset" "\x80\x00\x00\x00\x00\x02\x00\x00"
_check_test_img
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
$QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
# Try to fix it
_check_test_img -r all
# The corrupt bit should be cleared
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
# Look if it's really really fixed
$QEMU_IO -c "$OPEN_RW" -c "write -P 0x2a 0 512" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
echo
echo "=== Testing cluster data reference into inactive L2 table ==="
@@ -124,13 +124,13 @@ $QEMU_IO -c "$OPEN_RW" -c "write -P 2 0 512" | _filter_qemu_io
poke_file "$TEST_IMG" "$l2_offset_after_snapshot" \
"\x80\x00\x00\x00\x00\x04\x00\x00"
_check_test_img
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
$QEMU_IO -c "$OPEN_RW" -c "write -P 3 0 512" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
_check_test_img -r all
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
$QEMU_IO -c "$OPEN_RW" -c "write -P 4 0 512" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
+$PYTHON qcow2.py "$TEST_IMG" dump-header | grep incompatible_features
# Check data
$QEMU_IO -c "$OPEN_RO" -c "read -P 4 0 512" | _filter_qemu_io
diff --git a/tests/qemu-iotests/061 b/tests/qemu-iotests/061
index d3a6b38..ab98def 100755
--- a/tests/qemu-iotests/061
+++ b/tests/qemu-iotests/061
@@ -48,9 +48,9 @@ echo "=== Testing version downgrade with zero expansion ==="
echo
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IO -c "read -P 0 0 128k" "$TEST_IMG" | _filter_qemu_io
_check_test_img
@@ -59,9 +59,9 @@ echo "=== Testing dirty version downgrade ==="
echo
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
$QEMU_IO -c "write -P 0x2a 0 128k" -c flush -c abort "$TEST_IMG" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IO -c "read -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io
_check_test_img
@@ -69,11 +69,11 @@ echo
echo "=== Testing version downgrade with unknown compat/autoclear flags ==="
echo
IMGOPTS="compat=1.1" _make_test_img 64M
-./qcow2.py "$TEST_IMG" set-feature-bit compatible 42
-./qcow2.py "$TEST_IMG" set-feature-bit autoclear 42
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" set-feature-bit compatible 42
+$PYTHON qcow2.py "$TEST_IMG" set-feature-bit autoclear 42
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
_check_test_img
echo
@@ -81,9 +81,9 @@ echo "=== Testing version upgrade and resize ==="
echo
IMGOPTS="compat=0.10" _make_test_img 64M
$QEMU_IO -c "write -P 0x2a 42M 64k" "$TEST_IMG" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IMG amend -o "compat=1.1,lazy_refcounts=on,size=128M" "$TEST_IMG"
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IO -c "read -P 0x2a 42M 64k" "$TEST_IMG" | _filter_qemu_io
_check_test_img
@@ -92,9 +92,9 @@ echo "=== Testing dirty lazy_refcounts=off ==="
echo
IMGOPTS="compat=1.1,lazy_refcounts=on" _make_test_img 64M
$QEMU_IO -c "write -P 0x2a 0 128k" -c flush -c abort "$TEST_IMG" | _filter_qemu_io
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IMG amend -o "lazy_refcounts=off" "$TEST_IMG"
-./qcow2.py "$TEST_IMG" dump-header
+$PYTHON qcow2.py "$TEST_IMG" dump-header
$QEMU_IO -c "read -P 0x2a 0 128k" "$TEST_IMG" | _filter_qemu_io
_check_test_img
diff --git a/tests/qemu-iotests/083 b/tests/qemu-iotests/083
index f764534..b7ba860 100755
--- a/tests/qemu-iotests/083
+++ b/tests/qemu-iotests/083
@@ -81,7 +81,7 @@ EOF
nbd_url="nbd:127.0.0.1:$port:exportname=foo"
fi
- ./nbd-fault-injector.py $extra_args "127.0.0.1:$port" "$TEST_DIR/nbd-fault-injector.conf" 2>&1 >/dev/null &
+ $PYTHON nbd-fault-injector.py $extra_args "127.0.0.1:$port" "$TEST_DIR/nbd-fault-injector.conf" 2>&1 >/dev/null &
wait_for_tcp_port "127.0.0.1:$port"
$QEMU_IO -c "read 0 512" "$nbd_url" 2>&1 | _filter_qemu_io | filter_nbd
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
index bd66630..9968db9 100755
--- a/tests/qemu-iotests/check
+++ b/tests/qemu-iotests/check
@@ -287,10 +287,17 @@ do
start=`_wallclock`
$timestamp && echo -n " ["`date "+%T"`"]"
+
+ if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env python" ]; then
+ run_command="$PYTHON $seq"
+ else
+ [ ! -x "$source_iotests/$seq" ] && chmod u+x "$source_iotests/$seq" # ensure we can run it
+ run_command="./$seq"
+ fi
export OUTPUT_DIR="$PWD"
(cd "$source_iotests";
MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \
- ./$seq >$tmp.out 2>&1)
+ $run_command >$tmp.out 2>&1)
sts=$?
$timestamp && _timestamp
stop=`_wallclock`
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 5/7] iotests: Use $PYTHON for Python scripts
2014-05-15 22:26 ` [Qemu-devel] [PATCH 5/7] iotests: Use $PYTHON for Python scripts Max Reitz
@ 2014-05-16 7:54 ` Fam Zheng
2014-05-16 14:52 ` Max Reitz
0 siblings, 1 reply; 17+ messages in thread
From: Fam Zheng @ 2014-05-16 7:54 UTC (permalink / raw)
To: Max Reitz
Cc: Kevin Wolf, Peter Maydell, qemu-devel, Stefan Hajnoczi,
Markus Armbruster
On Fri, 05/16 00:26, Max Reitz wrote:
> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
> index bd66630..9968db9 100755
> --- a/tests/qemu-iotests/check
> +++ b/tests/qemu-iotests/check
> @@ -287,10 +287,17 @@ do
>
> start=`_wallclock`
> $timestamp && echo -n " ["`date "+%T"`"]"
> +
> + if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env python" ]; then
> + run_command="$PYTHON $seq"
> + else
> + [ ! -x "$source_iotests/$seq" ] && chmod u+x "$source_iotests/$seq" # ensure we can run it
No, I don't think we need chmod here, to change source tree. If the mode has no
x bit, we need a git commit to fix it.
Fam
> + run_command="./$seq"
> + fi
> export OUTPUT_DIR="$PWD"
> (cd "$source_iotests";
> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \
> - ./$seq >$tmp.out 2>&1)
> + $run_command >$tmp.out 2>&1)
> sts=$?
> $timestamp && _timestamp
> stop=`_wallclock`
> --
> 1.9.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 5/7] iotests: Use $PYTHON for Python scripts
2014-05-16 7:54 ` Fam Zheng
@ 2014-05-16 14:52 ` Max Reitz
0 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-16 14:52 UTC (permalink / raw)
To: Fam Zheng
Cc: Kevin Wolf, Peter Maydell, qemu-devel, Stefan Hajnoczi,
Markus Armbruster
On 16.05.2014 09:54, Fam Zheng wrote:
> On Fri, 05/16 00:26, Max Reitz wrote:
>> diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check
>> index bd66630..9968db9 100755
>> --- a/tests/qemu-iotests/check
>> +++ b/tests/qemu-iotests/check
>> @@ -287,10 +287,17 @@ do
>>
>> start=`_wallclock`
>> $timestamp && echo -n " ["`date "+%T"`"]"
>> +
>> + if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env python" ]; then
>> + run_command="$PYTHON $seq"
>> + else
>> + [ ! -x "$source_iotests/$seq" ] && chmod u+x "$source_iotests/$seq" # ensure we can run it
> No, I don't think we need chmod here, to change source tree. If the mode has no
> x bit, we need a git commit to fix it.
This is in fact due to a mistake of mine when splitting the commits. In
patch 1, there is a hunk with:
- [ ! -x $seq ] && chmod u+x $seq # ensure we can run it
This should actually be part of this patch instead, so it is
preexisting. However, you are right in that we should probably not do
this, especially not for out-of-tree builds. I'll drop it from v2, if
there are no objections.
Max
> Fam
>
>> + run_command="./$seq"
>> + fi
>> export OUTPUT_DIR="$PWD"
>> (cd "$source_iotests";
>> MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \
>> - ./$seq >$tmp.out 2>&1)
>> + $run_command >$tmp.out 2>&1)
>> sts=$?
>> $timestamp && _timestamp
>> stop=`_wallclock`
>> --
>> 1.9.2
>>
>>
^ permalink raw reply [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH 6/7] iotests: Drop Python version from 065's Shebang
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
` (4 preceding siblings ...)
2014-05-15 22:26 ` [Qemu-devel] [PATCH 5/7] iotests: Use $PYTHON for Python scripts Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-15 22:26 ` [Qemu-devel] [PATCH 7/7] iotests: Fix 083 for out-of-tree builds Max Reitz
2014-05-16 8:06 ` [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Fam Zheng
7 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
Test 065 specified python2 to be used in its Shebang; this might not
work on systems without a python2 symlink and furthermore it is now
counter-productive, as the check script compares the Shebang to
"#!/usr/bin/env python" and only uses the Python interpreter selected by
configure on an exact match.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/065 | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
index ab5445f..e89b61d 100755
--- a/tests/qemu-iotests/065
+++ b/tests/qemu-iotests/065
@@ -1,4 +1,4 @@
-#!/usr/bin/env python2
+#!/usr/bin/env python
#
# Test for additional information emitted by qemu-img info on qcow2
# images
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* [Qemu-devel] [PATCH 7/7] iotests: Fix 083 for out-of-tree builds
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
` (5 preceding siblings ...)
2014-05-15 22:26 ` [Qemu-devel] [PATCH 6/7] iotests: Drop Python version from 065's Shebang Max Reitz
@ 2014-05-15 22:26 ` Max Reitz
2014-05-16 8:06 ` [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Fam Zheng
7 siblings, 0 replies; 17+ messages in thread
From: Max Reitz @ 2014-05-15 22:26 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Peter Maydell, Markus Armbruster, Max Reitz,
Stefan Hajnoczi
iotest 083 filters out debug messages from nbd, which are prefixed (and
recognized) by __FILE__. However, the current filter (/^nbd\.c…/) is
valid for in-tree builds only, as out-of-tree builds will have a path
before that filename (e.g. "/tmp/qemu/nbd.c"). Fix this by adding .*
before "nbd\.c".
While working on this, also fix the regexes: '.' should be escaped and a
single backslash is not enough for escaping when enclosed by double
quotes.
Signed-off-by: Max Reitz <mreitz@redhat.com>
---
tests/qemu-iotests/083 | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/tests/qemu-iotests/083 b/tests/qemu-iotests/083
index b7ba860..991a9d9 100755
--- a/tests/qemu-iotests/083
+++ b/tests/qemu-iotests/083
@@ -44,7 +44,7 @@ choose_tcp_port() {
wait_for_tcp_port() {
while ! (netstat --tcp --listening --numeric | \
- grep "$1.*0.0.0.0:\*.*LISTEN") 2>&1 >/dev/null; do
+ grep "$1.*0\\.0\\.0\\.0:\\*.*LISTEN") 2>&1 >/dev/null; do
sleep 0.1
done
}
@@ -55,8 +55,8 @@ filter_nbd() {
# callbacks sometimes, making them unreliable.
#
# Filter out the TCP port number since this changes between runs.
- sed -e 's#^nbd.c:.*##g' \
- -e 's#nbd:127.0.0.1:[^:]*:#nbd:127.0.0.1:PORT:#g'
+ sed -e 's#^.*nbd\.c:.*##g' \
+ -e 's#nbd:127\.0\.0\.1:[^:]*:#nbd:127\.0\.0\.1:PORT:#g'
}
check_disconnect() {
@@ -82,7 +82,7 @@ EOF
fi
$PYTHON nbd-fault-injector.py $extra_args "127.0.0.1:$port" "$TEST_DIR/nbd-fault-injector.conf" 2>&1 >/dev/null &
- wait_for_tcp_port "127.0.0.1:$port"
+ wait_for_tcp_port "127\\.0\\.0\\.1:$port"
$QEMU_IO -c "read 0 512" "$nbd_url" 2>&1 | _filter_qemu_io | filter_nbd
echo
--
1.9.2
^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run
2014-05-15 22:26 [Qemu-devel] [PATCH 0/7] iotests: Allow out-of-tree run Max Reitz
` (6 preceding siblings ...)
2014-05-15 22:26 ` [Qemu-devel] [PATCH 7/7] iotests: Fix 083 for out-of-tree builds Max Reitz
@ 2014-05-16 8:06 ` Fam Zheng
7 siblings, 0 replies; 17+ messages in thread
From: Fam Zheng @ 2014-05-16 8:06 UTC (permalink / raw)
To: Max Reitz
Cc: Kevin Wolf, Peter Maydell, qemu-devel, Stefan Hajnoczi,
Markus Armbruster
On Fri, 05/16 00:26, Max Reitz wrote:
> This series enables qemu-iotests to be run in a build tree outside of
> the source tree.
Yes, I've always used the long command to run iotests, namely,
$ (cd $SRC_PATH/tests/qemu-iotests; TEST_DIR=/tmp/qemu-iotests QEMU_PROG=~/build/last/x86_64-softmmu/qemu-system-x86_64 QEMU_IMG_PROG=~/build/last/qemu-img QEMU_IO_PROG=~/build/last/qemu-io QEMU_NBD_PROG=~/build/last/qemu-nbd ./check -qcow2 -o "" )
and I hated that. It'd be a great improvement to allow iotests to find the
built binaries by itself.
Thanks for working on this!
Fam
>
>
> Max Reitz (7):
> iotests: Allow out-of-tree run
> configure: Enable out-of-tree iotests
> iotests: Add default common.env
> iotests: Source common.env
> iotests: Use $PYTHON for Python scripts
> iotests: Drop Python version from 065's Shebang
> iotests: Fix 083 for out-of-tree builds
>
> configure | 12 ++++
> tests/qemu-iotests/031 | 8 +--
> tests/qemu-iotests/036 | 6 +-
> tests/qemu-iotests/039 | 18 +++---
> tests/qemu-iotests/054 | 2 +-
> tests/qemu-iotests/060 | 20 +++----
> tests/qemu-iotests/061 | 24 ++++----
> tests/qemu-iotests/065 | 2 +-
> tests/qemu-iotests/083 | 10 ++--
> tests/qemu-iotests/check | 102 ++++++++++++++++++++++++++++++----
> tests/qemu-iotests/common | 8 +--
> tests/qemu-iotests/common.config | 2 +-
> tests/qemu-iotests/common.env.default | 6 ++
> tests/qemu-iotests/common.rc | 8 +--
> tests/qemu-iotests/iotests.py | 3 +-
> 15 files changed, 165 insertions(+), 66 deletions(-)
> create mode 100644 tests/qemu-iotests/common.env.default
>
> --
> 1.9.2
>
>
^ permalink raw reply [flat|nested] 17+ messages in thread