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