xref: /openbmc/qemu/tests/qemu-iotests/208 (revision 44a8174e)
1*44a8174eSStefan Hajnoczi#!/usr/bin/env python
2*44a8174eSStefan Hajnoczi#
3*44a8174eSStefan Hajnoczi# Copyright (C) 2018 Red Hat, Inc.
4*44a8174eSStefan Hajnoczi#
5*44a8174eSStefan Hajnoczi# This program is free software; you can redistribute it and/or modify
6*44a8174eSStefan Hajnoczi# it under the terms of the GNU General Public License as published by
7*44a8174eSStefan Hajnoczi# the Free Software Foundation; either version 2 of the License, or
8*44a8174eSStefan Hajnoczi# (at your option) any later version.
9*44a8174eSStefan Hajnoczi#
10*44a8174eSStefan Hajnoczi# This program is distributed in the hope that it will be useful,
11*44a8174eSStefan Hajnoczi# but WITHOUT ANY WARRANTY; without even the implied warranty of
12*44a8174eSStefan Hajnoczi# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13*44a8174eSStefan Hajnoczi# GNU General Public License for more details.
14*44a8174eSStefan Hajnoczi#
15*44a8174eSStefan Hajnoczi# You should have received a copy of the GNU General Public License
16*44a8174eSStefan Hajnoczi# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17*44a8174eSStefan Hajnoczi#
18*44a8174eSStefan Hajnoczi# Creator/Owner: Stefan Hajnoczi <stefanha@redhat.com>
19*44a8174eSStefan Hajnoczi#
20*44a8174eSStefan Hajnoczi# Check that the runtime NBD server does not crash when stopped after
21*44a8174eSStefan Hajnoczi# blockdev-snapshot-sync.
22*44a8174eSStefan Hajnoczi
23*44a8174eSStefan Hajnocziimport iotests
24*44a8174eSStefan Hajnoczi
25*44a8174eSStefan Hajnocziwith iotests.FilePath('disk.img') as disk_img_path, \
26*44a8174eSStefan Hajnoczi     iotests.FilePath('disk-snapshot.img') as disk_snapshot_img_path, \
27*44a8174eSStefan Hajnoczi     iotests.FilePath('nbd.sock') as nbd_sock_path, \
28*44a8174eSStefan Hajnoczi     iotests.VM() as vm:
29*44a8174eSStefan Hajnoczi
30*44a8174eSStefan Hajnoczi    img_size = '10M'
31*44a8174eSStefan Hajnoczi    iotests.qemu_img_pipe('create', '-f', iotests.imgfmt, disk_img_path, img_size)
32*44a8174eSStefan Hajnoczi
33*44a8174eSStefan Hajnoczi    iotests.log('Launching VM...')
34*44a8174eSStefan Hajnoczi    (vm.add_drive(disk_img_path, 'node-name=drive0-node', interface='none')
35*44a8174eSStefan Hajnoczi       .launch())
36*44a8174eSStefan Hajnoczi
37*44a8174eSStefan Hajnoczi    iotests.log('Starting NBD server...')
38*44a8174eSStefan Hajnoczi    iotests.log(vm.qmp('nbd-server-start', addr={
39*44a8174eSStefan Hajnoczi            "type": "unix",
40*44a8174eSStefan Hajnoczi            "data": {
41*44a8174eSStefan Hajnoczi                "path": nbd_sock_path,
42*44a8174eSStefan Hajnoczi            }
43*44a8174eSStefan Hajnoczi        }))
44*44a8174eSStefan Hajnoczi
45*44a8174eSStefan Hajnoczi    iotests.log('Adding NBD export...')
46*44a8174eSStefan Hajnoczi    iotests.log(vm.qmp('nbd-server-add', device='drive0-node', writable=True))
47*44a8174eSStefan Hajnoczi
48*44a8174eSStefan Hajnoczi    iotests.log('Creating external snapshot...')
49*44a8174eSStefan Hajnoczi    iotests.log(vm.qmp('blockdev-snapshot-sync',
50*44a8174eSStefan Hajnoczi        node_name='drive0-node',
51*44a8174eSStefan Hajnoczi        snapshot_node_name='drive0-snapshot-node',
52*44a8174eSStefan Hajnoczi        snapshot_file=disk_snapshot_img_path))
53*44a8174eSStefan Hajnoczi
54*44a8174eSStefan Hajnoczi    iotests.log('Stopping NBD server...')
55*44a8174eSStefan Hajnoczi    iotests.log(vm.qmp('nbd-server-stop'))
56