xref: /openbmc/qemu/tests/qemu-iotests/087 (revision c75203c8d343dc71d95144862bbb47290689c455)
1*c75203c8SKevin Wolf#!/bin/bash
2*c75203c8SKevin Wolf#
3*c75203c8SKevin Wolf# Test unsupported blockdev-add cases
4*c75203c8SKevin Wolf#
5*c75203c8SKevin Wolf# Copyright (C) 2014 Red Hat, Inc.
6*c75203c8SKevin Wolf#
7*c75203c8SKevin Wolf# This program is free software; you can redistribute it and/or modify
8*c75203c8SKevin Wolf# it under the terms of the GNU General Public License as published by
9*c75203c8SKevin Wolf# the Free Software Foundation; either version 2 of the License, or
10*c75203c8SKevin Wolf# (at your option) any later version.
11*c75203c8SKevin Wolf#
12*c75203c8SKevin Wolf# This program is distributed in the hope that it will be useful,
13*c75203c8SKevin Wolf# but WITHOUT ANY WARRANTY; without even the implied warranty of
14*c75203c8SKevin Wolf# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*c75203c8SKevin Wolf# GNU General Public License for more details.
16*c75203c8SKevin Wolf#
17*c75203c8SKevin Wolf# You should have received a copy of the GNU General Public License
18*c75203c8SKevin Wolf# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19*c75203c8SKevin Wolf#
20*c75203c8SKevin Wolf
21*c75203c8SKevin Wolf# creator
22*c75203c8SKevin Wolfowner=kwolf@redhat.com
23*c75203c8SKevin Wolf
24*c75203c8SKevin Wolfseq=`basename $0`
25*c75203c8SKevin Wolfecho "QA output created by $seq"
26*c75203c8SKevin Wolf
27*c75203c8SKevin Wolfhere=`pwd`
28*c75203c8SKevin Wolftmp=/tmp/$$
29*c75203c8SKevin Wolfstatus=1	# failure is the default!
30*c75203c8SKevin Wolf
31*c75203c8SKevin Wolf# get standard environment, filters and checks
32*c75203c8SKevin Wolf. ./common.rc
33*c75203c8SKevin Wolf. ./common.filter
34*c75203c8SKevin Wolf
35*c75203c8SKevin Wolf_supported_fmt qcow2
36*c75203c8SKevin Wolf_supported_proto file
37*c75203c8SKevin Wolf_supported_os Linux
38*c75203c8SKevin Wolf
39*c75203c8SKevin Wolffunction do_run_qemu()
40*c75203c8SKevin Wolf{
41*c75203c8SKevin Wolf    echo Testing: "$@"
42*c75203c8SKevin Wolf    $QEMU -nographic -qmp stdio -serial none "$@"
43*c75203c8SKevin Wolf    echo
44*c75203c8SKevin Wolf}
45*c75203c8SKevin Wolf
46*c75203c8SKevin Wolffunction run_qemu()
47*c75203c8SKevin Wolf{
48*c75203c8SKevin Wolf    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp | sed -e 's/\("actual-size":\s*\)[0-9]\+/\1SIZE/g'
49*c75203c8SKevin Wolf}
50*c75203c8SKevin Wolf
51*c75203c8SKevin Wolfsize=128M
52*c75203c8SKevin Wolf
53*c75203c8SKevin Wolf_make_test_img $size
54*c75203c8SKevin Wolf
55*c75203c8SKevin Wolfecho
56*c75203c8SKevin Wolfecho === Missing ID ===
57*c75203c8SKevin Wolfecho
58*c75203c8SKevin Wolf
59*c75203c8SKevin Wolfrun_qemu <<EOF
60*c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
61*c75203c8SKevin Wolf{ "execute": "blockdev-add",
62*c75203c8SKevin Wolf  "arguments": {
63*c75203c8SKevin Wolf      "options": {
64*c75203c8SKevin Wolf        "driver": "$IMGFMT",
65*c75203c8SKevin Wolf        "file": {
66*c75203c8SKevin Wolf            "driver": "file",
67*c75203c8SKevin Wolf            "filename": "$TEST_IMG"
68*c75203c8SKevin Wolf        }
69*c75203c8SKevin Wolf      }
70*c75203c8SKevin Wolf    }
71*c75203c8SKevin Wolf  }
72*c75203c8SKevin Wolf{ "execute": "quit" }
73*c75203c8SKevin WolfEOF
74*c75203c8SKevin Wolf
75*c75203c8SKevin Wolfecho
76*c75203c8SKevin Wolfecho === aio=native without O_DIRECT ===
77*c75203c8SKevin Wolfecho
78*c75203c8SKevin Wolf
79*c75203c8SKevin Wolfrun_qemu <<EOF
80*c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
81*c75203c8SKevin Wolf{ "execute": "blockdev-add",
82*c75203c8SKevin Wolf  "arguments": {
83*c75203c8SKevin Wolf      "options": {
84*c75203c8SKevin Wolf        "driver": "$IMGFMT",
85*c75203c8SKevin Wolf        "id": "disk",
86*c75203c8SKevin Wolf        "aio": "native",
87*c75203c8SKevin Wolf        "file": {
88*c75203c8SKevin Wolf            "driver": "file",
89*c75203c8SKevin Wolf            "filename": "$TEST_IMG"
90*c75203c8SKevin Wolf        }
91*c75203c8SKevin Wolf      }
92*c75203c8SKevin Wolf    }
93*c75203c8SKevin Wolf  }
94*c75203c8SKevin Wolf{ "execute": "quit" }
95*c75203c8SKevin WolfEOF
96*c75203c8SKevin Wolf
97*c75203c8SKevin Wolfecho
98*c75203c8SKevin Wolfecho === Encrypted image ===
99*c75203c8SKevin Wolfecho
100*c75203c8SKevin Wolf
101*c75203c8SKevin Wolf_make_test_img -o encryption=on $size
102*c75203c8SKevin Wolfrun_qemu <<EOF
103*c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
104*c75203c8SKevin Wolf{ "execute": "blockdev-add",
105*c75203c8SKevin Wolf  "arguments": {
106*c75203c8SKevin Wolf      "options": {
107*c75203c8SKevin Wolf        "driver": "$IMGFMT",
108*c75203c8SKevin Wolf        "id": "disk",
109*c75203c8SKevin Wolf        "file": {
110*c75203c8SKevin Wolf            "driver": "file",
111*c75203c8SKevin Wolf            "filename": "$TEST_IMG"
112*c75203c8SKevin Wolf        }
113*c75203c8SKevin Wolf      }
114*c75203c8SKevin Wolf    }
115*c75203c8SKevin Wolf  }
116*c75203c8SKevin Wolf{ "execute": "quit" }
117*c75203c8SKevin WolfEOF
118*c75203c8SKevin Wolf
119*c75203c8SKevin Wolf# success, all done
120*c75203c8SKevin Wolfecho "*** done"
121*c75203c8SKevin Wolfrm -f $seq.full
122*c75203c8SKevin Wolfstatus=0
123