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

383d26
From 71efcd6903a5a857fb6a4b03ee19bb62c47b9dfd Mon Sep 17 00:00:00 2001
383d26
From: Kevin Wolf <kwolf@redhat.com>
383d26
Date: Tue, 26 Jun 2018 09:48:49 +0200
383d26
Subject: [PATCH 80/89] qemu-iotests: Rewrite 211 for blockdev-create job
383d26
383d26
RH-Author: Kevin Wolf <kwolf@redhat.com>
383d26
Message-id: <20180626094856.6924-67-kwolf@redhat.com>
383d26
Patchwork-id: 81096
383d26
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH v2 66/73] qemu-iotests: Rewrite 211 for blockdev-create job
383d26
Bugzilla: 1513543
383d26
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
383d26
RH-Acked-by: Max Reitz <mreitz@redhat.com>
383d26
RH-Acked-by: Fam Zheng <famz@redhat.com>
383d26
383d26
This rewrites the test case 211 to work with the new x-blockdev-create
383d26
job rather than the old synchronous version of the command.
383d26
383d26
All of the test cases stay the same as before, but in order to be able
383d26
to implement proper job handling, the test case is rewritten in Python.
383d26
383d26
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
383d26
Reviewed-by: Max Reitz <mreitz@redhat.com>
383d26
(cherry picked from commit abbab72cad2eafcaf3b0f4e970add813b4264e5f)
383d26
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
383d26
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
383d26
---
383d26
 tests/qemu-iotests/211     | 381 ++++++++++++++++++---------------------------
383d26
 tests/qemu-iotests/211.out | 133 +++++++++-------
383d26
 tests/qemu-iotests/group   |   2 +-
383d26
 3 files changed, 229 insertions(+), 287 deletions(-)
383d26
383d26
diff --git a/tests/qemu-iotests/211 b/tests/qemu-iotests/211
383d26
index 1edec26..b45f886 100755
383d26
--- a/tests/qemu-iotests/211
383d26
+++ b/tests/qemu-iotests/211
383d26
@@ -1,9 +1,11 @@
383d26
-#!/bin/bash
383d26
+#!/usr/bin/env python
383d26
 #
383d26
 # Test VDI and file image creation
383d26
 #
383d26
 # Copyright (C) 2018 Red Hat, Inc.
383d26
 #
383d26
+# Creator/Owner: Kevin Wolf <kwolf@redhat.com>
383d26
+#
383d26
 # This program is free software; you can redistribute it and/or modify
383d26
 # it under the terms of the GNU General Public License as published by
383d26
 # the Free Software Foundation; either version 2 of the License, or
383d26
@@ -18,229 +20,154 @@
383d26
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
383d26
 #
383d26
 
383d26
-# creator
383d26
-owner=kwolf@redhat.com
383d26
-
383d26
-seq=`basename $0`
383d26
-echo "QA output created by $seq"
383d26
-
383d26
-here=`pwd`
383d26
-status=1	# failure is the default!
383d26
-
383d26
-# get standard environment, filters and checks
383d26
-. ./common.rc
383d26
-. ./common.filter
383d26
-
383d26
-_supported_fmt vdi
383d26
-_supported_proto file
383d26
-_supported_os Linux
383d26
-
383d26
-function do_run_qemu()
383d26
-{
383d26
-    echo Testing: "$@"
383d26
-    $QEMU -nographic -qmp stdio -serial none "$@"
383d26
-    echo
383d26
-}
383d26
-
383d26
-function run_qemu()
383d26
-{
383d26
-    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
383d26
-                          | _filter_qemu | _filter_imgfmt \
383d26
-                          | _filter_actual_image_size
383d26
-}
383d26
-
383d26
-echo
383d26
-echo "=== Successful image creation (defaults) ==="
383d26
-echo
383d26
-
383d26
-size=$((128 * 1024 * 1024))
383d26
-
383d26
-run_qemu <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "file",
383d26
-      "filename": "$TEST_IMG",
383d26
-      "size": 0
383d26
-  }
383d26
-}
383d26
-{ "execute": "blockdev-add",
383d26
-  "arguments": {
383d26
-      "driver": "file",
383d26
-      "node-name": "imgfile",
383d26
-      "filename": "$TEST_IMG"
383d26
-  }
383d26
-}
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "imgfile",
383d26
-      "size": $size
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-_img_info --format-specific | _filter_img_info --format-specific
383d26
-$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
383d26
-
383d26
-echo
383d26
-echo "=== Successful image creation (explicit defaults) ==="
383d26
-echo
383d26
-
383d26
-# Choose a different size to show that we got a new image
383d26
-size=$((64 * 1024 * 1024))
383d26
-
383d26
-run_qemu <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "file",
383d26
-      "filename": "$TEST_IMG",
383d26
-      "size": 0
383d26
-  }
383d26
-}
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": {
383d26
-          "driver": "file",
383d26
-          "filename": "$TEST_IMG"
383d26
-      },
383d26
-      "size": $size,
383d26
-      "preallocation": "off"
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-_img_info --format-specific | _filter_img_info --format-specific
383d26
-$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
383d26
-
383d26
-echo
383d26
-echo "=== Successful image creation (with non-default options) ==="
383d26
-echo
383d26
-
383d26
-# Choose a different size to show that we got a new image
383d26
-size=$((32 * 1024 * 1024))
383d26
-
383d26
-run_qemu <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "file",
383d26
-      "filename": "$TEST_IMG",
383d26
-      "size": 0
383d26
-  }
383d26
-}
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": {
383d26
-          "driver": "file",
383d26
-          "filename": "$TEST_IMG"
383d26
-      },
383d26
-      "size": $size,
383d26
-      "preallocation": "metadata"
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-_img_info --format-specific | _filter_img_info --format-specific
383d26
-$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
383d26
-
383d26
-echo
383d26
-echo "=== Invalid BlockdevRef ==="
383d26
-echo
383d26
-
383d26
-run_qemu <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "this doesn't exist",
383d26
-      "size": $size
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-echo
383d26
-echo "=== Zero size ==="
383d26
-echo
383d26
-
383d26
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "node0",
383d26
-      "size": 0
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-_img_info | _filter_img_info
383d26
-
383d26
-echo
383d26
-echo "=== Maximum size ==="
383d26
-echo
383d26
-
383d26
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "node0",
383d26
-      "size": 562949819203584
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-_img_info | _filter_img_info
383d26
-
383d26
-echo
383d26
-echo "=== Invalid sizes ==="
383d26
-echo
383d26
-
383d26
-# TODO Negative image sizes aren't handled correctly, but this is a problem
383d26
-# with QAPI's implementation of the 'size' type and affects other commands as
383d26
-# well. Once this is fixed, we may want to add a test case here.
383d26
-
383d26
-# 1. 2^64 - 512
383d26
-# 2. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
383d26
-# 3. 0x1fffff8000001 (one byte more than maximum image size for VDI)
383d26
-
383d26
-run_qemu -blockdev driver=file,filename="$TEST_IMG",node-name=node0 <
383d26
-{ "execute": "qmp_capabilities" }
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "node0",
383d26
-      "size": 18446744073709551104
383d26
-  }
383d26
-}
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "node0",
383d26
-      "size": 9223372036854775808
383d26
-  }
383d26
-}
383d26
-{ "execute": "x-blockdev-create",
383d26
-  "arguments": {
383d26
-      "driver": "$IMGFMT",
383d26
-      "file": "node0",
383d26
-      "size": 562949819203585
383d26
-  }
383d26
-}
383d26
-{ "execute": "quit" }
383d26
-EOF
383d26
-
383d26
-# success, all done
383d26
-echo "*** done"
383d26
-rm -f $seq.full
383d26
-status=0
383d26
+import iotests
383d26
+from iotests import imgfmt
383d26
+
383d26
+iotests.verify_image_format(supported_fmts=['vdi'])
383d26
+iotests.verify_protocol(supported=['file'])
383d26
+
383d26
+def blockdev_create(vm, options):
383d26
+    result = vm.qmp_log('x-blockdev-create', job_id='job0', options=options)
383d26
+
383d26
+    if 'return' in result:
383d26
+        assert result['return'] == {}
383d26
+        vm.run_job('job0')
383d26
+    iotests.log("")
383d26
+
383d26
+with iotests.FilePath('t.vdi') as disk_path, \
383d26
+     iotests.VM() as vm:
383d26
+
383d26
+    #
383d26
+    # Successful image creation (defaults)
383d26
+    #
383d26
+    iotests.log("=== Successful image creation (defaults) ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    size = 128 * 1024 * 1024
383d26
+
383d26
+    vm.launch()
383d26
+    blockdev_create(vm, { 'driver': 'file',
383d26
+                          'filename': disk_path,
383d26
+                          'size': 0 })
383d26
+
383d26
+    vm.qmp_log('blockdev-add', driver='file', filename=disk_path,
383d26
+               node_name='imgfile')
383d26
+
383d26
+    blockdev_create(vm, { 'driver': imgfmt,
383d26
+                          'file': 'imgfile',
383d26
+                          'size': size })
383d26
+    vm.shutdown()
383d26
+
383d26
+    iotests.img_info_log(disk_path)
383d26
+    iotests.log(iotests.qemu_img_pipe('map', '--output=json', disk_path))
383d26
+
383d26
+    #
383d26
+    # Successful image creation (explicit defaults)
383d26
+    #
383d26
+    iotests.log("=== Successful image creation (explicit defaults) ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    size = 64 * 1024 * 1024
383d26
+
383d26
+    vm.launch()
383d26
+    blockdev_create(vm, { 'driver': 'file',
383d26
+                          'filename': disk_path,
383d26
+                          'size': 0 })
383d26
+    blockdev_create(vm, { 'driver': imgfmt,
383d26
+                          'file': {
383d26
+                              'driver': 'file',
383d26
+                              'filename': disk_path,
383d26
+                          },
383d26
+                          'size': size,
383d26
+                          'preallocation': 'off' })
383d26
+    vm.shutdown()
383d26
+
383d26
+    iotests.img_info_log(disk_path)
383d26
+    iotests.log(iotests.qemu_img_pipe('map', '--output=json', disk_path))
383d26
+
383d26
+    #
383d26
+    # Successful image creation (with non-default options)
383d26
+    #
383d26
+    iotests.log("=== Successful image creation (with non-default options) ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    size = 32 * 1024 * 1024
383d26
+
383d26
+    vm.launch()
383d26
+    blockdev_create(vm, { 'driver': 'file',
383d26
+                          'filename': disk_path,
383d26
+                          'size': 0 })
383d26
+    blockdev_create(vm, { 'driver': imgfmt,
383d26
+                          'file': {
383d26
+                              'driver': 'file',
383d26
+                              'filename': disk_path,
383d26
+                          },
383d26
+                          'size': size,
383d26
+                          'preallocation': 'metadata' })
383d26
+    vm.shutdown()
383d26
+
383d26
+    iotests.img_info_log(disk_path)
383d26
+    iotests.log(iotests.qemu_img_pipe('map', '--output=json', disk_path))
383d26
+
383d26
+    #
383d26
+    # Invalid BlockdevRef
383d26
+    #
383d26
+    iotests.log("=== Invalid BlockdevRef ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    vm.launch()
383d26
+    blockdev_create(vm, { 'driver': imgfmt,
383d26
+                          'file': "this doesn't exist",
383d26
+                          'size': size })
383d26
+    vm.shutdown()
383d26
+
383d26
+    #
383d26
+    # Zero size
383d26
+    #
383d26
+    iotests.log("=== Zero size ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    vm.add_blockdev('driver=file,filename=%s,node-name=node0' % (disk_path))
383d26
+    vm.launch()
383d26
+    blockdev_create(vm, { 'driver': imgfmt,
383d26
+                          'file': 'node0',
383d26
+                          'size': 0 })
383d26
+    vm.shutdown()
383d26
+
383d26
+    iotests.img_info_log(disk_path)
383d26
+
383d26
+    #
383d26
+    # Maximum size
383d26
+    #
383d26
+    iotests.log("=== Maximum size ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    vm.launch()
383d26
+    blockdev_create(vm, { 'driver': imgfmt,
383d26
+                          'file': 'node0',
383d26
+                          'size': 562949819203584 })
383d26
+    vm.shutdown()
383d26
+
383d26
+    iotests.img_info_log(disk_path)
383d26
+
383d26
+    #
383d26
+    # Invalid sizes
383d26
+    #
383d26
+
383d26
+    # TODO Negative image sizes aren't handled correctly, but this is a problem
383d26
+    # with QAPI's implementation of the 'size' type and affects other commands
383d26
+    # as well. Once this is fixed, we may want to add a test case here.
383d26
+
383d26
+    # 1. 2^64 - 512
383d26
+    # 2. 2^63 = 8 EB (qemu-img enforces image sizes less than this)
383d26
+    # 3. 0x1fffff8000001 (one byte more than maximum image size for VDI)
383d26
+
383d26
+    iotests.log("=== Invalid sizes ===")
383d26
+    iotests.log("")
383d26
+
383d26
+    vm.launch()
383d26
+    for size in [ 18446744073709551104, 9223372036854775808, 562949819203585 ]:
383d26
+        blockdev_create(vm, { 'driver': imgfmt,
383d26
+                              'file': 'node0',
383d26
+                              'size': size })
383d26
+    vm.shutdown()
383d26
diff --git a/tests/qemu-iotests/211.out b/tests/qemu-iotests/211.out
383d26
index 3247bba..2bf1c4a 100644
383d26
--- a/tests/qemu-iotests/211.out
383d26
+++ b/tests/qemu-iotests/211.out
383d26
@@ -1,97 +1,112 @@
383d26
-QA output created by 211
383d26
-
383d26
 === Successful image creation (defaults) ===
383d26
 
383d26
-Testing:
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vdi'}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
+
383d26
+{'execute': 'blockdev-add', 'arguments': {'node_name': 'imgfile', 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vdi'}}
383d26
+{u'return': {}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': 'imgfile', 'size': 134217728}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
-image: TEST_DIR/t.IMGFMT
383d26
+image: TEST_IMG
383d26
 file format: IMGFMT
383d26
 virtual size: 128M (134217728 bytes)
383d26
+cluster_size: 1048576
383d26
+
383d26
 [{ "start": 0, "length": 134217728, "depth": 0, "zero": true, "data": false}]
383d26
 
383d26
 === Successful image creation (explicit defaults) ===
383d26
 
383d26
-Testing:
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vdi'}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
-image: TEST_DIR/t.IMGFMT
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'preallocation': 'off', 'driver': 'vdi', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.vdi'}, 'size': 67108864}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
+
383d26
+image: TEST_IMG
383d26
 file format: IMGFMT
383d26
 virtual size: 64M (67108864 bytes)
383d26
+cluster_size: 1048576
383d26
+
383d26
 [{ "start": 0, "length": 67108864, "depth": 0, "zero": true, "data": false}]
383d26
 
383d26
 === Successful image creation (with non-default options) ===
383d26
 
383d26
-Testing:
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'size': 0, 'driver': 'file', 'filename': 'TEST_DIR/PID-t.vdi'}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
-image: TEST_DIR/t.IMGFMT
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'preallocation': 'metadata', 'driver': 'vdi', 'file': {'driver': 'file', 'filename': 'TEST_DIR/PID-t.vdi'}, 'size': 33554432}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
+
383d26
+image: TEST_IMG
383d26
 file format: IMGFMT
383d26
 virtual size: 32M (33554432 bytes)
383d26
-[{ "start": 0, "length": 3072, "depth": 0, "zero": false, "data": true, "offset": OFFSET},
383d26
-{ "start": 3072, "length": 33551360, "depth": 0, "zero": true, "data": true, "offset": OFFSET}]
383d26
+cluster_size: 1048576
383d26
 
383d26
-=== Invalid BlockdevRef ===
383d26
+[{ "start": 0, "length": 3072, "depth": 0, "zero": false, "data": true, "offset": 1024},
383d26
+{ "start": 3072, "length": 33551360, "depth": 0, "zero": true, "data": true, "offset": 4096}]
383d26
 
383d26
-Testing:
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"error": {"class": "GenericError", "desc": "Cannot find device=this doesn't exist nor node_name=this doesn't exist"}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+=== Invalid BlockdevRef ===
383d26
 
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': "this doesn't exist", 'size': 33554432}}}
383d26
+{u'return': {}}
383d26
+Job failed: Cannot find device=this doesn't exist nor node_name=this doesn't exist
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
 === Zero size ===
383d26
 
383d26
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': 'node0', 'size': 0}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
-image: TEST_DIR/t.IMGFMT
383d26
+image: TEST_IMG
383d26
 file format: IMGFMT
383d26
 virtual size: 0 (0 bytes)
383d26
+cluster_size: 1048576
383d26
 
383d26
 === Maximum size ===
383d26
 
383d26
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': 'node0', 'size': 562949819203584}}}
383d26
+{u'return': {}}
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
-image: TEST_DIR/t.IMGFMT
383d26
+image: TEST_IMG
383d26
 file format: IMGFMT
383d26
 virtual size: 512T (562949819203584 bytes)
383d26
+cluster_size: 1048576
383d26
 
383d26
 === Invalid sizes ===
383d26
 
383d26
-Testing: -blockdev driver=file,filename=TEST_DIR/t.IMGFMT,node-name=node0
383d26
-QMP_VERSION
383d26
-{"return": {}}
383d26
-{"error": {"class": "GenericError", "desc": "Unsupported VDI image size (size is 0xfffffffffffffe00, max supported is 0x1fffff8000000)"}}
383d26
-{"error": {"class": "GenericError", "desc": "Unsupported VDI image size (size is 0x8000000000000000, max supported is 0x1fffff8000000)"}}
383d26
-{"error": {"class": "GenericError", "desc": "Unsupported VDI image size (size is 0x1fffff8000001, max supported is 0x1fffff8000000)"}}
383d26
-{"return": {}}
383d26
-{"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "SHUTDOWN", "data": {"guest": false}}
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': 'node0', 'size': 18446744073709551104L}}}
383d26
+{u'return': {}}
383d26
+Job failed: Unsupported VDI image size (size is 0xfffffffffffffe00, max supported is 0x1fffff8000000)
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
+
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': 'node0', 'size': 9223372036854775808L}}}
383d26
+{u'return': {}}
383d26
+Job failed: Unsupported VDI image size (size is 0x8000000000000000, max supported is 0x1fffff8000000)
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
+
383d26
+{'execute': 'x-blockdev-create', 'arguments': {'job_id': 'job0', 'options': {'driver': 'vdi', 'file': 'node0', 'size': 562949819203585}}}
383d26
+{u'return': {}}
383d26
+Job failed: Unsupported VDI image size (size is 0x1fffff8000001, max supported is 0x1fffff8000000)
383d26
+{'execute': 'job-dismiss', 'arguments': {'id': 'job0'}}
383d26
+{u'return': {}}
383d26
 
383d26
-*** done
383d26
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
383d26
index 3ecdafa..b920097 100644
383d26
--- a/tests/qemu-iotests/group
383d26
+++ b/tests/qemu-iotests/group
383d26
@@ -209,9 +209,9 @@
383d26
 208 rw auto quick
383d26
 209 rw auto quick
383d26
 210 rw auto
383d26
+211 rw auto quick
383d26
 # TODO The following commented out tests need to be reworked to work
383d26
 # with the x-blockdev-create job
383d26
-#211 rw auto quick
383d26
 #212 rw auto quick
383d26
 #213 rw auto quick
383d26
 214 rw auto
383d26
-- 
383d26
1.8.3.1
383d26