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

ae23c9
From f1d2e1321537263ea3555b1d0acdc8c39baac32d Mon Sep 17 00:00:00 2001
ae23c9
From: Kevin Wolf <kwolf@redhat.com>
ae23c9
Date: Tue, 26 Jun 2018 09:48:51 +0200
ae23c9
Subject: [PATCH 143/268] qemu-iotests: Rewrite 213 for blockdev-create job
ae23c9
ae23c9
RH-Author: Kevin Wolf <kwolf@redhat.com>
ae23c9
Message-id: <20180626094856.6924-69-kwolf@redhat.com>
ae23c9
Patchwork-id: 81109
ae23c9
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 68/73] qemu-iotests: Rewrite 213 for blockdev-create job
ae23c9
Bugzilla: 1513543
ae23c9
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
ae23c9
RH-Acked-by: Max Reitz <mreitz@redhat.com>
ae23c9
RH-Acked-by: Fam Zheng <famz@redhat.com>
ae23c9
ae23c9
This rewrites the test case 213 to work with the new x-blockdev-create
ae23c9
job rather than the old synchronous version of the command.
ae23c9
ae23c9
All of the test cases stay the same as before, but in order to be able
ae23c9
to implement proper job handling, the test case is rewritten in Python.
ae23c9
ae23c9
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
ae23c9
Reviewed-by: Max Reitz <mreitz@redhat.com>
ae23c9
(cherry picked from commit 0c46a69a5eb8a061134719a0a85898854eb8e533)
ae23c9
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
ae23c9
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
ae23c9
---
ae23c9
 tests/qemu-iotests/213     | 520 +++++++++++++++++----------------------------
ae23c9
 tests/qemu-iotests/213.out | 208 +++++++++++-------
ae23c9
 tests/qemu-iotests/group   |   4 +-
ae23c9
 3 files changed, 319 insertions(+), 413 deletions(-)
ae23c9
ae23c9
diff --git a/tests/qemu-iotests/213 b/tests/qemu-iotests/213
ae23c9
index 3a00a0f..29d25bc 100755
ae23c9
--- a/tests/qemu-iotests/213
ae23c9
+++ b/tests/qemu-iotests/213
ae23c9
@@ -1,9 +1,11 @@
ae23c9
-#!/bin/bash
ae23c9
+#!/usr/bin/env python
ae23c9
 #
ae23c9
 # Test vhdx and file image creation
ae23c9
 #
ae23c9
 # Copyright (C) 2018 Red Hat, Inc.
ae23c9
 #
ae23c9
+# Creator/Owner: Kevin Wolf <kwolf@redhat.com>
ae23c9
+#
ae23c9
 # This program is free software; you can redistribute it and/or modify
ae23c9
 # it under the terms of the GNU General Public License as published by
ae23c9
 # the Free Software Foundation; either version 2 of the License, or
ae23c9
@@ -18,332 +20,190 @@
ae23c9
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
ae23c9
 #
ae23c9
 
ae23c9
-# creator
ae23c9
-owner=kwolf@redhat.com
ae23c9
-
ae23c9
-seq=`basename $0`
ae23c9
-echo "QA output created by $seq"
ae23c9
-
ae23c9
-here=`pwd`
ae23c9
-status=1	# failure is the default!
ae23c9
-
ae23c9
-# get standard environment, filters and checks
ae23c9
-. ./common.rc
ae23c9
-. ./common.filter
ae23c9
-
ae23c9
-_supported_fmt vhdx
ae23c9
-_supported_proto file
ae23c9
-_supported_os Linux
ae23c9
-
ae23c9
-function do_run_qemu()
ae23c9
-{
ae23c9
-    echo Testing: "$@"
ae23c9
-    $QEMU -nographic -qmp stdio -serial none "$@"
ae23c9
-    echo
ae23c9
-}
ae23c9
-
ae23c9
-function run_qemu()
ae23c9
-{
ae23c9
-    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
ae23c9
-                          | _filter_qemu | _filter_imgfmt \
ae23c9
-                          | _filter_actual_image_size
ae23c9
-}
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Successful image creation (defaults) ==="
ae23c9
-echo
ae23c9
-
ae23c9
-size=$((128 * 1024 * 1024))
ae23c9
-
ae23c9
-run_qemu <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "file",
ae23c9
-      "filename": "$TEST_IMG",
ae23c9
-      "size": 0
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "blockdev-add",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "file",
ae23c9
-      "node-name": "imgfile",
ae23c9
-      "filename": "$TEST_IMG"
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "imgfile",
ae23c9
-      "size": $size
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-_img_info --format-specific | _filter_img_info --format-specific
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Successful image creation (explicit defaults) ==="
ae23c9
-echo
ae23c9
-
ae23c9
-# Choose a different size to show that we got a new image
ae23c9
-size=$((64 * 1024 * 1024))
ae23c9
-
ae23c9
-run_qemu <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "file",
ae23c9
-      "filename": "$TEST_IMG",
ae23c9
-      "size": 0
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": {
ae23c9
-          "driver": "file",
ae23c9
-          "filename": "$TEST_IMG"
ae23c9
-      },
ae23c9
-      "size": $size,
ae23c9
-      "log-size": 1048576,
ae23c9
-      "block-size": 8388608,
ae23c9
-      "subformat": "dynamic",
ae23c9
-      "block-state-zero": true
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-_img_info --format-specific | _filter_img_info --format-specific
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Successful image creation (with non-default options) ==="
ae23c9
-echo
ae23c9
-
ae23c9
-# Choose a different size to show that we got a new image
ae23c9
-size=$((32 * 1024 * 1024))
ae23c9
-
ae23c9
-run_qemu <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "file",
ae23c9
-      "filename": "$TEST_IMG",
ae23c9
-      "size": 0
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": {
ae23c9
-          "driver": "file",
ae23c9
-          "filename": "$TEST_IMG"
ae23c9
-      },
ae23c9
-      "size": $size,
ae23c9
-      "log-size": 8388608,
ae23c9
-      "block-size": 268435456,
ae23c9
-      "subformat": "fixed",
ae23c9
-      "block-state-zero": false
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-_img_info --format-specific | _filter_img_info --format-specific
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Invalid BlockdevRef ==="
ae23c9
-echo
ae23c9
-
ae23c9
-run_qemu <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "this doesn't exist",
ae23c9
-      "size": $size
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Zero size ==="
ae23c9
-echo
ae23c9
-
ae23c9
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 0
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-_img_info | _filter_img_info
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Maximum size ==="
ae23c9
-echo
ae23c9
-
ae23c9
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 70368744177664
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-_img_info | _filter_img_info
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Invalid sizes ==="
ae23c9
-echo
ae23c9
-
ae23c9
-# TODO Negative image sizes aren't handled correctly, but this is a problem
ae23c9
-# with QAPI's implementation of the 'size' type and affects other commands as
ae23c9
-# well. Once this is fixed, we may want to add a test case here.
ae23c9
-
ae23c9
-# 1. 2^64 - 512
ae23c9
-# 2. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
ae23c9
-# 3. 2^63 - 512 (generally valid, but with the image header the file will
ae23c9
-#                exceed 63 bits)
ae23c9
-# 4. 2^46 + 1 (one byte more than maximum image size)
ae23c9
-
ae23c9
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 18446744073709551104
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 9223372036854775808
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 9223372036854775296
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 70368744177665
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Invalid block size ==="
ae23c9
-echo
ae23c9
-
ae23c9
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "block-size": 1234567
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "block-size": 128
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "block-size": 3145728
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "block-size": 536870912
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "block-size": 0
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-echo
ae23c9
-echo "=== Invalid log size ==="
ae23c9
-echo
ae23c9
-
ae23c9
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
ae23c9
-{ "execute": "qmp_capabilities" }
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "log-size": 1234567
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "log-size": 128
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "log-size": 4294967296
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "x-blockdev-create",
ae23c9
-  "arguments": {
ae23c9
-      "driver": "$IMGFMT",
ae23c9
-      "file": "node0",
ae23c9
-      "size": 67108864,
ae23c9
-      "log-size": 0
ae23c9
-  }
ae23c9
-}
ae23c9
-{ "execute": "quit" }
ae23c9
-EOF
ae23c9
-
ae23c9
-
ae23c9
-# success, all done
ae23c9
-echo "*** done"
ae23c9
-rm -f $seq.full
ae23c9
-status=0
ae23c9
+import iotests
ae23c9
+from iotests import imgfmt
ae23c9
+
ae23c9
+iotests.verify_image_format(supported_fmts=['vhdx'])
ae23c9
+iotests.verify_protocol(supported=['file'])
ae23c9
+
ae23c9
+def blockdev_create(vm, options):
ae23c9
+    result = vm.qmp_log('x-blockdev-create', job_id='job0', options=options)
ae23c9
+
ae23c9
+    if 'return' in result:
ae23c9
+        assert result['return'] == {}
ae23c9
+        vm.run_job('job0')
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+with iotests.FilePath('t.vhdx') as disk_path, \
ae23c9
+     iotests.VM() as vm:
ae23c9
+
ae23c9
+    #
ae23c9
+    # Successful image creation (defaults)
ae23c9
+    #
ae23c9
+    iotests.log("=== Successful image creation (defaults) ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    size = 128 * 1024 * 1024
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    blockdev_create(vm, { 'driver': 'file',
ae23c9
+                          'filename': disk_path,
ae23c9
+                          'size': 0 })
ae23c9
+
ae23c9
+    vm.qmp_log('blockdev-add', driver='file', filename=disk_path,
ae23c9
+               node_name='imgfile')
ae23c9
+
ae23c9
+    blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                          'file': 'imgfile',
ae23c9
+                          'size': size })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    iotests.img_info_log(disk_path)
ae23c9
+
ae23c9
+    #
ae23c9
+    # Successful image creation (explicit defaults)
ae23c9
+    #
ae23c9
+    iotests.log("=== Successful image creation (explicit defaults) ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    # Choose a different size to show that we got a new image
ae23c9
+    size = 64 * 1024 * 1024
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    blockdev_create(vm, { 'driver': 'file',
ae23c9
+                          'filename': disk_path,
ae23c9
+                          'size': 0 })
ae23c9
+    blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                          'file': {
ae23c9
+                              'driver': 'file',
ae23c9
+                              'filename': disk_path,
ae23c9
+                          },
ae23c9
+                          'size': size,
ae23c9
+                          'log-size': 1048576,
ae23c9
+                          'block-size': 8388608,
ae23c9
+                          'subformat': 'dynamic',
ae23c9
+                          'block-state-zero': True })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    iotests.img_info_log(disk_path)
ae23c9
+
ae23c9
+    #
ae23c9
+    # Successful image creation (with non-default options)
ae23c9
+    #
ae23c9
+    iotests.log("=== Successful image creation (with non-default options) ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    # Choose a different size to show that we got a new image
ae23c9
+    size = 32 * 1024 * 1024
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    blockdev_create(vm, { 'driver': 'file',
ae23c9
+                          'filename': disk_path,
ae23c9
+                          'size': 0 })
ae23c9
+    blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                          'file': {
ae23c9
+                              'driver': 'file',
ae23c9
+                              'filename': disk_path,
ae23c9
+                          },
ae23c9
+                          'size': size,
ae23c9
+                          'log-size': 8388608,
ae23c9
+                          'block-size': 268435456,
ae23c9
+                          'subformat': 'fixed',
ae23c9
+                          'block-state-zero': False })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    iotests.img_info_log(disk_path)
ae23c9
+
ae23c9
+    #
ae23c9
+    # Invalid BlockdevRef
ae23c9
+    #
ae23c9
+    iotests.log("=== Invalid BlockdevRef ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                          'file': "this doesn't exist",
ae23c9
+                          'size': size })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    #
ae23c9
+    # Zero size
ae23c9
+    #
ae23c9
+    iotests.log("=== Zero size ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    vm.add_blockdev('driver=file,filename=%s,node-name=node0' % (disk_path))
ae23c9
+    vm.launch()
ae23c9
+    blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                          'file': 'node0',
ae23c9
+                          'size': 0 })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    iotests.img_info_log(disk_path)
ae23c9
+
ae23c9
+    #
ae23c9
+    # Maximum size
ae23c9
+    #
ae23c9
+    iotests.log("=== Maximum size ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                          'file': 'node0',
ae23c9
+                          'size': 70368744177664 })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    iotests.img_info_log(disk_path)
ae23c9
+
ae23c9
+    #
ae23c9
+    # Invalid sizes
ae23c9
+    #
ae23c9
+
ae23c9
+    # TODO Negative image sizes aren't handled correctly, but this is a problem
ae23c9
+    # with QAPI's implementation of the 'size' type and affects other commands
ae23c9
+    # as well. Once this is fixed, we may want to add a test case here.
ae23c9
+
ae23c9
+    # 1. 2^64 - 512
ae23c9
+    # 2. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
ae23c9
+    # 3. 2^63 - 512 (generally valid, but with the image header the file will
ae23c9
+    #                exceed 63 bits)
ae23c9
+    # 4. 2^46 + 1 (one byte more than maximum image size)
ae23c9
+
ae23c9
+    iotests.log("=== Invalid sizes ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    for size in [ 18446744073709551104, 9223372036854775808,
ae23c9
+                  9223372036854775296, 70368744177665 ]:
ae23c9
+        blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                              'file': 'node0',
ae23c9
+                              'size': size })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    #
ae23c9
+    # Invalid block size
ae23c9
+    #
ae23c9
+    iotests.log("=== Invalid block size ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    for bsize in [ 1234567, 128, 3145728, 536870912, 0 ]:
ae23c9
+        blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                              'file': 'node0',
ae23c9
+                              'size': 67108864,
ae23c9
+                              'block-size': bsize })
ae23c9
+    vm.shutdown()
ae23c9
+
ae23c9
+    #
ae23c9
+    # Invalid log size
ae23c9
+    #
ae23c9
+    iotests.log("=== Invalid log size ===")
ae23c9
+    iotests.log("")
ae23c9
+
ae23c9
+    vm.launch()
ae23c9
+    for lsize in [ 1234567, 128, 4294967296, 0 ]:
ae23c9
+        blockdev_create(vm, { 'driver': imgfmt,
ae23c9
+                              'file': 'node0',
ae23c9
+                              'size': 67108864,
ae23c9
+                              'log-size': lsize })
ae23c9
+    vm.shutdown()
ae23c9
diff --git a/tests/qemu-iotests/213.out b/tests/qemu-iotests/213.out
ae23c9
index 8e8fc29..f18a39a 100644
ae23c9
--- a/tests/qemu-iotests/213.out
ae23c9
+++ b/tests/qemu-iotests/213.out
ae23c9
@@ -1,121 +1,169 @@
ae23c9
-QA output created by 213
ae23c9
-
ae23c9
 === Successful image creation (defaults) ===
ae23c9
 
ae23c9
-Testing:
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'blockdev-add', 'arguments': {'node_name': 'imgfile', 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'imgfile', 'size': 134217728}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
-image: TEST_DIR/t.IMGFMT
ae23c9
+image: TEST_IMG
ae23c9
 file format: IMGFMT
ae23c9
 virtual size: 128M (134217728 bytes)
ae23c9
+cluster_size: 8388608
ae23c9
 
ae23c9
 === Successful image creation (explicit defaults) ===
ae23c9
 
ae23c9
-Testing:
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
-image: TEST_DIR/t.IMGFMT
ae23c9
+{'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}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+image: TEST_IMG
ae23c9
 file format: IMGFMT
ae23c9
 virtual size: 64M (67108864 bytes)
ae23c9
+cluster_size: 8388608
ae23c9
 
ae23c9
 === Successful image creation (with non-default options) ===
ae23c9
 
ae23c9
-Testing:
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vhdx'}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'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}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
-image: TEST_DIR/t.IMGFMT
ae23c9
+image: TEST_IMG
ae23c9
 file format: IMGFMT
ae23c9
 virtual size: 32M (33554432 bytes)
ae23c9
+cluster_size: 268435456
ae23c9
 
ae23c9
 === Invalid BlockdevRef ===
ae23c9
 
ae23c9
-Testing:
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Cannot find device=this doesn't exist nor node_name=this doesn't exist"}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
-
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': "this doesn't exist", 'size': 33554432}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
 === Zero size ===
ae23c9
 
ae23c9
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 0}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
-image: TEST_DIR/t.IMGFMT
ae23c9
+image: TEST_IMG
ae23c9
 file format: IMGFMT
ae23c9
 virtual size: 0 (0 bytes)
ae23c9
+cluster_size: 8388608
ae23c9
 
ae23c9
 === Maximum size ===
ae23c9
 
ae23c9
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 70368744177664}}}
ae23c9
+{u'return': {}}
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
-image: TEST_DIR/t.IMGFMT
ae23c9
+image: TEST_IMG
ae23c9
 file format: IMGFMT
ae23c9
 virtual size: 64T (70368744177664 bytes)
ae23c9
+cluster_size: 67108864
ae23c9
 
ae23c9
 === Invalid sizes ===
ae23c9
 
ae23c9
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Image size too large; max of 64TB"}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
-
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 18446744073709551104L}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Image size too large; max of 64TB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 9223372036854775808L}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Image size too large; max of 64TB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 9223372036854775296}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Image size too large; max of 64TB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'file': 'node0', 'size': 70368744177665}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Image size too large; max of 64TB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
 === Invalid block size ===
ae23c9
 
ae23c9
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Block size must be a multiple of 1 MB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Block size must be a multiple of 1 MB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Block size must be a power of two"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Block size must not exceed 268435456"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Block size must be a multiple of 1 MB"}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
-
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 1234567, 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Block size must be a multiple of 1 MB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 128, 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Block size must be a multiple of 1 MB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 3145728, 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Block size must be a power of two
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 536870912, 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Block size must not exceed 268435456
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vhdx', 'block-size': 0, 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Block size must be a multiple of 1 MB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
 
ae23c9
 === Invalid log size ===
ae23c9
 
ae23c9
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
ae23c9
-QMP_VERSION
ae23c9
-{"return": {}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Log size must be a multiple of 1 MB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Log size must be a multiple of 1 MB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Log size must be smaller than 4 GB"}}
ae23c9
-{"error": {"class": "GenericError", "desc": "Log size must be a multiple of 1 MB"}}
ae23c9
-{"return": {}}
ae23c9
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
ae23c9
-
ae23c9
-*** done
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 1234567, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Log size must be a multiple of 1 MB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 128, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Log size must be a multiple of 1 MB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 4294967296, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Log size must be smaller than 4 GB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'log-size': 0, 'driver': 'vhdx', 'file': 'node0', 'size': 67108864}}}
ae23c9
+{u'return': {}}
ae23c9
+Job failed: Log size must be a multiple of 1 MB
ae23c9
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
ae23c9
+{u'return': {}}
ae23c9
+
ae23c9
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
ae23c9
index 3753b13..5c55adc 100644
ae23c9
--- a/tests/qemu-iotests/group
ae23c9
+++ b/tests/qemu-iotests/group
ae23c9
@@ -211,9 +211,7 @@
ae23c9
 210 rw auto
ae23c9
 211 rw auto quick
ae23c9
 212 rw auto quick
ae23c9
-# TODO The following commented out tests need to be reworked to work
ae23c9
-# with the x-blockdev-create job
ae23c9
-#213 rw auto quick
ae23c9
+213 rw auto quick
ae23c9
 214 rw auto
ae23c9
 215 rw auto quick
ae23c9
 216 rw auto quick
ae23c9
-- 
ae23c9
1.8.3.1
ae23c9