Blame SOURCES/kvm-qemu-iotests-Rewrite-210-for-blockdev-create-job.patch

1bdc94
From 609b0ba5919f07e407127911ae6f3b15cc15e324 Mon Sep 17 00:00:00 2001
1bdc94
From: Kevin Wolf <kwolf@redhat.com>
1bdc94
Date: Tue, 26 Jun 2018 09:48:48 +0200
1bdc94
Subject: [PATCH 79/89] qemu-iotests: Rewrite 210 for blockdev-create job
1bdc94
1bdc94
RH-Author: Kevin Wolf <kwolf@redhat.com>
1bdc94
Message-id: <20180626094856.6924-66-kwolf@redhat.com>
1bdc94
Patchwork-id: 81090
1bdc94
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 65/73] qemu-iotests: Rewrite 210 for blockdev-create job
1bdc94
Bugzilla: 1513543
1bdc94
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
1bdc94
RH-Acked-by: Max Reitz <mreitz@redhat.com>
1bdc94
RH-Acked-by: Fam Zheng <famz@redhat.com>
1bdc94
1bdc94
This rewrites the test case 210 to work with the new x-blockdev-create
1bdc94
job rather than the old synchronous version of the command.
1bdc94
1bdc94
All of the test cases stay the same as before, but in order to be able
1bdc94
to implement proper job handling, the test case is rewritten in Python.
1bdc94
1bdc94
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
1bdc94
Reviewed-by: Max Reitz <mreitz@redhat.com>
1bdc94
Reviewed-by: Jeff Cody <jcody@redhat.com>
1bdc94
(cherry picked from commit 5ba141dc6f17ca0f250f107aace2df19558c8bc4)
1bdc94
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
1bdc94
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
1bdc94
---
1bdc94
 tests/qemu-iotests/210        | 393 ++++++++++++++++++------------------------
1bdc94
 tests/qemu-iotests/210.out    | 197 ++++++++++++++-------
1bdc94
 tests/qemu-iotests/group      |   2 +-
1bdc94
 tests/qemu-iotests/iotests.py |  12 +-
1bdc94
 4 files changed, 314 insertions(+), 290 deletions(-)
1bdc94
1bdc94
diff --git a/tests/qemu-iotests/210 b/tests/qemu-iotests/210
1bdc94
index e607c0d..ff4fdde 100755
1bdc94
--- a/tests/qemu-iotests/210
1bdc94
+++ b/tests/qemu-iotests/210
1bdc94
@@ -1,9 +1,11 @@
1bdc94
-#!/bin/bash
1bdc94
+#!/usr/bin/env python
1bdc94
 #
1bdc94
 # Test luks and file image creation
1bdc94
 #
1bdc94
 # Copyright (C) 2018 Red Hat, Inc.
1bdc94
 #
1bdc94
+# Creator/Owner: Kevin Wolf <kwolf@redhat.com>
1bdc94
+#
1bdc94
 # This program is free software; you can redistribute it and/or modify
1bdc94
 # it under the terms of the GNU General Public License as published by
1bdc94
 # the Free Software Foundation; either version 2 of the License, or
1bdc94
@@ -18,230 +20,165 @@
1bdc94
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
1bdc94
 #
1bdc94
 
1bdc94
-# creator
1bdc94
-owner=kwolf@redhat.com
1bdc94
-
1bdc94
-seq=`basename $0`
1bdc94
-echo "QA output created by $seq"
1bdc94
-
1bdc94
-here=`pwd`
1bdc94
-status=1	# failure is the default!
1bdc94
-
1bdc94
-# get standard environment, filters and checks
1bdc94
-. ./common.rc
1bdc94
-. ./common.filter
1bdc94
-
1bdc94
-_supported_fmt luks
1bdc94
-_supported_proto file
1bdc94
-_supported_os Linux
1bdc94
-
1bdc94
-function do_run_qemu()
1bdc94
-{
1bdc94
-    echo Testing: "$@"
1bdc94
-    $QEMU -nographic -qmp stdio -serial none "$@"
1bdc94
-    echo
1bdc94
-}
1bdc94
-
1bdc94
-function run_qemu()
1bdc94
-{
1bdc94
-    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
1bdc94
-                          | _filter_qemu | _filter_imgfmt \
1bdc94
-                          | _filter_actual_image_size
1bdc94
-}
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Successful image creation (defaults) ==="
1bdc94
-echo
1bdc94
-
1bdc94
-size=$((128 * 1024 * 1024))
1bdc94
-
1bdc94
-run_qemu -object secret,id=keysec0,data="foo" <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "filename": "$TEST_IMG_FILE",
1bdc94
-      "size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "blockdev-add",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "node-name": "imgfile",
1bdc94
-      "filename": "$TEST_IMG_FILE"
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "imgfile",
1bdc94
-      "key-secret": "keysec0",
1bdc94
-      "size": $size,
1bdc94
-      "iter-time": 10
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-_img_info --format-specific | _filter_img_info --format-specific
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Successful image creation (with non-default options) ==="
1bdc94
-echo
1bdc94
-
1bdc94
-# Choose a different size to show that we got a new image
1bdc94
-size=$((64 * 1024 * 1024))
1bdc94
-
1bdc94
-run_qemu -object secret,id=keysec0,data="foo" <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "filename": "$TEST_IMG_FILE",
1bdc94
-      "size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": {
1bdc94
-          "driver": "file",
1bdc94
-          "filename": "$TEST_IMG_FILE"
1bdc94
-      },
1bdc94
-      "size": $size,
1bdc94
-      "key-secret": "keysec0",
1bdc94
-      "cipher-alg": "twofish-128",
1bdc94
-      "cipher-mode": "ctr",
1bdc94
-      "ivgen-alg": "plain64",
1bdc94
-      "ivgen-hash-alg": "md5",
1bdc94
-      "hash-alg": "sha1",
1bdc94
-      "iter-time": 10
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-_img_info --format-specific | _filter_img_info --format-specific
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Invalid BlockdevRef ==="
1bdc94
-echo
1bdc94
-
1bdc94
-run_qemu <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "this doesn't exist",
1bdc94
-      "size": $size
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Zero size ==="
1bdc94
-echo
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG_FILE",node-name=node0 \
1bdc94
-         -object secret,id=keysec0,data="foo" <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "key-secret": "keysec0",
1bdc94
-      "size": 0,
1bdc94
-      "iter-time": 10
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-_img_info | _filter_img_info
1bdc94
-
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Invalid sizes ==="
1bdc94
-echo
1bdc94
-
1bdc94
-# TODO Negative image sizes aren't handled correctly, but this is a problem
1bdc94
-# with QAPI's implementation of the 'size' type and affects other commands as
1bdc94
-# well. Once this is fixed, we may want to add a test case here.
1bdc94
-
1bdc94
-# 1. 2^64 - 512
1bdc94
-# 2. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
1bdc94
-# 3. 2^63 - 512 (generally valid, but with the crypto header the file will
1bdc94
-#                exceed 63 bits)
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG_FILE",node-name=node0 \
1bdc94
-         -object secret,id=keysec0,data="foo" <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "key-secret": "keysec0",
1bdc94
-      "size": 18446744073709551104
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "key-secret": "keysec0",
1bdc94
-      "size": 9223372036854775808
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "key-secret": "keysec0",
1bdc94
-      "size": 9223372036854775296
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Resize image with invalid sizes ==="
1bdc94
-echo
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG_FILE",node-name=node0 \
1bdc94
-         -blockdev driver=luks,file=node0,key-secret=keysec0,node-name=node1 \
1bdc94
-         -object secret,id=keysec0,data="foo" <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "block_resize",
1bdc94
-  "arguments": {
1bdc94
-      "node-name": "node1",
1bdc94
-      "size": 9223372036854775296
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "block_resize",
1bdc94
-  "arguments": {
1bdc94
-      "node-name": "node1",
1bdc94
-      "size": 9223372036854775808
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "block_resize",
1bdc94
-  "arguments": {
1bdc94
-      "node-name": "node1",
1bdc94
-      "size": 18446744073709551104
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "block_resize",
1bdc94
-  "arguments": {
1bdc94
-      "node-name": "node1",
1bdc94
-      "size": -9223372036854775808
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-_img_info | _filter_img_info
1bdc94
-
1bdc94
-# success, all done
1bdc94
-echo "*** done"
1bdc94
-rm -f $seq.full
1bdc94
-status=0
1bdc94
+import iotests
1bdc94
+from iotests import imgfmt
1bdc94
+
1bdc94
+iotests.verify_image_format(supported_fmts=['luks'])
1bdc94
+iotests.verify_protocol(supported=['file'])
1bdc94
+
1bdc94
+def blockdev_create(vm, options):
1bdc94
+    result = vm.qmp_log('x-blockdev-create', job_id='job0', options=options)
1bdc94
+
1bdc94
+    if 'return' in result:
1bdc94
+        assert result['return'] == {}
1bdc94
+        vm.run_job('job0')
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+with iotests.FilePath('t.luks') as disk_path, \
1bdc94
+     iotests.VM() as vm:
1bdc94
+
1bdc94
+    vm.add_object('secret,id=keysec0,data=foo')
1bdc94
+
1bdc94
+    #
1bdc94
+    # Successful image creation (defaults)
1bdc94
+    #
1bdc94
+    iotests.log("=== Successful image creation (defaults) ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    size = 128 * 1024 * 1024
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    blockdev_create(vm, { 'driver': 'file',
1bdc94
+                          'filename': disk_path,
1bdc94
+                          'size': 0 })
1bdc94
+
1bdc94
+    vm.qmp_log('blockdev-add', driver='file', filename=disk_path,
1bdc94
+               node_name='imgfile')
1bdc94
+
1bdc94
+    blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                          'file': 'imgfile',
1bdc94
+                          'key-secret': 'keysec0',
1bdc94
+                          'size': size,
1bdc94
+                          'iter-time': 10 })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    # TODO Proper support for images to be used with imgopts and/or protocols
1bdc94
+    iotests.img_info_log(
1bdc94
+        'driver=luks,file.driver=file,file.filename=%s,key-secret=keysec0' % (disk_path),
1bdc94
+        filter_path=disk_path,
1bdc94
+        extra_args=['--object', 'secret,id=keysec0,data=foo'],
1bdc94
+        imgopts=True)
1bdc94
+
1bdc94
+    #
1bdc94
+    # Successful image creation (with non-default options)
1bdc94
+    #
1bdc94
+    iotests.log("=== Successful image creation (with non-default options) ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    size = 64 * 1024 * 1024
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    blockdev_create(vm, { 'driver': 'file',
1bdc94
+                          'filename': disk_path,
1bdc94
+                          'size': 0 })
1bdc94
+    blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                          'file': {
1bdc94
+                              'driver': 'file',
1bdc94
+                              'filename': disk_path,
1bdc94
+                          },
1bdc94
+                          'size': size,
1bdc94
+                          'key-secret': 'keysec0',
1bdc94
+                          'cipher-alg': 'twofish-128',
1bdc94
+                          'cipher-mode': 'ctr',
1bdc94
+                          'ivgen-alg': 'plain64',
1bdc94
+                          'ivgen-hash-alg': 'md5',
1bdc94
+                          'hash-alg': 'sha1',
1bdc94
+                          'iter-time': 10 })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    # TODO Proper support for images to be used with imgopts and/or protocols
1bdc94
+    iotests.img_info_log(
1bdc94
+        'driver=luks,file.driver=file,file.filename=%s,key-secret=keysec0' % (disk_path),
1bdc94
+        filter_path=disk_path,
1bdc94
+        extra_args=['--object', 'secret,id=keysec0,data=foo'],
1bdc94
+        imgopts=True)
1bdc94
+
1bdc94
+    #
1bdc94
+    # Invalid BlockdevRef
1bdc94
+    #
1bdc94
+    iotests.log("=== Invalid BlockdevRef ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    size = 64 * 1024 * 1024
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                          'file': "this doesn't exist",
1bdc94
+                          'size': size })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    #
1bdc94
+    # Zero size
1bdc94
+    #
1bdc94
+    iotests.log("=== Zero size ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.add_blockdev('driver=file,filename=%s,node-name=node0' % (disk_path))
1bdc94
+    vm.launch()
1bdc94
+    blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                          'file': 'node0',
1bdc94
+                          'key-secret': 'keysec0',
1bdc94
+                          'size': 0,
1bdc94
+                          'iter-time': 10 })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    # TODO Proper support for images to be used with imgopts and/or protocols
1bdc94
+    iotests.img_info_log(
1bdc94
+        'driver=luks,file.driver=file,file.filename=%s,key-secret=keysec0' % (disk_path),
1bdc94
+        filter_path=disk_path,
1bdc94
+        extra_args=['--object', 'secret,id=keysec0,data=foo'],
1bdc94
+        imgopts=True)
1bdc94
+
1bdc94
+    #
1bdc94
+    # Invalid sizes
1bdc94
+    #
1bdc94
+
1bdc94
+    # TODO Negative image sizes aren't handled correctly, but this is a problem
1bdc94
+    # with QAPI's implementation of the 'size' type and affects other commands as
1bdc94
+    # well. Once this is fixed, we may want to add a test case here.
1bdc94
+
1bdc94
+    # 1. 2^64 - 512
1bdc94
+    # 2. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
1bdc94
+    # 3. 2^63 - 512 (generally valid, but with the crypto header the file will
1bdc94
+    #                exceed 63 bits)
1bdc94
+    iotests.log("=== Invalid sizes ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    for size in [ 18446744073709551104, 9223372036854775808, 9223372036854775296 ]:
1bdc94
+        blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                              'file': 'node0',
1bdc94
+                              'key-secret': 'keysec0',
1bdc94
+                              'size': size })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    #
1bdc94
+    # Resize image with invalid sizes
1bdc94
+    #
1bdc94
+    iotests.log("=== Resize image with invalid sizes ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.add_blockdev('driver=luks,file=node0,key-secret=keysec0,node-name=node1')
1bdc94
+    vm.launch()
1bdc94
+    vm.qmp_log('block_resize', node_name='node1', size=9223372036854775296)
1bdc94
+    vm.qmp_log('block_resize', node_name='node1', size=9223372036854775808)
1bdc94
+    vm.qmp_log('block_resize', node_name='node1', size=18446744073709551104)
1bdc94
+    vm.qmp_log('block_resize', node_name='node1', size=-9223372036854775808)
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    # TODO Proper support for images to be used with imgopts and/or protocols
1bdc94
+    iotests.img_info_log(
1bdc94
+        'driver=luks,file.driver=file,file.filename=%s,key-secret=keysec0' % (disk_path),
1bdc94
+        filter_path=disk_path,
1bdc94
+        extra_args=['--object', 'secret,id=keysec0,data=foo'],
1bdc94
+        imgopts=True)
1bdc94
diff --git a/tests/qemu-iotests/210.out b/tests/qemu-iotests/210.out
1bdc94
index 8198f8c..0e6e5c0 100644
1bdc94
--- a/tests/qemu-iotests/210.out
1bdc94
+++ b/tests/qemu-iotests/210.out
1bdc94
@@ -1,29 +1,31 @@
1bdc94
-QA output created by 210
1bdc94
-
1bdc94
 === Successful image creation (defaults) ===
1bdc94
 
1bdc94
-Testing: -object secret,id=keysec0,data=foo
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.luks'}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'blockdev-add', 'arguments': {'node_name': 'imgfile', 'driver': 'file', 'filename': 'TEST_DIR/PID-t.luks'}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'key-secret': 'keysec0', 'iter-time': 10, 'driver': 'luks', 'file': 'imgfile', 'size': 134217728}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "key-secret": "keysec0"}
1bdc94
+image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_IMG"}, "key-secret": "keysec0"}
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 128M (134217728 bytes)
1bdc94
+encrypted: yes
1bdc94
 Format specific information:
1bdc94
     ivgen alg: plain64
1bdc94
     hash alg: sha256
1bdc94
     cipher alg: aes-256
1bdc94
-    uuid: 00000000-0000-0000-0000-000000000000
1bdc94
+    uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
1bdc94
     cipher mode: xts
1bdc94
     slots:
1bdc94
         [0]:
1bdc94
             active: true
1bdc94
-            iters: 1024
1bdc94
+            iters: XXX
1bdc94
             key offset: 4096
1bdc94
             stripes: 4000
1bdc94
         [1]:
1bdc94
@@ -48,31 +50,34 @@ Format specific information:
1bdc94
             active: false
1bdc94
             key offset: 1810432
1bdc94
     payload offset: 2068480
1bdc94
-    master key iters: 1024
1bdc94
+    master key iters: XXX
1bdc94
 
1bdc94
 === Successful image creation (with non-default options) ===
1bdc94
 
1bdc94
-Testing: -object secret,id=keysec0,data=foo
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.luks'}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'key-secret': 'keysec0', 'hash-alg': 'sha1', 'cipher-mode': 'ctr', 'cipher-alg': 'twofish-128', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.luks'}, 'iter-time': 10, 'ivgen-alg': 'plain64', 'ivgen-hash-alg': 'md5', 'driver': 'luks', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "key-secret": "keysec0"}
1bdc94
+image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_IMG"}, "key-secret": "keysec0"}
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 64M (67108864 bytes)
1bdc94
+encrypted: yes
1bdc94
 Format specific information:
1bdc94
     ivgen alg: plain64
1bdc94
     hash alg: sha1
1bdc94
     cipher alg: twofish-128
1bdc94
-    uuid: 00000000-0000-0000-0000-000000000000
1bdc94
+    uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
1bdc94
     cipher mode: ctr
1bdc94
     slots:
1bdc94
         [0]:
1bdc94
             active: true
1bdc94
-            iters: 1024
1bdc94
+            iters: XXX
1bdc94
             key offset: 4096
1bdc94
             stripes: 4000
1bdc94
         [1]:
1bdc94
@@ -97,56 +102,130 @@ Format specific information:
1bdc94
             active: false
1bdc94
             key offset: 462848
1bdc94
     payload offset: 528384
1bdc94
-    master key iters: 1024
1bdc94
+    master key iters: XXX
1bdc94
 
1bdc94
 === Invalid BlockdevRef ===
1bdc94
 
1bdc94
-Testing:
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Cannot find device=this doesn't exist nor node_name=this doesn't exist"}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
-
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'luks', 'file': "this doesn't exist", 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
 === Zero size ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 -object secret,id=keysec0,data=foo
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'key-secret': 'keysec0', 'iter-time': 10, 'driver': 'luks', 'file': 'node0', 'size': 0}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "key-secret": "keysec0"}
1bdc94
+image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_IMG"}, "key-secret": "keysec0"}
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 0 (0 bytes)
1bdc94
+encrypted: yes
1bdc94
+Format specific information:
1bdc94
+    ivgen alg: plain64
1bdc94
+    hash alg: sha256
1bdc94
+    cipher alg: aes-256
1bdc94
+    uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
1bdc94
+    cipher mode: xts
1bdc94
+    slots:
1bdc94
+        [0]:
1bdc94
+            active: true
1bdc94
+            iters: XXX
1bdc94
+            key offset: 4096
1bdc94
+            stripes: 4000
1bdc94
+        [1]:
1bdc94
+            active: false
1bdc94
+            key offset: 262144
1bdc94
+        [2]:
1bdc94
+            active: false
1bdc94
+            key offset: 520192
1bdc94
+        [3]:
1bdc94
+            active: false
1bdc94
+            key offset: 778240
1bdc94
+        [4]:
1bdc94
+            active: false
1bdc94
+            key offset: 1036288
1bdc94
+        [5]:
1bdc94
+            active: false
1bdc94
+            key offset: 1294336
1bdc94
+        [6]:
1bdc94
+            active: false
1bdc94
+            key offset: 1552384
1bdc94
+        [7]:
1bdc94
+            active: false
1bdc94
+            key offset: 1810432
1bdc94
+    payload offset: 2068480
1bdc94
+    master key iters: XXX
1bdc94
 
1bdc94
 === Invalid sizes ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 -object secret,id=keysec0,data=foo
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"error": {"class": "GenericError", "desc": "The requested file size is too large"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "The requested file size is too large"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "The requested file size is too large"}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'key-secret': 'keysec0', 'driver': 'luks', 'file': 'node0', 'size': 18446744073709551104L}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: The requested file size is too large
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'key-secret': 'keysec0', 'driver': 'luks', 'file': 'node0', 'size': 9223372036854775808L}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: The requested file size is too large
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'key-secret': 'keysec0', 'driver': 'luks', 'file': 'node0', 'size': 9223372036854775296}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: The requested file size is too large
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
 === Resize image with invalid sizes ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0 -blockdev driver=IMGFMT,file=node0,key-secret=keysec0,node-name=node1 -object secret,id=keysec0,data=foo
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"error": {"class": "GenericError", "desc": "The requested file size is too large"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'size', expected: integer"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Invalid parameter type for 'size', expected: integer"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Parameter 'size' expects a >0 size"}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
-
1bdc94
-image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_DIR/t.IMGFMT"}, "key-secret": "keysec0"}
1bdc94
+{'execute': 'block_resize', 'arguments': {'size': 9223372036854775296, 'node_name': 'node1'}}
1bdc94
+{u'error': {u'class': u'GenericError', u'desc': u'The requested file size is too large'}}
1bdc94
+{'execute': 'block_resize', 'arguments': {'size': 9223372036854775808L, 'node_name': 'node1'}}
1bdc94
+{u'error': {u'class': u'GenericError', u'desc': u"Invalid parameter type for 'size', expected: integer"}}
1bdc94
+{'execute': 'block_resize', 'arguments': {'size': 18446744073709551104L, 'node_name': 'node1'}}
1bdc94
+{u'error': {u'class': u'GenericError', u'desc': u"Invalid parameter type for 'size', expected: integer"}}
1bdc94
+{'execute': 'block_resize', 'arguments': {'size': -9223372036854775808, 'node_name': 'node1'}}
1bdc94
+{u'error': {u'class': u'GenericError', u'desc': u"Parameter 'size' expects a >0 size"}}
1bdc94
+image: json:{"driver": "IMGFMT", "file": {"driver": "file", "filename": "TEST_IMG"}, "key-secret": "keysec0"}
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 0 (0 bytes)
1bdc94
-*** done
1bdc94
+encrypted: yes
1bdc94
+Format specific information:
1bdc94
+    ivgen alg: plain64
1bdc94
+    hash alg: sha256
1bdc94
+    cipher alg: aes-256
1bdc94
+    uuid: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
1bdc94
+    cipher mode: xts
1bdc94
+    slots:
1bdc94
+        [0]:
1bdc94
+            active: true
1bdc94
+            iters: XXX
1bdc94
+            key offset: 4096
1bdc94
+            stripes: 4000
1bdc94
+        [1]:
1bdc94
+            active: false
1bdc94
+            key offset: 262144
1bdc94
+        [2]:
1bdc94
+            active: false
1bdc94
+            key offset: 520192
1bdc94
+        [3]:
1bdc94
+            active: false
1bdc94
+            key offset: 778240
1bdc94
+        [4]:
1bdc94
+            active: false
1bdc94
+            key offset: 1036288
1bdc94
+        [5]:
1bdc94
+            active: false
1bdc94
+            key offset: 1294336
1bdc94
+        [6]:
1bdc94
+            active: false
1bdc94
+            key offset: 1552384
1bdc94
+        [7]:
1bdc94
+            active: false
1bdc94
+            key offset: 1810432
1bdc94
+    payload offset: 2068480
1bdc94
+    master key iters: XXX
1bdc94
+
1bdc94
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
1bdc94
index 649291a..3ecdafa 100644
1bdc94
--- a/tests/qemu-iotests/group
1bdc94
+++ b/tests/qemu-iotests/group
1bdc94
@@ -208,9 +208,9 @@
1bdc94
 207 rw auto
1bdc94
 208 rw auto quick
1bdc94
 209 rw auto quick
1bdc94
+210 rw auto
1bdc94
 # TODO The following commented out tests need to be reworked to work
1bdc94
 # with the x-blockdev-create job
1bdc94
-#210 rw auto
1bdc94
 #211 rw auto quick
1bdc94
 #212 rw auto quick
1bdc94
 #213 rw auto quick
1bdc94
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
1bdc94
index 9f1759d..0b204dc 100644
1bdc94
--- a/tests/qemu-iotests/iotests.py
1bdc94
+++ b/tests/qemu-iotests/iotests.py
1bdc94
@@ -109,8 +109,16 @@ def qemu_img_pipe(*args):
1bdc94
         sys.stderr.write('qemu-img received signal %i: %s\n' % (-exitcode, ' '.join(qemu_img_args + list(args))))
1bdc94
     return subp.communicate()[0]
1bdc94
 
1bdc94
-def img_info_log(filename, filter_path=None):
1bdc94
-    output = qemu_img_pipe('info', '-f', imgfmt, filename)
1bdc94
+def img_info_log(filename, filter_path=None, imgopts=False, extra_args=[]):
1bdc94
+    args = [ 'info' ]
1bdc94
+    if imgopts:
1bdc94
+        args.append('--image-opts')
1bdc94
+    else:
1bdc94
+        args += [ '-f', imgfmt ]
1bdc94
+    args += extra_args
1bdc94
+    args.append(filename)
1bdc94
+
1bdc94
+    output = qemu_img_pipe(*args)
1bdc94
     if not filter_path:
1bdc94
         filter_path = filename
1bdc94
     log(filter_img_info(output, filter_path))
1bdc94
-- 
1bdc94
1.8.3.1
1bdc94