iotests: fix remainining tests to work with LUKS

The tests 033, 140, 145 and 157 were all broken
when run with LUKS, since they did not correctly use
the required image opts args syntax to specify the
decryption secret. Further, the 120 test simply does
not make sense to run with luks, as the scenario
exercised is not relevant.

The test 181 was broken when run with LUKS because
it didn't take account of fact that $TEST_IMG was
already in image opts syntax. The launch_qemu
helper also didn't register the secret object
providing the LUKS password.

Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 20170626123510.20134-3-berrange@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Daniel P. Berrange 2017-06-26 13:35:07 +01:00 committed by Max Reitz
parent 2c6f600642
commit 13a1d4a71b
9 changed files with 82 additions and 24 deletions

View File

@ -50,10 +50,18 @@ do_test()
local align=$1
local iocmd=$2
local img=$3
if [ "$IMGOPTSSYNTAX" = "true" ]
then
IO_OPEN_ARG="$img"
IO_EXTRA_ARGS="--image-opts"
else
IO_OPEN_ARG="-o driver=$IMGFMT,file.align=$align blkdebug::$img"
IO_EXTRA_ARGS=""
fi
{
echo "open -o driver=$IMGFMT,file.align=$align blkdebug::$img"
echo "open $IO_OPEN_ARG"
echo $iocmd
} | $QEMU_IO
} | $QEMU_IO $IO_EXTRA_ARGS
}
for write_zero_cmd in "write -z" "aio_write -z"; do

View File

@ -41,6 +41,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
_supported_fmt generic
_supported_proto file
_supported_os Linux
_unsupported_fmt luks
_make_test_img 64M

View File

@ -52,8 +52,15 @@ _make_test_img 64k
$QEMU_IO -c 'write -P 42 0 64k' "$TEST_IMG" | _filter_qemu_io
if test "$IMGOPTSSYNTAX" = "true"
then
SYSEMU_DRIVE_ARG=if=none,media=cdrom,id=drv,"$TEST_IMG"
else
SYSEMU_DRIVE_ARG=if=none,media=cdrom,id=drv,file="$TEST_IMG",driver=$IMGFMT
fi
keep_stderr=y \
_launch_qemu -drive if=none,media=cdrom,id=drv,file="$TEST_IMG",format=$IMGFMT \
_launch_qemu -drive $SYSEMU_DRIVE_ARG \
2> >(_filter_nbd)
_send_qemu_cmd $QEMU_HANDLE \

View File

@ -43,8 +43,23 @@ _supported_proto generic
_supported_os Linux
_make_test_img 1M
echo quit | $QEMU -nographic -hda "$TEST_IMG" -incoming 'exec:true' -snapshot -serial none -monitor stdio |
_filter_qemu | _filter_hmp
if test "$IMGOPTSSYNTAX" = "true"
then
SYSEMU_DRIVE_ARG=if=none,$TEST_IMG
SYSEMU_EXTRA_ARGS=""
if [ -n "$IMGKEYSECRET" ]; then
SECRET_ARG="secret,id=keysec0,data=$IMGKEYSECRET"
SYSEMU_EXTRA_ARGS="-object $SECRET_ARG"
fi
else
SYSEMU_DRIVE_ARG=if=none,file="$TEST_IMG",driver=$IMGFMT
SYSEMU_EXTRA_ARGS=""
fi
echo quit | $QEMU -nographic $SYSEMU_EXTRA_ARGS -drive $SYSEMU_DRIVE_ARG \
-incoming 'exec:true' -snapshot -serial none -monitor stdio \
| _filter_qemu | _filter_hmp
# success, all done
echo "*** done"

View File

@ -43,7 +43,6 @@ _supported_os Linux
function do_run_qemu()
{
echo Testing: "$@"
(
if ! test -t 0; then
while read cmd; do
@ -63,7 +62,18 @@ function run_qemu()
size=128M
drive="if=none,file=$TEST_IMG,driver=$IMGFMT"
if test "$IMGOPTSSYNTAX" = "true"
then
SYSEMU_DRIVE_ARG=if=none,$TEST_IMG
SYSEMU_EXTRA_ARGS=""
if [ -n "$IMGKEYSECRET" ]; then
SECRET_ARG="secret,id=keysec0,data=$IMGKEYSECRET"
SYSEMU_EXTRA_ARGS="-object $SECRET_ARG"
fi
else
SYSEMU_DRIVE_ARG=if=none,file="$TEST_IMG",driver=$IMGFMT
SYSEMU_EXTRA_ARGS=""
fi
_make_test_img $size
@ -76,8 +86,9 @@ echo
for cache in "writeback" "writethrough"; do
for wce in "" ",write-cache=auto" ",write-cache=on" ",write-cache=off"; do
echo "Testing: cache='$cache' wce='$wce'"
echo "info block" \
| run_qemu -drive "$drive,cache=$cache" \
| run_qemu $SYSEMU_EXTRA_ARGS -drive "$SYSEMU_DRIVE_ARG,cache=$cache" \
-device "virtio-blk,drive=none0$wce" \
| grep -e "Testing" -e "Cache mode"
done

View File

@ -3,20 +3,20 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
=== Setting WCE with qdev and with manually created BB ===
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writeback -device virtio-blk,drive=none0
Testing: cache='writeback' wce=''
Cache mode: writeback
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writeback -device virtio-blk,drive=none0,write-cache=auto
Testing: cache='writeback' wce=',write-cache=auto'
Cache mode: writeback
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writeback -device virtio-blk,drive=none0,write-cache=on
Testing: cache='writeback' wce=',write-cache=on'
Cache mode: writeback
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writeback -device virtio-blk,drive=none0,write-cache=off
Testing: cache='writeback' wce=',write-cache=off'
Cache mode: writethrough
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writethrough -device virtio-blk,drive=none0
Testing: cache='writethrough' wce=''
Cache mode: writethrough
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writethrough -device virtio-blk,drive=none0,write-cache=auto
Testing: cache='writethrough' wce=',write-cache=auto'
Cache mode: writethrough
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writethrough -device virtio-blk,drive=none0,write-cache=on
Testing: cache='writethrough' wce=',write-cache=on'
Cache mode: writeback
Testing: -drive if=none,file=TEST_DIR/t.IMGFMT,driver=IMGFMT,cache=writethrough -device virtio-blk,drive=none0,write-cache=off
Testing: cache='writethrough' wce=',write-cache=off'
Cache mode: writethrough
*** done

View File

@ -41,7 +41,7 @@ _unsupported_fmt raw
size=256K
IMGFMT=raw IMGOPTS= _make_test_img $size | _filter_imgfmt
IMGFMT=raw IMGKEYSECRET= IMGOPTS= _make_test_img $size | _filter_imgfmt
echo
echo "== reading wrong format should fail =="

View File

@ -57,13 +57,24 @@ echo
qemu_comm_method="monitor"
if [ "$IMGOPTSSYNTAX" = "true" ]; then
_launch_qemu \
-drive "${TEST_IMG}",cache=${CACHEMODE},id=disk
else
_launch_qemu \
-drive file="${TEST_IMG}",cache=${CACHEMODE},driver=$IMGFMT,id=disk
fi
src=$QEMU_HANDLE
if [ "$IMGOPTSSYNTAX" = "true" ]; then
_launch_qemu \
-drive "${TEST_IMG}",cache=${CACHEMODE},id=disk \
-incoming "unix:${MIG_SOCKET}"
else
_launch_qemu \
-drive file="${TEST_IMG}",cache=${CACHEMODE},driver=$IMGFMT,id=disk \
-incoming "unix:${MIG_SOCKET}"
fi
dest=$QEMU_HANDLE
echo

View File

@ -153,14 +153,19 @@ function _launch_qemu()
mkfifo "${fifo_out}"
mkfifo "${fifo_in}"
object_options=
if [ -n "$IMGKEYSECRET" ]; then
object_options="--object secret,id=keysec0,data=$IMGKEYSECRET"
fi
if [ -z "$keep_stderr" ]; then
QEMU_NEED_PID='y'\
${QEMU} -nographic -serial none ${comm} "${@}" >"${fifo_out}" \
${QEMU} ${object_options} -nographic -serial none ${comm} "${@}" >"${fifo_out}" \
2>&1 \
<"${fifo_in}" &
elif [ "$keep_stderr" = "y" ]; then
QEMU_NEED_PID='y'\
${QEMU} -nographic -serial none ${comm} "${@}" >"${fifo_out}" \
${QEMU} ${object_options} -nographic -serial none ${comm} "${@}" >"${fifo_out}" \
<"${fifo_in}" &
else
exit 1