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

1bdc94
From 40109f0f193a6aa15858a6bbff47e6842c283d17 Mon Sep 17 00:00:00 2001
1bdc94
From: Kevin Wolf <kwolf@redhat.com>
1bdc94
Date: Tue, 26 Jun 2018 09:48:51 +0200
1bdc94
Subject: [PATCH 82/89] qemu-iotests: Rewrite 213 for blockdev-create job
1bdc94
1bdc94
RH-Author: Kevin Wolf <kwolf@redhat.com>
1bdc94
Message-id: <20180626094856.6924-69-kwolf@redhat.com>
1bdc94
Patchwork-id: 81109
1bdc94
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 68/73] qemu-iotests: Rewrite 213 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 213 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
(cherry picked from commit 0c46a69a5eb8a061134719a0a85898854eb8e533)
1bdc94
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
1bdc94
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
1bdc94
---
1bdc94
 tests/qemu-iotests/213     | 520 +++++++++++++++++----------------------------
1bdc94
 tests/qemu-iotests/213.out | 208 +++++++++++-------
1bdc94
 tests/qemu-iotests/group   |   4 +-
1bdc94
 3 files changed, 319 insertions(+), 413 deletions(-)
1bdc94
1bdc94
diff --git a/tests/qemu-iotests/213 b/tests/qemu-iotests/213
1bdc94
index 3a00a0f..29d25bc 100755
1bdc94
--- a/tests/qemu-iotests/213
1bdc94
+++ b/tests/qemu-iotests/213
1bdc94
@@ -1,9 +1,11 @@
1bdc94
-#!/bin/bash
1bdc94
+#!/usr/bin/env python
1bdc94
 #
1bdc94
 # Test vhdx 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,332 +20,190 @@
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 vhdx
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 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "filename": "$TEST_IMG",
1bdc94
-      "size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "blockdev-add",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "node-name": "imgfile",
1bdc94
-      "filename": "$TEST_IMG"
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "imgfile",
1bdc94
-      "size": $size
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 (explicit defaults) ==="
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 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "filename": "$TEST_IMG",
1bdc94
-      "size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": {
1bdc94
-          "driver": "file",
1bdc94
-          "filename": "$TEST_IMG"
1bdc94
-      },
1bdc94
-      "size": $size,
1bdc94
-      "log-size": 1048576,
1bdc94
-      "block-size": 8388608,
1bdc94
-      "subformat": "dynamic",
1bdc94
-      "block-state-zero": true
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=$((32 * 1024 * 1024))
1bdc94
-
1bdc94
-run_qemu <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "file",
1bdc94
-      "filename": "$TEST_IMG",
1bdc94
-      "size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": {
1bdc94
-          "driver": "file",
1bdc94
-          "filename": "$TEST_IMG"
1bdc94
-      },
1bdc94
-      "size": $size,
1bdc94
-      "log-size": 8388608,
1bdc94
-      "block-size": 268435456,
1bdc94
-      "subformat": "fixed",
1bdc94
-      "block-state-zero": false
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",node-name=node0 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-_img_info | _filter_img_info
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Maximum size ==="
1bdc94
-echo
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 70368744177664
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-_img_info | _filter_img_info
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 image header the file will
1bdc94
-#                exceed 63 bits)
1bdc94
-# 4. 2^46 + 1 (one byte more than maximum image size)
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 18446744073709551104
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 9223372036854775808
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 9223372036854775296
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 70368744177665
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Invalid block size ==="
1bdc94
-echo
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "block-size": 1234567
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "block-size": 128
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "block-size": 3145728
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "block-size": 536870912
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "block-size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
1bdc94
-echo
1bdc94
-echo "=== Invalid log size ==="
1bdc94
-echo
1bdc94
-
1bdc94
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
1bdc94
-{ "execute": "qmp_capabilities" }
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "log-size": 1234567
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "log-size": 128
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "log-size": 4294967296
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "x-blockdev-create",
1bdc94
-  "arguments": {
1bdc94
-      "driver": "$IMGFMT",
1bdc94
-      "file": "node0",
1bdc94
-      "size": 67108864,
1bdc94
-      "log-size": 0
1bdc94
-  }
1bdc94
-}
1bdc94
-{ "execute": "quit" }
1bdc94
-EOF
1bdc94
-
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=['vhdx'])
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.vhdx') as disk_path, \
1bdc94
+     iotests.VM() as vm:
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
+                          'size': size })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    iotests.img_info_log(disk_path)
1bdc94
+
1bdc94
+    #
1bdc94
+    # Successful image creation (explicit defaults)
1bdc94
+    #
1bdc94
+    iotests.log("=== Successful image creation (explicit defaults) ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    # Choose a different size to show that we got a new image
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
+                          'log-size': 1048576,
1bdc94
+                          'block-size': 8388608,
1bdc94
+                          'subformat': 'dynamic',
1bdc94
+                          'block-state-zero': True })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    iotests.img_info_log(disk_path)
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
+    # Choose a different size to show that we got a new image
1bdc94
+    size = 32 * 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
+                          'log-size': 8388608,
1bdc94
+                          'block-size': 268435456,
1bdc94
+                          'subformat': 'fixed',
1bdc94
+                          'block-state-zero': False })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    iotests.img_info_log(disk_path)
1bdc94
+
1bdc94
+    #
1bdc94
+    # Invalid BlockdevRef
1bdc94
+    #
1bdc94
+    iotests.log("=== Invalid BlockdevRef ===")
1bdc94
+    iotests.log("")
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
+                          'size': 0 })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    iotests.img_info_log(disk_path)
1bdc94
+
1bdc94
+    #
1bdc94
+    # Maximum size
1bdc94
+    #
1bdc94
+    iotests.log("=== Maximum size ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                          'file': 'node0',
1bdc94
+                          'size': 70368744177664 })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    iotests.img_info_log(disk_path)
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
1bdc94
+    # as 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 image header the file will
1bdc94
+    #                exceed 63 bits)
1bdc94
+    # 4. 2^46 + 1 (one byte more than maximum image size)
1bdc94
+
1bdc94
+    iotests.log("=== Invalid sizes ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    for size in [ 18446744073709551104, 9223372036854775808,
1bdc94
+                  9223372036854775296, 70368744177665 ]:
1bdc94
+        blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                              'file': 'node0',
1bdc94
+                              'size': size })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    #
1bdc94
+    # Invalid block size
1bdc94
+    #
1bdc94
+    iotests.log("=== Invalid block size ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    for bsize in [ 1234567, 128, 3145728, 536870912, 0 ]:
1bdc94
+        blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                              'file': 'node0',
1bdc94
+                              'size': 67108864,
1bdc94
+                              'block-size': bsize })
1bdc94
+    vm.shutdown()
1bdc94
+
1bdc94
+    #
1bdc94
+    # Invalid log size
1bdc94
+    #
1bdc94
+    iotests.log("=== Invalid log size ===")
1bdc94
+    iotests.log("")
1bdc94
+
1bdc94
+    vm.launch()
1bdc94
+    for lsize in [ 1234567, 128, 4294967296, 0 ]:
1bdc94
+        blockdev_create(vm, { 'driver': imgfmt,
1bdc94
+                              'file': 'node0',
1bdc94
+                              'size': 67108864,
1bdc94
+                              'log-size': lsize })
1bdc94
+    vm.shutdown()
1bdc94
diff --git a/tests/qemu-iotests/213.out b/tests/qemu-iotests/213.out
1bdc94
index 8e8fc29..f18a39a 100644
1bdc94
--- a/tests/qemu-iotests/213.out
1bdc94
+++ b/tests/qemu-iotests/213.out
1bdc94
@@ -1,121 +1,169 @@
1bdc94
-QA output created by 213
1bdc94
-
1bdc94
 === Successful image creation (defaults) ===
1bdc94
 
1bdc94
-Testing:
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.vhdx'}}}
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.vhdx'}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'imgfile', 'size': 134217728}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: TEST_DIR/t.IMGFMT
1bdc94
+image: TEST_IMG
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 128M (134217728 bytes)
1bdc94
+cluster_size: 8388608
1bdc94
 
1bdc94
 === Successful image creation (explicit defaults) ===
1bdc94
 
1bdc94
-Testing:
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.vhdx'}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: TEST_DIR/t.IMGFMT
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'block-size': 8388608, 'driver': 'vhdx', 'subformat': 'dynamic', 'log-size': 1048576, 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}, 'block-state-zero': True, 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+image: TEST_IMG
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 64M (67108864 bytes)
1bdc94
+cluster_size: 8388608
1bdc94
 
1bdc94
 === Successful image creation (with non-default options) ===
1bdc94
 
1bdc94
-Testing:
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.vhdx'}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'block-size': 268435456, 'driver': 'vhdx', 'subformat': 'fixed', 'log-size': 8388608, 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}, 'block-state-zero': False, 'size': 33554432}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: TEST_DIR/t.IMGFMT
1bdc94
+image: TEST_IMG
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 32M (33554432 bytes)
1bdc94
+cluster_size: 268435456
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': 'vhdx', 'file': "this doesn't exist", 'size': 33554432}}}
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
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': {'driver': 'vhdx', 'file': 'node0', 'size': 0}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: TEST_DIR/t.IMGFMT
1bdc94
+image: TEST_IMG
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 0 (0 bytes)
1bdc94
+cluster_size: 8388608
1bdc94
 
1bdc94
 === Maximum size ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
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': {'driver': 'vhdx', 'file': 'node0', 'size': 70368744177664}}}
1bdc94
+{u'return': {}}
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
-image: TEST_DIR/t.IMGFMT
1bdc94
+image: TEST_IMG
1bdc94
 file format: IMGFMT
1bdc94
 virtual size: 64T (70368744177664 bytes)
1bdc94
+cluster_size: 67108864
1bdc94
 
1bdc94
 === Invalid sizes ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
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': 'vhdx', 'file': 'node0', 'size': 18446744073709551104L}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Image size too large; max of 64TB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 9223372036854775808L}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Image size too large; max of 64TB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 9223372036854775296}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Image size too large; max of 64TB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 70368744177665}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Image size too large; max of 64TB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
 === Invalid block size ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Block size must be a multiple of 1 MB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Block size must be a multiple of 1 MB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Block size must be a power of two"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Block size must not exceed 268435456"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Block size must be a multiple of 1 MB"}}
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': 'vhdx', 'block-size': 1234567, 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Block size must be a multiple of 1 MB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 128, 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Block size must be a multiple of 1 MB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 3145728, 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Block size must be a power of two
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 536870912, 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Block size must not exceed 268435456
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 0, 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Block size must be a multiple of 1 MB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
 
1bdc94
 === Invalid log size ===
1bdc94
 
1bdc94
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
1bdc94
-QMP_VERSION
1bdc94
-{"return": {}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Log size must be a multiple of 1 MB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Log size must be a multiple of 1 MB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Log size must be smaller than 4 GB"}}
1bdc94
-{"error": {"class": "GenericError", "desc": "Log size must be a multiple of 1 MB"}}
1bdc94
-{"return": {}}
1bdc94
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
1bdc94
-
1bdc94
-*** done
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 1234567, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Log size must be a multiple of 1 MB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 128, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Log size must be a multiple of 1 MB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 4294967296, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Log size must be smaller than 4 GB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 0, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
1bdc94
+{u'return': {}}
1bdc94
+Job failed: Log size must be a multiple of 1 MB
1bdc94
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
1bdc94
+{u'return': {}}
1bdc94
+
1bdc94
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
1bdc94
index 3753b13..5c55adc 100644
1bdc94
--- a/tests/qemu-iotests/group
1bdc94
+++ b/tests/qemu-iotests/group
1bdc94
@@ -211,9 +211,7 @@
1bdc94
 210 rw auto
1bdc94
 211 rw auto quick
1bdc94
 212 rw auto quick
1bdc94
-# TODO The following commented out tests need to be reworked to work
1bdc94
-# with the x-blockdev-create job
1bdc94
-#213 rw auto quick
1bdc94
+213 rw auto quick
1bdc94
 214 rw auto
1bdc94
 215 rw auto quick
1bdc94
 216 rw auto quick
1bdc94
-- 
1bdc94
1.8.3.1
1bdc94