On 24.01.2017 12:57, Daniel P. Berrange wrote: > The tests 033, 120, 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. > > Reviewed-by: Eric Blake <ebl...@redhat.com> > Signed-off-by: Daniel P. Berrange <berra...@redhat.com> > --- > tests/qemu-iotests/033 | 16 ++++++++++++---- > tests/qemu-iotests/120 | 25 ++++++++++++++++++++++--- > tests/qemu-iotests/140 | 15 ++++++++++++++- > tests/qemu-iotests/145 | 18 +++++++++++++++++- > tests/qemu-iotests/157 | 17 ++++++++++++++--- > tests/qemu-iotests/157.out | 16 ++++++++-------- > 6 files changed, 87 insertions(+), 20 deletions(-) > > diff --git a/tests/qemu-iotests/033 b/tests/qemu-iotests/033 > index 16edcf2..b690b0e 100755 > --- a/tests/qemu-iotests/033 > +++ b/tests/qemu-iotests/033 > @@ -50,14 +50,22 @@ do_test() > local align=$1 > local iocmd=$2 > local img=$3 > + if test "$IMGOPTSSYNTAX" = "true"
Explicitly using "test" is a bit weird, but OK. > + 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 > -for align in 512 4k; do > + for align in 512 4k; do > echo > echo "== preparing image ==" > do_test $align "write -P 0xa 0x200 0x400" "$TEST_IMG" | _filter_qemu_io > @@ -91,7 +99,7 @@ for align in 512 4k; do > do_test $align "read -P 0xb 0x400 0xc00" "$TEST_IMG" | _filter_qemu_io > > echo > -done > + done These alignment changes don't hurt, but I don't really see how they improve the layout or how they are related to this patch. > done > > # success, all done > diff --git a/tests/qemu-iotests/120 b/tests/qemu-iotests/120 > index 4f88a67..5f80517 100755 > --- a/tests/qemu-iotests/120 > +++ b/tests/qemu-iotests/120 > @@ -44,17 +44,36 @@ _supported_os Linux > > _make_test_img 64M > > +if test "$IMGOPTSSYNTAX" = "true" > +then > + SYSEMU_DRIVE_ARG=id=drv,if=none,$TEST_IMG This basically makes this test moot. The point is to get the following configuration: raw format driver | v $IMGFMT driver | v protocol driver This is why the test explicitly specifies driver=raw,file.driver=$IMGFMT. With this configuration, you just get the standard configuration without the raw driver on top. That renders the test irrelevant, meaning you can just as well disable it for LUKS. > + SYSEMU_EXTRA_ARGS="" > + IO_DRIVE_ARG="$TEST_IMG" > + IO_EXTRA_ARGS="--image-opts" > + if [ -n "$IMGKEYSECRET" ]; then > + SECRET_ARG="secret,id=keysec0,data=$IMGKEYSECRET" > + SYSEMU_EXTRA_ARGS="$SYSEMU_EXTRA_ARGS -object $SECRET_ARG" > + IO_EXTRA_ARGS="$IO_EXTRA_ARGS --object $SECRET_ARG" > + fi > +else > + > SYSEMU_DRIVE_ARG=id=drv,if=none,file="$TEST_IMG",driver=raw,file.driver=$IMGFMT > + SYSEMU_EXTRA_ARGS="" > + IO_DRIVE_ARG="json:{'driver': 'raw', 'file': {'driver': '$IMGFMT', > 'file': {'filename': '$TEST_IMG'}}}" > + IO_EXTRA_ARGS="" > +fi > + > + > echo "{'execute': 'qmp_capabilities'} > {'execute': 'human-monitor-command', > 'arguments': {'command-line': 'qemu-io drv \"write -P 42 0 64k\"'}} > {'execute': 'quit'}" \ > - | $QEMU -qmp stdio -nographic -nodefaults \ > - -drive > id=drv,if=none,file="$TEST_IMG",driver=raw,file.driver=$IMGFMT \ > + | $QEMU -qmp stdio -nographic -nodefaults $SYSEMU_EXTRA_ARGS \ > + -drive $SYSEMU_DRIVE_ARG \ > | _filter_qmp | _filter_qemu_io > $QEMU_IO -c 'read -P 42 0 64k' "$TEST_IMG" | _filter_qemu_io > > $QEMU_IO_PROG -c 'read -P 42 0 64k' \ > - "json:{'driver': 'raw', 'file': {'driver': '$IMGFMT', 'file': > {'filename': '$TEST_IMG'}}}" \ > + $IO_EXTRA_ARGS "$IO_DRIVE_ARG" \ > | _filter_qemu_io > > # success, all done > diff --git a/tests/qemu-iotests/140 b/tests/qemu-iotests/140 > index 49f9df4..afaa418 100755 > --- a/tests/qemu-iotests/140 > +++ b/tests/qemu-iotests/140 > @@ -51,8 +51,21 @@ _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 > + SYSEMU_EXTRA_ARGS="" > + if [ -n "$IMGKEYSECRET" ]; then Sometimes using "test" and sometimes "[" is even weirder. > + SECRET_ARG="secret,id=keysec0,data=$IMGKEYSECRET" > + SYSEMU_EXTRA_ARGS="-object $SECRET_ARG" Spaces would probably be better than tabs. > + fi > +else > + > SYSEMU_DRIVE_ARG=if=none,media=cdrom,id=drv,file="$TEST_IMG",driver=raw,file.driver=$IMGFMT Not sure where you get the driver=raw,file.driver=$IMGFMT configuration from. The original just has format=$IMGFMT (equivalent to driver=$IMFGMT). > + SYSEMU_EXTRA_ARGS="" > +fi > + > keep_stderr=y \ > -_launch_qemu -drive > if=none,media=cdrom,id=drv,file="$TEST_IMG",format=$IMGFMT \ > +_launch_qemu $SYSEMU_EXTRA_ARGS -drive $SYSEMU_DRIVE_ARG \ > 2> >(_filter_nbd) > > _send_qemu_cmd $QEMU_HANDLE \ > diff --git a/tests/qemu-iotests/145 b/tests/qemu-iotests/145 > index 1eca0e8..ab54972 100755 > --- a/tests/qemu-iotests/145 > +++ b/tests/qemu-iotests/145 > @@ -43,7 +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 > + > +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=raw,file.driver=$IMGFMT Again, should be just 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 > > # success, all done > echo "*** done" > diff --git a/tests/qemu-iotests/157 b/tests/qemu-iotests/157 > index 8d939cb..9ba1720 100755 > --- a/tests/qemu-iotests/157 > +++ b/tests/qemu-iotests/157 > @@ -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=raw,file.driver=$IMGFMT And once more. Max > + 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
signature.asc
Description: OpenPGP digital signature