From: Max Reitz <mreitz@redhat.com>
To: Fam Zheng <famz@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v3 5/7] iotests: Use $PYTHON for Python scripts
Date: Sat, 24 May 2014 21:35:11 +0200 [thread overview]
Message-ID: <5380F46F.1020005@redhat.com> (raw)
In-Reply-To: <20140523035859.GD1668@T430.nay.redhat.com>
On 23.05.2014 05:58, Fam Zheng wrote:
> On Thu, 05/22 23:30, Max Reitz wrote:
>> 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 | 8 +++++++-
>> 8 files changed, 47 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 27fe4bd..84c9167 100755
>> --- a/tests/qemu-iotests/039
>> +++ b/tests/qemu-iotests/039
>> @@ -63,7 +63,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
>> @@ -75,7 +75,7 @@ _make_test_img $size
>> _no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 | _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
>> _check_test_img
>>
>> echo
>> @@ -84,7 +84,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 =="
>> @@ -92,7 +92,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 =="
>> @@ -108,12 +108,12 @@ _make_test_img $size
>> _no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 | _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
>>
>> $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 =="
>> @@ -124,7 +124,7 @@ _make_test_img $size
>> _no_dump_exec $QEMU_IO -c "write -P 0x5a 0 512" -c "abort" "$TEST_IMG" 2>&1 | _filter_qemu_io
>>
>> # 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
>> @@ -140,8 +140,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 8ec5b8d..8420bd6 100755
>> --- a/tests/qemu-iotests/check
>> +++ b/tests/qemu-iotests/check
>> @@ -298,10 +298,16 @@ do
>>
>> start=`_wallclock`
>> $timestamp && echo -n " ["`date "+%T"`"]"
>> +
>> + if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env python" ]; then
> How about
>
> if head -n 1 "$source_iotests/$seq" | grep -q '#!/usr/bin/env python'; then
>
> ? So you don't need patch 6 (Personally, I don't dislike #!/usr/bin/env
> python2).
I'll need patch 6 anyway. The original idea why this series exists in
the first place was that my main system (Arch) links /usr/bin/python to
python3, which breaks the I/O tests. Therefore, I wanted to make the I/O
tests always use python2 or, if possible, the Python version chosen by
configure. After my first attempt broke badly, I thought of replacing
all Shebangs by "#!/usr/bin/env python2" - but it turned out, Debian
normally does not provide /usr/bin/python2 (albeit having Python 2
itself). Therefore, I discarded that idea and wrote this series instead.
However, knowing this, it's better to "fix" the Shebang in test 065. On
the other hand, with this series we wouldn't have to, as the Shebang is
not actually used anyway. But I'd rather like to have it "valid" (which
means valid for Debian and invalid for Arch).
Max
> But no objection, so I'll leave my
>
> Reviewed-by: Fam Zheng <famz@redhat.com>
>
>> + run_command="$PYTHON $seq"
>> + else
>> + 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.3
>>
>>
next prev parent reply other threads:[~2014-05-24 19:35 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-22 21:30 [Qemu-devel] [PATCH v3 0/7] iotests: Allow out-of-tree run Max Reitz
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 1/7] " Max Reitz
2014-05-23 3:44 ` Fam Zheng
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 2/7] configure: Enable out-of-tree iotests Max Reitz
2014-05-23 3:47 ` Fam Zheng
2014-05-24 19:27 ` Max Reitz
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 3/7] iotests: Add default common.env Max Reitz
2014-05-23 6:10 ` Fam Zheng
2014-05-23 12:27 ` Eric Blake
2014-05-23 13:33 ` Markus Armbruster
2014-05-24 19:40 ` Max Reitz
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 4/7] iotests: Source common.env Max Reitz
2014-05-23 4:01 ` Fam Zheng
2014-05-24 20:18 ` Max Reitz
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 5/7] iotests: Use $PYTHON for Python scripts Max Reitz
2014-05-23 3:58 ` Fam Zheng
2014-05-24 19:35 ` Max Reitz [this message]
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 6/7] iotests: Drop Python version from 065's Shebang Max Reitz
2014-05-23 4:02 ` Fam Zheng
2014-05-22 21:30 ` [Qemu-devel] [PATCH v3 7/7] iotests: Fix 083 for out-of-tree builds Max Reitz
2014-05-22 21:35 ` [Qemu-devel] [PATCH v3 0/7] iotests: Allow out-of-tree run Max Reitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5380F46F.1020005@redhat.com \
--to=mreitz@redhat.com \
--cc=armbru@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).