xref: /openbmc/qemu/tests/qemu-iotests/087 (revision 801ddbda7183e1e043015fd357ea5eb97d925fd2)
111a82d14SPhilippe Mathieu-Daudé#!/usr/bin/env 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 Wolfstatus=1	# failure is the default!
28c75203c8SKevin Wolf
29*801ddbdaSMax Reitz_cleanup()
30*801ddbdaSMax Reitz{
31*801ddbdaSMax Reitz    _cleanup_test_img
32*801ddbdaSMax Reitz}
33*801ddbdaSMax Reitztrap "_cleanup; exit \$status" 0 1 2 3 15
34*801ddbdaSMax Reitz
35c75203c8SKevin Wolf# get standard environment, filters and checks
36c75203c8SKevin Wolf. ./common.rc
37c75203c8SKevin Wolf. ./common.filter
38c75203c8SKevin Wolf
39c75203c8SKevin Wolf_supported_fmt qcow2
40c75203c8SKevin Wolf_supported_proto file
41c75203c8SKevin Wolf_supported_os Linux
42c75203c8SKevin Wolf
438cedcffdSEric Blakedo_run_qemu()
44c75203c8SKevin Wolf{
45c75203c8SKevin Wolf    echo Testing: "$@"
46c75203c8SKevin Wolf    $QEMU -nographic -qmp stdio -serial none "$@"
47c75203c8SKevin Wolf    echo
48c75203c8SKevin Wolf}
49c75203c8SKevin Wolf
508cedcffdSEric Blakerun_qemu()
51c75203c8SKevin Wolf{
52e6ff69bfSDaniel P. Berrange    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
53e6ff69bfSDaniel P. Berrange                          | _filter_qemu | _filter_imgfmt \
5444673a0bSMax Reitz                          | _filter_actual_image_size
55c75203c8SKevin Wolf}
56c75203c8SKevin Wolf
57c75203c8SKevin Wolfsize=128M
58c75203c8SKevin Wolf
59c75203c8SKevin Wolf_make_test_img $size
60c75203c8SKevin Wolf
61c75203c8SKevin Wolfecho
62be4b67bcSMax Reitzecho === Missing ID and node-name ===
63c75203c8SKevin Wolfecho
64c75203c8SKevin Wolf
65c75203c8SKevin Wolfrun_qemu <<EOF
66c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
67c75203c8SKevin Wolf{ "execute": "blockdev-add",
68c75203c8SKevin Wolf  "arguments": {
69c75203c8SKevin Wolf      "driver": "$IMGFMT",
70c75203c8SKevin Wolf      "file": {
71c75203c8SKevin Wolf          "driver": "file",
72c75203c8SKevin Wolf          "filename": "$TEST_IMG"
73c75203c8SKevin Wolf      }
74c75203c8SKevin Wolf    }
75c75203c8SKevin Wolf  }
76c75203c8SKevin Wolf{ "execute": "quit" }
77c75203c8SKevin WolfEOF
78c75203c8SKevin Wolf
79c75203c8SKevin Wolfecho
80f2d953ecSKevin Wolfecho === Duplicate ID ===
81f2d953ecSKevin Wolfecho
82f2d953ecSKevin Wolf
835feb08edSKevin Wolfrun_qemu -drive driver=$IMGFMT,id=disk,node-name=test-node,file="$TEST_IMG" <<EOF
84f2d953ecSKevin Wolf{ "execute": "qmp_capabilities" }
85f2d953ecSKevin Wolf{ "execute": "blockdev-add",
86f2d953ecSKevin Wolf  "arguments": {
87f2d953ecSKevin Wolf      "driver": "$IMGFMT",
8890d9d301SKevin Wolf      "node-name": "disk",
8990d9d301SKevin Wolf      "file": {
90d5b8336aSFam Zheng          "driver": "null-co"
9190d9d301SKevin Wolf      }
9290d9d301SKevin Wolf    }
9390d9d301SKevin Wolf  }
9490d9d301SKevin Wolf{ "execute": "blockdev-add",
9590d9d301SKevin Wolf  "arguments": {
9690d9d301SKevin Wolf      "driver": "$IMGFMT",
9790d9d301SKevin Wolf      "node-name": "test-node",
9890d9d301SKevin Wolf      "file": {
99d5b8336aSFam Zheng          "driver": "null-co"
10090d9d301SKevin Wolf      }
10190d9d301SKevin Wolf    }
10290d9d301SKevin Wolf  }
103f2d953ecSKevin Wolf{ "execute": "quit" }
104f2d953ecSKevin WolfEOF
105f2d953ecSKevin Wolf
106f2d953ecSKevin Wolfecho
107c75203c8SKevin Wolfecho === aio=native without O_DIRECT ===
108c75203c8SKevin Wolfecho
109c75203c8SKevin Wolf
110c0012e9aSMax Reitz# Skip this test if AIO is not enabled in this build
1118cedcffdSEric Blakerun_qemu_filter_aio()
112c0012e9aSMax Reitz{
113c0012e9aSMax Reitz    run_qemu "$@" | \
114c0012e9aSMax Reitz        sed -e 's/is not supported in this build/it requires cache.direct=on, which was not specified/'
115c0012e9aSMax Reitz}
116c0012e9aSMax Reitz
117c0012e9aSMax Reitzrun_qemu_filter_aio <<EOF
118c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
119c75203c8SKevin Wolf{ "execute": "blockdev-add",
120c75203c8SKevin Wolf  "arguments": {
121c75203c8SKevin Wolf      "driver": "$IMGFMT",
1225feb08edSKevin Wolf      "node-name": "disk",
123c75203c8SKevin Wolf      "file": {
124c75203c8SKevin Wolf          "driver": "file",
1250a4279d9SKevin Wolf          "filename": "$TEST_IMG",
1260a4279d9SKevin Wolf          "aio": "native"
127c75203c8SKevin Wolf      }
128c75203c8SKevin Wolf    }
129c75203c8SKevin Wolf  }
130c75203c8SKevin Wolf{ "execute": "quit" }
131c75203c8SKevin WolfEOF
132c75203c8SKevin Wolf
133c75203c8SKevin Wolfecho
134426d52d8SDaniel P. Berrangeecho === Encrypted image QCow ===
135c75203c8SKevin Wolfecho
136c75203c8SKevin Wolf
137b25b387fSDaniel P. Berrange_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
138c75203c8SKevin Wolfrun_qemu <<EOF
139c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
140b25b387fSDaniel P. Berrange{ "execute": "object-add",
141b25b387fSDaniel P. Berrange  "arguments": {
142b25b387fSDaniel P. Berrange      "qom-type": "secret",
143b25b387fSDaniel P. Berrange      "id": "sec0",
144b25b387fSDaniel P. Berrange      "props": {
145b25b387fSDaniel P. Berrange          "data": "123456"
146b25b387fSDaniel P. Berrange      }
147b25b387fSDaniel P. Berrange  }
148b25b387fSDaniel P. Berrange}
149c75203c8SKevin Wolf{ "execute": "blockdev-add",
150c75203c8SKevin Wolf  "arguments": {
151c75203c8SKevin Wolf      "driver": "$IMGFMT",
1525feb08edSKevin Wolf      "node-name": "disk",
153c75203c8SKevin Wolf      "file": {
154c75203c8SKevin Wolf          "driver": "file",
155c75203c8SKevin Wolf          "filename": "$TEST_IMG"
156b25b387fSDaniel P. Berrange      },
157b25b387fSDaniel P. Berrange      "encrypt": {
158b25b387fSDaniel P. Berrange          "format": "aes",
159b25b387fSDaniel P. Berrange          "key-secret": "sec0"
160c75203c8SKevin Wolf      }
161c75203c8SKevin Wolf    }
162c75203c8SKevin Wolf  }
163c75203c8SKevin Wolf{ "execute": "quit" }
164c75203c8SKevin WolfEOF
165c75203c8SKevin Wolf
166fe509ee2SFam Zhengecho
167426d52d8SDaniel P. Berrangeecho === Encrypted image LUKS ===
168426d52d8SDaniel P. Berrangeecho
169426d52d8SDaniel P. Berrange
170426d52d8SDaniel P. Berrange_make_test_img --object secret,id=sec0,data=123456 -o encrypt.format=luks,encrypt.key-secret=sec0 $size
171426d52d8SDaniel P. Berrangerun_qemu <<EOF
172426d52d8SDaniel P. Berrange{ "execute": "qmp_capabilities" }
173426d52d8SDaniel P. Berrange{ "execute": "object-add",
174426d52d8SDaniel P. Berrange  "arguments": {
175426d52d8SDaniel P. Berrange      "qom-type": "secret",
176426d52d8SDaniel P. Berrange      "id": "sec0",
177426d52d8SDaniel P. Berrange      "props": {
178426d52d8SDaniel P. Berrange          "data": "123456"
179426d52d8SDaniel P. Berrange      }
180426d52d8SDaniel P. Berrange  }
181426d52d8SDaniel P. Berrange}
182426d52d8SDaniel P. Berrange{ "execute": "blockdev-add",
183426d52d8SDaniel P. Berrange  "arguments": {
184426d52d8SDaniel P. Berrange      "driver": "$IMGFMT",
185426d52d8SDaniel P. Berrange      "node-name": "disk",
186426d52d8SDaniel P. Berrange      "file": {
187426d52d8SDaniel P. Berrange          "driver": "file",
188426d52d8SDaniel P. Berrange          "filename": "$TEST_IMG"
189426d52d8SDaniel P. Berrange      },
190426d52d8SDaniel P. Berrange      "encrypt": {
191426d52d8SDaniel P. Berrange        "format": "luks",
192426d52d8SDaniel P. Berrange        "key-secret": "sec0"
193426d52d8SDaniel P. Berrange      }
194426d52d8SDaniel P. Berrange    }
195426d52d8SDaniel P. Berrange  }
196426d52d8SDaniel P. Berrange{ "execute": "quit" }
197426d52d8SDaniel P. BerrangeEOF
198426d52d8SDaniel P. Berrange
199426d52d8SDaniel P. Berrangeecho
200fe509ee2SFam Zhengecho === Missing driver ===
201fe509ee2SFam Zhengecho
202fe509ee2SFam Zheng
203b25b387fSDaniel P. Berrange_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
204fe509ee2SFam Zhengrun_qemu -S <<EOF
205fe509ee2SFam Zheng{ "execute": "qmp_capabilities" }
206fe509ee2SFam Zheng{ "execute": "blockdev-add",
207fe509ee2SFam Zheng  "arguments": {
2085feb08edSKevin Wolf      "node-name": "disk"
209fe509ee2SFam Zheng    }
210fe509ee2SFam Zheng  }
211fe509ee2SFam Zheng{ "execute": "quit" }
212fe509ee2SFam ZhengEOF
213fe509ee2SFam Zheng
214c75203c8SKevin Wolf# success, all done
215c75203c8SKevin Wolfecho "*** done"
216c75203c8SKevin Wolfrm -f $seq.full
217c75203c8SKevin Wolfstatus=0
218