qemu-iotests: Rewrite 206 for blockdev-create job

This rewrites the test case 206 to work with the new x-blockdev-create
job rather than the old synchronous version of the command.

All of the test cases stay the same as before, but in order to be able
to implement proper job handling, the test case is rewritten in Python.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
Kevin Wolf 2018-05-23 18:19:00 +02:00
parent 5a259e868b
commit 4de110f8fd
3 changed files with 367 additions and 474 deletions

View File

@ -1,9 +1,11 @@
#!/bin/bash #!/usr/bin/env python
# #
# Test qcow2 and file image creation # Test qcow2 and file image creation
# #
# Copyright (C) 2018 Red Hat, Inc. # Copyright (C) 2018 Red Hat, Inc.
# #
# Creator/Owner: Kevin Wolf <kwolf@redhat.com>
#
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
@ -18,419 +20,263 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
# creator import iotests
owner=kwolf@redhat.com from iotests import imgfmt
seq=`basename $0` iotests.verify_image_format(supported_fmts=['qcow2'])
echo "QA output created by $seq"
here=`pwd` def blockdev_create(vm, options):
status=1 # failure is the default! result = vm.qmp_log('x-blockdev-create', job_id='job0', options=options)
# get standard environment, filters and checks if 'return' in result:
. ./common.rc assert result['return'] == {}
. ./common.filter vm.run_job('job0')
iotests.log("")
_supported_fmt qcow2 with iotests.FilePath('t.qcow2') as disk_path, \
_supported_proto file iotests.FilePath('t.qcow2.base') as backing_path, \
_supported_os Linux iotests.VM() as vm:
function do_run_qemu() vm.add_object('secret,id=keysec0,data=foo')
{
echo Testing: "$@"
$QEMU -nographic -qmp stdio -serial none "$@"
echo
}
function run_qemu() #
{ # Successful image creation (defaults)
do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \ #
| _filter_qemu | _filter_imgfmt \ iotests.log("=== Successful image creation (defaults) ===")
| _filter_actual_image_size iotests.log("")
}
echo size = 128 * 1024 * 1024
echo "=== Successful image creation (defaults) ==="
echo
size=$((128 * 1024 * 1024)) vm.launch()
blockdev_create(vm, { 'driver': 'file',
'filename': disk_path,
'size': 0 })
run_qemu <<EOF vm.qmp_log('blockdev-add', driver='file', filename=disk_path,
{ "execute": "qmp_capabilities" } node_name='imgfile')
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "file",
"filename": "$TEST_IMG",
"size": 0
}
}
{ "execute": "blockdev-add",
"arguments": {
"driver": "file",
"node-name": "imgfile",
"filename": "$TEST_IMG"
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "imgfile",
"size": $size
}
}
{ "execute": "quit" }
EOF
_img_info --format-specific blockdev_create(vm, { 'driver': imgfmt,
'file': 'imgfile',
'size': size })
vm.shutdown()
echo iotests.img_info_log(disk_path)
echo "=== Successful image creation (inline blockdev-add, explicit defaults) ==="
echo
# Choose a different size to show that we got a new image #
size=$((64 * 1024 * 1024)) # Successful image creation (inline blockdev-add, explicit defaults)
#
iotests.log("=== Successful image creation (inline blockdev-add, explicit defaults) ===")
iotests.log("")
run_qemu <<EOF # Choose a different size to show that we got a new image
{ "execute": "qmp_capabilities" } size = 64 * 1024 * 1024
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "file",
"filename": "$TEST_IMG",
"size": 0,
"preallocation": "off",
"nocow": false
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": {
"driver": "file",
"filename": "$TEST_IMG"
},
"size": $size,
"version": "v3",
"cluster-size": 65536,
"preallocation": "off",
"lazy-refcounts": false,
"refcount-bits": 16
}
}
{ "execute": "quit" }
EOF
_img_info --format-specific vm.launch()
blockdev_create(vm, { 'driver': 'file',
'filename': disk_path,
'size': 0,
'preallocation': 'off',
'nocow': False })
echo blockdev_create(vm, { 'driver': imgfmt,
echo "=== Successful image creation (v3 non-default options) ===" 'file': {
echo 'driver': 'file',
'filename': disk_path,
},
'size': size,
'version': 'v3',
'cluster-size': 65536,
'preallocation': 'off',
'lazy-refcounts': False,
'refcount-bits': 16 })
vm.shutdown()
# Choose a different size to show that we got a new image iotests.img_info_log(disk_path)
size=$((32 * 1024 * 1024))
run_qemu <<EOF #
{ "execute": "qmp_capabilities" } # Successful image creation (v3 non-default options)
{ "execute": "x-blockdev-create", #
"arguments": { iotests.log("=== Successful image creation (v3 non-default options) ===")
"driver": "file", iotests.log("")
"filename": "$TEST_IMG",
"size": 0,
"preallocation": "falloc",
"nocow": true
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": {
"driver": "file",
"filename": "$TEST_IMG"
},
"size": $size,
"version": "v3",
"cluster-size": 2097152,
"preallocation": "metadata",
"lazy-refcounts": true,
"refcount-bits": 1
}
}
{ "execute": "quit" }
EOF
_img_info --format-specific # Choose a different size to show that we got a new image
size = 32 * 1024 * 1024
echo vm.launch()
echo "=== Successful image creation (v2 non-default options) ===" blockdev_create(vm, { 'driver': 'file',
echo 'filename': disk_path,
'size': 0,
'preallocation': 'falloc',
'nocow': True })
mv $TEST_IMG $TEST_IMG.base blockdev_create(vm, { 'driver': imgfmt,
'file': {
'driver': 'file',
'filename': disk_path,
},
'size': size,
'version': 'v3',
'cluster-size': 2097152,
'preallocation': 'metadata',
'lazy-refcounts': True,
'refcount-bits': 1 })
vm.shutdown()
run_qemu <<EOF iotests.img_info_log(disk_path)
{ "execute": "qmp_capabilities" }
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "file",
"filename": "$TEST_IMG",
"size": 0
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": {
"driver": "file",
"filename": "$TEST_IMG"
},
"size": $size,
"backing-file": "$TEST_IMG.base",
"backing-fmt": "qcow2",
"version": "v2",
"cluster-size": 512
}
}
{ "execute": "quit" }
EOF
_img_info --format-specific #
# Successful image creation (v2 non-default options)
#
iotests.log("=== Successful image creation (v2 non-default options) ===")
iotests.log("")
echo vm.launch()
echo "=== Successful image creation (encrypted) ===" blockdev_create(vm, { 'driver': 'file',
echo 'filename': disk_path,
'size': 0 })
run_qemu -object secret,id=keysec0,data="foo" <<EOF blockdev_create(vm, { 'driver': imgfmt,
{ "execute": "qmp_capabilities" } 'file': {
{ "execute": "x-blockdev-create", 'driver': 'file',
"arguments": { 'filename': disk_path,
"driver": "$IMGFMT", },
"file": { 'size': size,
"driver": "file", 'backing-file': backing_path,
"filename": "$TEST_IMG" 'backing-fmt': 'qcow2',
}, 'version': 'v2',
"size": $size, 'cluster-size': 512 })
"encrypt": { vm.shutdown()
"format": "luks",
"key-secret": "keysec0",
"cipher-alg": "twofish-128",
"cipher-mode": "ctr",
"ivgen-alg": "plain64",
"ivgen-hash-alg": "md5",
"hash-alg": "sha1",
"iter-time": 10
}
}
}
{ "execute": "quit" }
EOF
_img_info --format-specific | _filter_img_info --format-specific iotests.img_info_log(disk_path)
echo #
echo "=== Invalid BlockdevRef ===" # Successful image creation (encrypted)
echo #
iotests.log("=== Successful image creation (encrypted) ===")
iotests.log("")
run_qemu <<EOF vm.launch()
{ "execute": "qmp_capabilities" } blockdev_create(vm, { 'driver': imgfmt,
{ "execute": "x-blockdev-create", 'file': {
"arguments": { 'driver': 'file',
"driver": "$IMGFMT", 'filename': disk_path,
"file": "this doesn't exist", },
"size": $size 'size': size,
} 'encrypt': {
} 'format': 'luks',
{ "execute": "quit" } 'key-secret': 'keysec0',
EOF 'cipher-alg': 'twofish-128',
'cipher-mode': 'ctr',
'ivgen-alg': 'plain64',
'ivgen-hash-alg': 'md5',
'hash-alg': 'sha1',
'iter-time': 10,
}})
vm.shutdown()
iotests.img_info_log(disk_path)
echo #
echo "=== Invalid sizes ===" # Invalid BlockdevRef
echo #
iotests.log("=== Invalid BlockdevRef ===")
iotests.log("")
# TODO Negative image sizes aren't handled correctly, but this is a problem vm.launch()
# with QAPI's implementation of the 'size' type and affects other commands as blockdev_create(vm, { 'driver': imgfmt,
# well. Once this is fixed, we may want to add a test case here. 'file': "this doesn't exist",
'size': size })
vm.shutdown()
# 1. Misaligned image size #
# 2. 2^64 - 512 # Invalid sizes
# 3. 2^63 = 8 EB (qemu-img enforces image sizes less than this) #
# 4. 2^63 - 512 (generally valid, but qcow2 can't handle images this size) iotests.log("=== Invalid sizes ===")
run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <<EOF # TODO Negative image sizes aren't handled correctly, but this is a problem
{ "execute": "qmp_capabilities" } # with QAPI's implementation of the 'size' type and affects other commands
{ "execute": "x-blockdev-create", # as well. Once this is fixed, we may want to add a test case here.
"arguments": { #
"driver": "$IMGFMT", # 1. Misaligned image size
"file": "node0", # 2. 2^64 - 512
"size": 1234 # 3. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
} # 4. 2^63 - 512 (generally valid, but qcow2 can't handle images this size)
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 18446744073709551104
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 9223372036854775808
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 9223372036854775296
}
}
{ "execute": "quit" }
EOF
echo vm.add_blockdev('driver=file,filename=%s,node-name=node0' % (disk_path))
echo "=== Invalid version ==="
echo
run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <<EOF vm.launch()
{ "execute": "qmp_capabilities" } for size in [ 1234, 18446744073709551104, 9223372036854775808,
{ "execute": "x-blockdev-create", 9223372036854775296 ]:
"arguments": { blockdev_create(vm, { 'driver': imgfmt,
"driver": "$IMGFMT", 'file': 'node0',
"file": "node0", 'size': size })
"size": 67108864, vm.shutdown()
"version": "v1"
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"version": "v2",
"lazy-refcounts": true
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"version": "v2",
"refcount-bits": 8
}
}
{ "execute": "quit" }
EOF
echo #
echo "=== Invalid backing file options ===" # Invalid version
echo #
iotests.log("=== Invalid version ===")
run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <<EOF vm.launch()
{ "execute": "qmp_capabilities" } blockdev_create(vm, { 'driver': imgfmt,
{ "execute": "x-blockdev-create", 'file': 'node0',
"arguments": { 'size': 67108864,
"driver": "$IMGFMT", 'version': 'v1' })
"file": "node0", blockdev_create(vm, { 'driver': imgfmt,
"size": 67108864, 'file': 'node0',
"backing-file": "/dev/null", 'size': 67108864,
"preallocation": "full" 'version': 'v2',
} 'lazy-refcounts': True })
} blockdev_create(vm, { 'driver': imgfmt,
{ "execute": "x-blockdev-create", 'file': 'node0',
"arguments": { 'size': 67108864,
"driver": "$IMGFMT", 'version': 'v2',
"file": "node0", 'refcount-bits': 8 })
"size": 67108864, vm.shutdown()
"backing-fmt": "$IMGFMT"
}
}
{ "execute": "quit" }
EOF
echo #
echo "=== Invalid cluster size ===" # Invalid backing file options
echo #
iotests.log("=== Invalid backing file options ===")
run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <<EOF vm.launch()
{ "execute": "qmp_capabilities" } blockdev_create(vm, { 'driver': imgfmt,
{ "execute": "x-blockdev-create", 'file': 'node0',
"arguments": { 'size': 67108864,
"driver": "$IMGFMT", 'backing-file': '/dev/null',
"file": "node0", 'preallocation': 'full' })
"size": 67108864, blockdev_create(vm, { 'driver': imgfmt,
"cluster-size": 1234 'file': 'node0',
} 'size': 67108864,
} 'backing-fmt': imgfmt })
{ "execute": "x-blockdev-create", vm.shutdown()
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"cluster-size": 128
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"cluster-size": 4194304
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"cluster-size": 0
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 281474976710656,
"cluster-size": 512
}
}
{ "execute": "quit" }
EOF
echo #
echo "=== Invalid refcount width ===" # Invalid cluster size
echo #
iotests.log("=== Invalid cluster size ===")
run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <<EOF vm.launch()
{ "execute": "qmp_capabilities" } for csize in [ 1234, 128, 4194304, 0 ]:
{ "execute": "x-blockdev-create", blockdev_create(vm, { 'driver': imgfmt,
"arguments": { 'file': 'node0',
"driver": "$IMGFMT", 'size': 67108864,
"file": "node0", 'cluster-size': csize })
"size": 67108864, blockdev_create(vm, { 'driver': imgfmt,
"refcount-bits": 128 'file': 'node0',
} 'size': 281474976710656,
} 'cluster-size': 512 })
{ "execute": "x-blockdev-create", vm.shutdown()
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"refcount-bits": 0
}
}
{ "execute": "x-blockdev-create",
"arguments": {
"driver": "$IMGFMT",
"file": "node0",
"size": 67108864,
"refcount-bits": 7
}
}
{ "execute": "quit" }
EOF
# success, all done #
echo "*** done" # Invalid refcount width
rm -f $seq.full #
status=0 iotests.log("=== Invalid refcount width ===")
vm.launch()
for refcount_bits in [ 128, 0, 7 ]:
blockdev_create(vm, { 'driver': imgfmt,
'file': 'node0',
'size': 67108864,
'refcount-bits': refcount_bits })
vm.shutdown()

View File

@ -1,17 +1,18 @@
QA output created by 206
=== Successful image creation (defaults) === === Successful image creation (defaults) ===
Testing: {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}}
QMP_VERSION {u'return': {}}
{"return": {}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"return": {}} {u'return': {}}
{"return": {}}
{"return": {}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
image: TEST_DIR/t.IMGFMT {'execute': 'blockdev-add', 'arguments': {'node_name': 'imgfile', 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}
{u'return': {}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'imgfile', 'size': 134217728}}}
{u'return': {}}
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
image: TEST_IMG
file format: IMGFMT file format: IMGFMT
virtual size: 128M (134217728 bytes) virtual size: 128M (134217728 bytes)
cluster_size: 65536 cluster_size: 65536
@ -23,15 +24,17 @@ Format specific information:
=== Successful image creation (inline blockdev-add, explicit defaults) === === Successful image creation (inline blockdev-add, explicit defaults) ===
Testing: {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'nocow': False, 'preallocation': 'off', 'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}}
QMP_VERSION {u'return': {}}
{"return": {}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"return": {}} {u'return': {}}
{"return": {}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
image: TEST_DIR/t.IMGFMT {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 65536, 'refcount-bits': 16, 'version': 'v3', 'preallocation': 'off', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'lazy-refcounts': False, 'driver': 'qcow2', 'size': 67108864}}}
{u'return': {}}
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
image: TEST_IMG
file format: IMGFMT file format: IMGFMT
virtual size: 64M (67108864 bytes) virtual size: 64M (67108864 bytes)
cluster_size: 65536 cluster_size: 65536
@ -43,15 +46,17 @@ Format specific information:
=== Successful image creation (v3 non-default options) === === Successful image creation (v3 non-default options) ===
Testing: {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'nocow': True, 'preallocation': 'falloc', 'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}}
QMP_VERSION {u'return': {}}
{"return": {}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"return": {}} {u'return': {}}
{"return": {}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
image: TEST_DIR/t.IMGFMT {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 2097152, 'refcount-bits': 1, 'version': 'v3', 'preallocation': 'metadata', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'lazy-refcounts': True, 'driver': 'qcow2', 'size': 33554432}}}
{u'return': {}}
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
image: TEST_IMG
file format: IMGFMT file format: IMGFMT
virtual size: 32M (33554432 bytes) virtual size: 32M (33554432 bytes)
cluster_size: 2097152 cluster_size: 2097152
@ -63,19 +68,21 @@ Format specific information:
=== Successful image creation (v2 non-default options) === === Successful image creation (v2 non-default options) ===
Testing: {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}}}
QMP_VERSION {u'return': {}}
{"return": {}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"return": {}} {u'return': {}}
{"return": {}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
image: TEST_DIR/t.IMGFMT {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 512, 'backing-fmt': 'qcow2', 'driver': 'qcow2', 'version': 'v2', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'backing-file': 'TEST_DIR/PID-t.qcow2.base', 'size': 33554432}}}
{u'return': {}}
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
image: TEST_IMG
file format: IMGFMT file format: IMGFMT
virtual size: 32M (33554432 bytes) virtual size: 32M (33554432 bytes)
cluster_size: 512 cluster_size: 512
backing file: TEST_DIR/t.IMGFMT.base backing file: TEST_IMG.base
backing file format: IMGFMT backing file format: IMGFMT
Format specific information: Format specific information:
compat: 0.10 compat: 0.10
@ -83,16 +90,16 @@ Format specific information:
=== Successful image creation (encrypted) === === Successful image creation (encrypted) ===
Testing: -object secret,id=keysec0,data=foo {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'encrypt': {'key-secret': 'keysec0', 'iter-time': 10, 'cipher-mode': 'ctr', 'ivgen-hash-alg': 'md5', 'cipher-alg': 'twofish-128', 'format': 'luks', 'ivgen-alg': 'plain64', 'hash-alg': 'sha1'}, 'driver': 'qcow2', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.qcow2'}, 'size': 33554432}}}
QMP_VERSION {u'return': {}}
{"return": {}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"return": {}} {u'return': {}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
image: TEST_DIR/t.IMGFMT image: TEST_IMG
file format: IMGFMT file format: IMGFMT
virtual size: 32M (33554432 bytes) virtual size: 32M (33554432 bytes)
encrypted: yes
cluster_size: 65536
Format specific information: Format specific information:
compat: 1.1 compat: 1.1
lazy refcounts: false lazy refcounts: false
@ -101,13 +108,13 @@ Format specific information:
ivgen alg: plain64 ivgen alg: plain64
hash alg: sha1 hash alg: sha1
cipher alg: twofish-128 cipher alg: twofish-128
uuid: 00000000-0000-0000-0000-000000000000 uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
format: luks format: luks
cipher mode: ctr cipher mode: ctr
slots: slots:
[0]: [0]:
active: true active: true
iters: 1024 iters: XXX
key offset: 4096 key offset: 4096
stripes: 4000 stripes: 4000
[1]: [1]:
@ -132,78 +139,118 @@ Format specific information:
active: false active: false
key offset: 462848 key offset: 462848
payload offset: 528384 payload offset: 528384
master key iters: 1024 master key iters: XXX
corrupt: false corrupt: false
=== Invalid BlockdevRef === === Invalid BlockdevRef ===
Testing: {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': "this doesn't exist", 'size': 33554432}}}
QMP_VERSION {u'return': {}}
{"return": {}} Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist
{"error": {"class": "GenericError", "desc": "Cannot find device=this doesn't exist nor node_name=this doesn't exist"}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"return": {}} {u'return': {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
=== Invalid sizes === === Invalid sizes ===
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 1234}}}
{u'return': {}}
Job failed: Image size must be a multiple of 512 bytes
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 18446744073709551104L}}}
QMP_VERSION {u'return': {}}
{"return": {}} Job failed: Could not resize image: Image size cannot be negative
{"error": {"class": "GenericError", "desc": "Image size must be a multiple of 512 bytes"}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"error": {"class": "GenericError", "desc": "Could not resize image: Image size cannot be negative"}} {u'return': {}}
{"error": {"class": "GenericError", "desc": "Could not resize image: Image size cannot be negative"}}
{"error": {"class": "GenericError", "desc": "Could not resize image: Failed to grow the L1 table: File too large"}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 9223372036854775808L}}}
{u'return': {}}
Job failed: Could not resize image: Image size cannot be negative
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'qcow2', 'file': 'node0', 'size': 9223372036854775296}}}
{u'return': {}}
Job failed: Could not resize image: Failed to grow the L1 table: File too large
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
=== Invalid version === === Invalid version ===
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'version': 'v1', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{u'error': {u'class': u'GenericError', u'desc': u"Invalid parameter 'v1'"}}
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'lazy-refcounts': True, 'version': 'v2', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
QMP_VERSION {u'return': {}}
{"return": {}} Job failed: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater)
{"error": {"class": "GenericError", "desc": "Invalid parameter 'v1'"}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"error": {"class": "GenericError", "desc": "Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater)"}} {u'return': {}}
{"error": {"class": "GenericError", "desc": "Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)"}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 8, 'version': 'v2', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{u'return': {}}
Job failed: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
=== Invalid backing file options === === Invalid backing file options ===
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'preallocation': 'full', 'driver': 'qcow2', 'backing-file': '/dev/null', 'file': 'node0', 'size': 67108864}}}
{u'return': {}}
Job failed: Backing file and preallocation cannot be used at the same time
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'backing-fmt': 'qcow2', 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
QMP_VERSION {u'return': {}}
{"return": {}} Job failed: Backing format cannot be used without backing file
{"error": {"class": "GenericError", "desc": "Backing file and preallocation cannot be used at the same time"}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"error": {"class": "GenericError", "desc": "Backing format cannot be used without backing file"}} {u'return': {}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
=== Invalid cluster size === === Invalid cluster size ===
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 1234, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{u'return': {}}
Job failed: Cluster size must be a power of two between 512 and 2048k
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 128, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
QMP_VERSION {u'return': {}}
{"return": {}} Job failed: Cluster size must be a power of two between 512 and 2048k
{"error": {"class": "GenericError", "desc": "Cluster size must be a power of two between 512 and 2048k"}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"error": {"class": "GenericError", "desc": "Cluster size must be a power of two between 512 and 2048k"}} {u'return': {}}
{"error": {"class": "GenericError", "desc": "Cluster size must be a power of two between 512 and 2048k"}}
{"error": {"class": "GenericError", "desc": "Cluster size must be a power of two between 512 and 2048k"}}
{"error": {"class": "GenericError", "desc": "Could not resize image: Failed to grow the L1 table: File too large"}}
{"return": {}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 4194304, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{u'return': {}}
Job failed: Cluster size must be a power of two between 512 and 2048k
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 0, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{u'return': {}}
Job failed: Cluster size must be a power of two between 512 and 2048k
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'cluster-size': 512, 'driver': 'qcow2', 'file': 'node0', 'size': 281474976710656}}}
{u'return': {}}
Job failed: Could not resize image: Failed to grow the L1 table: File too large
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
=== Invalid refcount width === === Invalid refcount width ===
{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 128, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{u'return': {}}
Job failed: Refcount width must be a power of two and may not exceed 64 bits
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 0, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
QMP_VERSION {u'return': {}}
{"return": {}} Job failed: Refcount width must be a power of two and may not exceed 64 bits
{"error": {"class": "GenericError", "desc": "Refcount width must be a power of two and may not exceed 64 bits"}} {'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{"error": {"class": "GenericError", "desc": "Refcount width must be a power of two and may not exceed 64 bits"}} {u'return': {}}
{"error": {"class": "GenericError", "desc": "Refcount width must be a power of two and may not exceed 64 bits"}}
{"return": {}} {'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'refcount-bits': 7, 'driver': 'qcow2', 'file': 'node0', 'size': 67108864}}}
{"timestamp": {"seconds": TIMESTAMP, "microseconds": TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}} {u'return': {}}
Job failed: Refcount width must be a power of two and may not exceed 64 bits
{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
{u'return': {}}
*** done

View File

@ -204,9 +204,9 @@
203 rw auto migration 203 rw auto migration
204 rw auto quick 204 rw auto quick
205 rw auto quick 205 rw auto quick
206 rw auto
# TODO The following commented out tests need to be reworked to work # TODO The following commented out tests need to be reworked to work
# with the x-blockdev-create job # with the x-blockdev-create job
#206 rw auto
#207 rw auto #207 rw auto
208 rw auto quick 208 rw auto quick
209 rw auto quick 209 rw auto quick