1#!/usr/bin/env python3 2# 3# Test shutdown when bitmap is exported through NBD server 4# 5# Copyright (c) 2020 Virtuozzo International GmbH. 6# 7# This program is free software; you can redistribute it and/or modify 8# it under the terms of the GNU General Public License as published by 9# the Free Software Foundation; either version 2 of the License, or 10# (at your option) any later version. 11# 12# This program is distributed in the hope that it will be useful, 13# but WITHOUT ANY WARRANTY; without even the implied warranty of 14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15# GNU General Public License for more details. 16# 17# You should have received a copy of the GNU General Public License 18# along with this program. If not, see <http://www.gnu.org/licenses/>. 19# 20 21import iotests 22 23# The test is unrelated to formats, restrict it to qcow2 to avoid extra runs 24iotests.script_initialize( 25 supported_fmts=['qcow2'], 26) 27 28nbd_sock = iotests.file_path('nbd.sock', base_dir=iotests.sock_dir) 29nbd_uri = 'nbd+unix:///disk?socket=' + nbd_sock 30size = 1024 * 1024 31 32vm = iotests.VM() 33vm.launch() 34 35vm.qmp_log('blockdev-add', **{ 36 'node-name': 'disk', 37 'driver': 'null-co', 38 'size': 1024 * 1024, 39}) 40 41vm.qmp_log('block-dirty-bitmap-add', **{ 42 'node': 'disk', 43 'name': 'bitmap0' 44}) 45 46vm.qmp_log('nbd-server-start', **{ 47 'addr': { 48 'type': 'unix', 49 'data': {'path': nbd_sock} 50 } 51}, filters=[iotests.filter_qmp_testfiles]) 52 53vm.qmp_log('nbd-server-add', **{ 54 'device': 'disk', 55 'writable': True, 56 'bitmap': 'bitmap0' 57}) 58 59p = iotests.QemuIoInteractive('-f', 'raw', nbd_uri) 60# wait for connection and check it: 61iotests.log(p.cmd('read 0 512').rstrip(), filters=[iotests.filter_qemu_io]) 62 63vm.shutdown() 64 65p.close() 66