#!/usr/bin/env python3 # group: auto quick # # Test shutdown when bitmap is exported through NBD server # # Copyright (c) 2020 Virtuozzo International GmbH. # # 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 . # import iotests # The test is unrelated to formats, restrict it to qcow2 to avoid extra runs iotests.script_initialize( supported_fmts=['qcow2'], ) nbd_sock = iotests.file_path('nbd.sock', base_dir=iotests.sock_dir) nbd_uri = 'nbd+unix:///disk?socket=' + nbd_sock size = 1024 * 1024 vm = iotests.VM() vm.launch() vm.qmp_log('blockdev-add', **{ 'node-name': 'disk', 'driver': 'null-co', 'size': 1024 * 1024, }) vm.qmp_log('block-dirty-bitmap-add', **{ 'node': 'disk', 'name': 'bitmap0' }) vm.qmp_log('nbd-server-start', **{ 'addr': { 'type': 'unix', 'data': {'path': nbd_sock} } }, filters=[iotests.filter_qmp_testfiles]) vm.qmp_log('nbd-server-add', **{ 'device': 'disk', 'writable': True, 'bitmap': 'bitmap0' }) p = iotests.QemuIoInteractive('-f', 'raw', nbd_uri) # wait for connection and check it: iotests.log(p.cmd('read 0 512').rstrip(), filters=[iotests.filter_qemu_io]) vm.shutdown() p.close()