qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH v4 4/5] iotests: Add VMDK tests for


From: Markus Armbruster
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH v4 4/5] iotests: Add VMDK tests for blockdev-create
Date: Fri, 07 Dec 2018 14:02:48 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Kevin Wolf <address@hidden> writes:

> Signed-off-by: Fam Zheng <address@hidden>
> Signed-off-by: Kevin Wolf <address@hidden>
> ---
>  tests/qemu-iotests/237     | 233 +++++++++++++++++++++++++
>  tests/qemu-iotests/237.out | 347 +++++++++++++++++++++++++++++++++++++
>  tests/qemu-iotests/group   |   1 +
>  3 files changed, 581 insertions(+)
>  create mode 100755 tests/qemu-iotests/237
>  create mode 100644 tests/qemu-iotests/237.out
>
> diff --git a/tests/qemu-iotests/237 b/tests/qemu-iotests/237
> new file mode 100755
> index 0000000000..e04a1ac6be
> --- /dev/null
> +++ b/tests/qemu-iotests/237
> @@ -0,0 +1,233 @@
> +#!/usr/bin/env python
> +#
> +# Test vmdk and file image creation
> +#
> +# Copyright (C) 2018 Red Hat, Inc.
> +#
> +# Creator/Owner: Kevin Wolf <address@hidden>
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program.  If not, see <http://www.gnu.org/licenses/>.
> +#
> +
> +import iotests
> +from iotests import imgfmt
> +
> +iotests.verify_image_format(supported_fmts=['vmdk'])
> +
> +def blockdev_create(vm, options):
> +    result = vm.qmp_log('blockdev-create', job_id='job0', options=options)
> +
> +    if 'return' in result:
> +        assert result['return'] == {}
> +        vm.run_job('job0')
> +    iotests.log("")
> +
> +with iotests.FilePath('t.vmdk') as disk_path, \
> +     iotests.FilePath('t.vmdk.1') as extent1_path, \
> +     iotests.FilePath('t.vmdk.2') as extent2_path, \
> +     iotests.FilePath('t.vmdk.3') as extent3_path, \
> +     iotests.VM() as vm:
> +
> +    #
> +    # Successful image creation (defaults)
> +    #
> +    iotests.log("=== Successful image creation (defaults) ===")
> +    iotests.log("")
> +
> +    size = 5 * 1024 * 1024 * 1024
> +
> +    vm.launch()
> +    blockdev_create(vm, { 'driver': 'file',
> +                          'filename': disk_path,
> +                          'size': 0 })
> +
> +    vm.qmp_log('blockdev-add', driver='file', filename=disk_path,
> +               node_name='imgfile')
> +
> +    blockdev_create(vm, { 'driver': imgfmt,
> +                          'file': 'imgfile',
> +                          'size': size })
> +    vm.shutdown()
> +
> +    iotests.img_info_log(disk_path)
> +
> +    #
> +    # Successful image creation (inline blockdev-add, explicit defaults)
> +    #
> +    iotests.log("=== Successful image creation (inline blockdev-add, 
> explicit defaults) ===")
> +    iotests.log("")
> +
> +    # Choose a different size to show that we got a new image
> +    size = 64 * 1024 * 1024
> +
> +    vm.launch()
> +    blockdev_create(vm, { 'driver': 'file',
> +                          'filename': disk_path,
> +                          'size': 0 })
> +
> +    blockdev_create(vm, { 'driver': imgfmt,
> +                          'file': {
> +                              'driver': 'file',
> +                              'filename': disk_path,
> +                          },
> +                          'size': size,
> +                          'extents': [],
> +                          'subformat': 'monolithicSparse',
> +                          'adapter-type': 'ide',
> +                          'hwversion': '4',
> +                          'zeroed-grain': False })
> +    vm.shutdown()
> +
> +    iotests.img_info_log(disk_path)
> +
> +    #
> +    # Successful image creation (non-default options)
> +    #
> +    iotests.log("=== Successful image creation (with non-default options) 
> ===")
> +    iotests.log("")
> +
> +    # Choose a different size to show that we got a new image
> +    size = 32 * 1024 * 1024
> +
> +    vm.launch()
> +    blockdev_create(vm, { 'driver': 'file',
> +                          'filename': disk_path,
> +                          'size': 0 })
> +
> +    blockdev_create(vm, { 'driver': imgfmt,
> +                          'file': {
> +                              'driver': 'file',
> +                              'filename': disk_path,
> +                          },
> +                          'size': size,
> +                          'extents': [],
> +                          'subformat': 'monolithicSparse',
> +                          'adapter-type': 'buslogic',
> +                          'zeroed-grain': True })
> +    vm.shutdown()
> +
> +    iotests.img_info_log(disk_path)
> +
> +    #
> +    # Invalid BlockdevRef
> +    #
> +    iotests.log("=== Invalid BlockdevRef ===")
> +    iotests.log("")
> +
> +    vm.launch()
> +    blockdev_create(vm, { 'driver': imgfmt,
> +                          'file': "this doesn't exist",
> +                          'size': size })
> +    vm.shutdown()
> +
> +    #
> +    # Adapter types
> +    #
> +
> +    iotests.log("=== Adapter types ===")
> +    iotests.log("")
> +
> +    vm.add_blockdev('driver=file,filename=%s,node-name=node0' % (disk_path))
> +
> +    # Valid
> +    iotests.log("== Valid adapter types ==")
> +    iotests.log("")
> +
> +    vm.launch()
> +    for adapter_type in [ 'ide', 'buslogic', 'lsilogic', 'legacyESX' ]:
> +        blockdev_create(vm, { 'driver': imgfmt,
> +                              'file': 'node0',
> +                              'size': size,
> +                              'adapter-type': adapter_type })
> +    vm.shutdown()
> +
> +    # Invalid
> +    iotests.log("== Invalid adapter types ==")
> +    iotests.log("")
> +
> +    vm.launch()
> +    for adapter_type in [ 'foo', 'IDE', 'legacyesx', 1 ]:
> +        blockdev_create(vm, { 'driver': imgfmt,
> +                              'file': 'node0',
> +                              'size': size,
> +                              'adapter-type': adapter_type })
> +    vm.shutdown()
> +
> +    #
> +    # Other subformats
> +    #
> +    iotests.log("=== Other subformats ===")
> +    iotests.log("")
> +
> +    for path in [ extent1_path, extent2_path, extent3_path ]:
> +        msg = iotests.qemu_img_pipe('create', '-f', imgfmt, path, '0')
> +        iotests.log(msg, [iotests.filter_testfiles])
> +

You lost

  +    vm.add_blockdev('driver=file,filename=%s,node-name=node0' % (disk_path))

here since v3.  Intentional?

> +    vm.add_blockdev('driver=file,filename=%s,node-name=ext1' % 
> (extent1_path))
> +    vm.add_blockdev('driver=file,filename=%s,node-name=ext2' % 
> (extent2_path))
> +    vm.add_blockdev('driver=file,filename=%s,node-name=ext3' % 
> (extent3_path))
[...]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]