From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51148) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WoHj3-0006oj-2S for qemu-devel@nongnu.org; Sat, 24 May 2014 15:35:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WoHiy-0006Q6-0U for qemu-devel@nongnu.org; Sat, 24 May 2014 15:35:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:35332) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WoHix-0006Pe-L9 for qemu-devel@nongnu.org; Sat, 24 May 2014 15:35:19 -0400 Message-ID: <5380F46F.1020005@redhat.com> Date: Sat, 24 May 2014 21:35:11 +0200 From: Max Reitz MIME-Version: 1.0 References: <1400794231-27403-1-git-send-email-mreitz@redhat.com> <1400794231-27403-6-git-send-email-mreitz@redhat.com> <20140523035859.GD1668@T430.nay.redhat.com> In-Reply-To: <20140523035859.GD1668@T430.nay.redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3 5/7] iotests: Use $PYTHON for Python scripts List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Fam Zheng Cc: Kevin Wolf , Peter Maydell , qemu-devel@nongnu.org, Stefan Hajnoczi , Markus Armbruster 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 >> --- >> 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 > >> + 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 >> >>