| #!/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 <http://www.gnu.org/licenses/>. | 
 | # | 
 |  | 
 | 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() |