xref: /qemu/tests/qemu-iotests/140 (revision 16dee4183acb3755b8d2e76e6466a6fec5f1350e)
1*16dee418SMax Reitz#!/bin/bash
2*16dee418SMax Reitz#
3*16dee418SMax Reitz# Test case for ejecting a BB with an NBD server attached to it
4*16dee418SMax Reitz#
5*16dee418SMax Reitz# Copyright (C) 2016 Red Hat, Inc.
6*16dee418SMax Reitz#
7*16dee418SMax Reitz# This program is free software; you can redistribute it and/or modify
8*16dee418SMax Reitz# it under the terms of the GNU General Public License as published by
9*16dee418SMax Reitz# the Free Software Foundation; either version 2 of the License, or
10*16dee418SMax Reitz# (at your option) any later version.
11*16dee418SMax Reitz#
12*16dee418SMax Reitz# This program is distributed in the hope that it will be useful,
13*16dee418SMax Reitz# but WITHOUT ANY WARRANTY; without even the implied warranty of
14*16dee418SMax Reitz# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*16dee418SMax Reitz# GNU General Public License for more details.
16*16dee418SMax Reitz#
17*16dee418SMax Reitz# You should have received a copy of the GNU General Public License
18*16dee418SMax Reitz# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19*16dee418SMax Reitz#
20*16dee418SMax Reitz
21*16dee418SMax Reitz# creator
22*16dee418SMax Reitzowner=mreitz@redhat.com
23*16dee418SMax Reitz
24*16dee418SMax Reitzseq="$(basename $0)"
25*16dee418SMax Reitzecho "QA output created by $seq"
26*16dee418SMax Reitz
27*16dee418SMax Reitzhere="$PWD"
28*16dee418SMax Reitztmp=/tmp/$$
29*16dee418SMax Reitzstatus=1	# failure is the default!
30*16dee418SMax Reitz
31*16dee418SMax Reitz_cleanup()
32*16dee418SMax Reitz{
33*16dee418SMax Reitz    _cleanup_test_img
34*16dee418SMax Reitz    rm -f "$TEST_DIR/nbd"
35*16dee418SMax Reitz}
36*16dee418SMax Reitztrap "_cleanup; exit \$status" 0 1 2 3 15
37*16dee418SMax Reitz
38*16dee418SMax Reitz# get standard environment, filters and checks
39*16dee418SMax Reitz. ./common.rc
40*16dee418SMax Reitz. ./common.filter
41*16dee418SMax Reitz. ./common.qemu
42*16dee418SMax Reitz
43*16dee418SMax Reitz_supported_fmt generic
44*16dee418SMax Reitz_supported_proto file
45*16dee418SMax Reitz_supported_os Linux
46*16dee418SMax Reitz
47*16dee418SMax Reitz_make_test_img 64k
48*16dee418SMax Reitz
49*16dee418SMax Reitz$QEMU_IO -c 'write -P 42 0 64k' "$TEST_IMG" | _filter_qemu_io
50*16dee418SMax Reitz
51*16dee418SMax Reitzkeep_stderr=y \
52*16dee418SMax Reitz_launch_qemu -drive if=ide,media=cdrom,id=drv,file="$TEST_IMG",format=$IMGFMT \
53*16dee418SMax Reitz    2> >(_filter_nbd)
54*16dee418SMax Reitz
55*16dee418SMax Reitz_send_qemu_cmd $QEMU_HANDLE \
56*16dee418SMax Reitz    "{ 'execute': 'qmp_capabilities' }" \
57*16dee418SMax Reitz    'return'
58*16dee418SMax Reitz
59*16dee418SMax Reitz_send_qemu_cmd $QEMU_HANDLE \
60*16dee418SMax Reitz    "{ 'execute': 'nbd-server-start',
61*16dee418SMax Reitz       'arguments': { 'addr': { 'type': 'unix',
62*16dee418SMax Reitz                                'data': { 'path': '$TEST_DIR/nbd' }}}}" \
63*16dee418SMax Reitz    'return'
64*16dee418SMax Reitz
65*16dee418SMax Reitz_send_qemu_cmd $QEMU_HANDLE \
66*16dee418SMax Reitz    "{ 'execute': 'nbd-server-add',
67*16dee418SMax Reitz       'arguments': { 'device': 'drv' }}" \
68*16dee418SMax Reitz    'return'
69*16dee418SMax Reitz
70*16dee418SMax Reitz$QEMU_IO_PROG -f raw -c 'read -P 42 0 64k' \
71*16dee418SMax Reitz    "nbd+unix:///drv?socket=$TEST_DIR/nbd" 2>&1 \
72*16dee418SMax Reitz    | _filter_qemu_io | _filter_nbd
73*16dee418SMax Reitz
74*16dee418SMax Reitz_send_qemu_cmd $QEMU_HANDLE \
75*16dee418SMax Reitz    "{ 'execute': 'eject',
76*16dee418SMax Reitz       'arguments': { 'device': 'drv' }}" \
77*16dee418SMax Reitz    'return'
78*16dee418SMax Reitz
79*16dee418SMax Reitz$QEMU_IO_PROG -f raw -c close \
80*16dee418SMax Reitz    "nbd+unix:///drv?socket=$TEST_DIR/nbd" 2>&1 \
81*16dee418SMax Reitz    | _filter_qemu_io | _filter_nbd
82*16dee418SMax Reitz
83*16dee418SMax Reitz_send_qemu_cmd $QEMU_HANDLE \
84*16dee418SMax Reitz    "{ 'execute': 'quit' }" \
85*16dee418SMax Reitz    'return'
86*16dee418SMax Reitz
87*16dee418SMax Reitzwait=1 _cleanup_qemu
88*16dee418SMax Reitz
89*16dee418SMax Reitz# success, all done
90*16dee418SMax Reitzecho '*** done'
91*16dee418SMax Reitzrm -f $seq.full
92*16dee418SMax Reitzstatus=0
93