xref: /openbmc/qemu/tests/qemu-iotests/087 (revision 11a82d14293cd66f428f535741717ff338c0722b)
1*11a82d14SPhilippe 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
29c75203c8SKevin Wolf# get standard environment, filters and checks
30c75203c8SKevin Wolf. ./common.rc
31c75203c8SKevin Wolf. ./common.filter
32c75203c8SKevin Wolf
33c75203c8SKevin Wolf_supported_fmt qcow2
34c75203c8SKevin Wolf_supported_proto file
35c75203c8SKevin Wolf_supported_os Linux
36c75203c8SKevin Wolf
378cedcffdSEric Blakedo_run_qemu()
38c75203c8SKevin Wolf{
39c75203c8SKevin Wolf    echo Testing: "$@"
40c75203c8SKevin Wolf    $QEMU -nographic -qmp stdio -serial none "$@"
41c75203c8SKevin Wolf    echo
42c75203c8SKevin Wolf}
43c75203c8SKevin Wolf
448cedcffdSEric Blakerun_qemu()
45c75203c8SKevin Wolf{
46e6ff69bfSDaniel P. Berrange    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \
47e6ff69bfSDaniel P. Berrange                          | _filter_qemu | _filter_imgfmt \
4844673a0bSMax Reitz                          | _filter_actual_image_size
49c75203c8SKevin Wolf}
50c75203c8SKevin Wolf
51c75203c8SKevin Wolfsize=128M
52c75203c8SKevin Wolf
53c75203c8SKevin Wolf_make_test_img $size
54c75203c8SKevin Wolf
55c75203c8SKevin Wolfecho
56be4b67bcSMax Reitzecho === Missing ID and node-name ===
57c75203c8SKevin Wolfecho
58c75203c8SKevin Wolf
59c75203c8SKevin Wolfrun_qemu <<EOF
60c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
61c75203c8SKevin Wolf{ "execute": "blockdev-add",
62c75203c8SKevin Wolf  "arguments": {
63c75203c8SKevin Wolf      "driver": "$IMGFMT",
64c75203c8SKevin Wolf      "file": {
65c75203c8SKevin Wolf          "driver": "file",
66c75203c8SKevin Wolf          "filename": "$TEST_IMG"
67c75203c8SKevin Wolf      }
68c75203c8SKevin Wolf    }
69c75203c8SKevin Wolf  }
70c75203c8SKevin Wolf{ "execute": "quit" }
71c75203c8SKevin WolfEOF
72c75203c8SKevin Wolf
73c75203c8SKevin Wolfecho
74f2d953ecSKevin Wolfecho === Duplicate ID ===
75f2d953ecSKevin Wolfecho
76f2d953ecSKevin Wolf
775feb08edSKevin Wolfrun_qemu -drive driver=$IMGFMT,id=disk,node-name=test-node,file="$TEST_IMG" <<EOF
78f2d953ecSKevin Wolf{ "execute": "qmp_capabilities" }
79f2d953ecSKevin Wolf{ "execute": "blockdev-add",
80f2d953ecSKevin Wolf  "arguments": {
81f2d953ecSKevin Wolf      "driver": "$IMGFMT",
8290d9d301SKevin Wolf      "node-name": "disk",
8390d9d301SKevin Wolf      "file": {
84d5b8336aSFam Zheng          "driver": "null-co"
8590d9d301SKevin Wolf      }
8690d9d301SKevin Wolf    }
8790d9d301SKevin Wolf  }
8890d9d301SKevin Wolf{ "execute": "blockdev-add",
8990d9d301SKevin Wolf  "arguments": {
9090d9d301SKevin Wolf      "driver": "$IMGFMT",
9190d9d301SKevin Wolf      "node-name": "test-node",
9290d9d301SKevin Wolf      "file": {
93d5b8336aSFam Zheng          "driver": "null-co"
9490d9d301SKevin Wolf      }
9590d9d301SKevin Wolf    }
9690d9d301SKevin Wolf  }
97f2d953ecSKevin Wolf{ "execute": "quit" }
98f2d953ecSKevin WolfEOF
99f2d953ecSKevin Wolf
100f2d953ecSKevin Wolfecho
101c75203c8SKevin Wolfecho === aio=native without O_DIRECT ===
102c75203c8SKevin Wolfecho
103c75203c8SKevin Wolf
104c0012e9aSMax Reitz# Skip this test if AIO is not enabled in this build
1058cedcffdSEric Blakerun_qemu_filter_aio()
106c0012e9aSMax Reitz{
107c0012e9aSMax Reitz    run_qemu "$@" | \
108c0012e9aSMax Reitz        sed -e 's/is not supported in this build/it requires cache.direct=on, which was not specified/'
109c0012e9aSMax Reitz}
110c0012e9aSMax Reitz
111c0012e9aSMax Reitzrun_qemu_filter_aio <<EOF
112c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
113c75203c8SKevin Wolf{ "execute": "blockdev-add",
114c75203c8SKevin Wolf  "arguments": {
115c75203c8SKevin Wolf      "driver": "$IMGFMT",
1165feb08edSKevin Wolf      "node-name": "disk",
117c75203c8SKevin Wolf      "file": {
118c75203c8SKevin Wolf          "driver": "file",
1190a4279d9SKevin Wolf          "filename": "$TEST_IMG",
1200a4279d9SKevin Wolf          "aio": "native"
121c75203c8SKevin Wolf      }
122c75203c8SKevin Wolf    }
123c75203c8SKevin Wolf  }
124c75203c8SKevin Wolf{ "execute": "quit" }
125c75203c8SKevin WolfEOF
126c75203c8SKevin Wolf
127c75203c8SKevin Wolfecho
128426d52d8SDaniel P. Berrangeecho === Encrypted image QCow ===
129c75203c8SKevin Wolfecho
130c75203c8SKevin Wolf
131b25b387fSDaniel P. Berrange_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
132c75203c8SKevin Wolfrun_qemu <<EOF
133c75203c8SKevin Wolf{ "execute": "qmp_capabilities" }
134b25b387fSDaniel P. Berrange{ "execute": "object-add",
135b25b387fSDaniel P. Berrange  "arguments": {
136b25b387fSDaniel P. Berrange      "qom-type": "secret",
137b25b387fSDaniel P. Berrange      "id": "sec0",
138b25b387fSDaniel P. Berrange      "props": {
139b25b387fSDaniel P. Berrange          "data": "123456"
140b25b387fSDaniel P. Berrange      }
141b25b387fSDaniel P. Berrange  }
142b25b387fSDaniel P. Berrange}
143c75203c8SKevin Wolf{ "execute": "blockdev-add",
144c75203c8SKevin Wolf  "arguments": {
145c75203c8SKevin Wolf      "driver": "$IMGFMT",
1465feb08edSKevin Wolf      "node-name": "disk",
147c75203c8SKevin Wolf      "file": {
148c75203c8SKevin Wolf          "driver": "file",
149c75203c8SKevin Wolf          "filename": "$TEST_IMG"
150b25b387fSDaniel P. Berrange      },
151b25b387fSDaniel P. Berrange      "encrypt": {
152b25b387fSDaniel P. Berrange          "format": "aes",
153b25b387fSDaniel P. Berrange          "key-secret": "sec0"
154c75203c8SKevin Wolf      }
155c75203c8SKevin Wolf    }
156c75203c8SKevin Wolf  }
157c75203c8SKevin Wolf{ "execute": "quit" }
158c75203c8SKevin WolfEOF
159c75203c8SKevin Wolf
160fe509ee2SFam Zhengecho
161426d52d8SDaniel P. Berrangeecho === Encrypted image LUKS ===
162426d52d8SDaniel P. Berrangeecho
163426d52d8SDaniel P. Berrange
164426d52d8SDaniel P. Berrange_make_test_img --object secret,id=sec0,data=123456 -o encrypt.format=luks,encrypt.key-secret=sec0 $size
165426d52d8SDaniel P. Berrangerun_qemu <<EOF
166426d52d8SDaniel P. Berrange{ "execute": "qmp_capabilities" }
167426d52d8SDaniel P. Berrange{ "execute": "object-add",
168426d52d8SDaniel P. Berrange  "arguments": {
169426d52d8SDaniel P. Berrange      "qom-type": "secret",
170426d52d8SDaniel P. Berrange      "id": "sec0",
171426d52d8SDaniel P. Berrange      "props": {
172426d52d8SDaniel P. Berrange          "data": "123456"
173426d52d8SDaniel P. Berrange      }
174426d52d8SDaniel P. Berrange  }
175426d52d8SDaniel P. Berrange}
176426d52d8SDaniel P. Berrange{ "execute": "blockdev-add",
177426d52d8SDaniel P. Berrange  "arguments": {
178426d52d8SDaniel P. Berrange      "driver": "$IMGFMT",
179426d52d8SDaniel P. Berrange      "node-name": "disk",
180426d52d8SDaniel P. Berrange      "file": {
181426d52d8SDaniel P. Berrange          "driver": "file",
182426d52d8SDaniel P. Berrange          "filename": "$TEST_IMG"
183426d52d8SDaniel P. Berrange      },
184426d52d8SDaniel P. Berrange      "encrypt": {
185426d52d8SDaniel P. Berrange        "format": "luks",
186426d52d8SDaniel P. Berrange        "key-secret": "sec0"
187426d52d8SDaniel P. Berrange      }
188426d52d8SDaniel P. Berrange    }
189426d52d8SDaniel P. Berrange  }
190426d52d8SDaniel P. Berrange{ "execute": "quit" }
191426d52d8SDaniel P. BerrangeEOF
192426d52d8SDaniel P. Berrange
193426d52d8SDaniel P. Berrangeecho
194fe509ee2SFam Zhengecho === Missing driver ===
195fe509ee2SFam Zhengecho
196fe509ee2SFam Zheng
197b25b387fSDaniel P. Berrange_make_test_img --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 $size
198fe509ee2SFam Zhengrun_qemu -S <<EOF
199fe509ee2SFam Zheng{ "execute": "qmp_capabilities" }
200fe509ee2SFam Zheng{ "execute": "blockdev-add",
201fe509ee2SFam Zheng  "arguments": {
2025feb08edSKevin Wolf      "node-name": "disk"
203fe509ee2SFam Zheng    }
204fe509ee2SFam Zheng  }
205fe509ee2SFam Zheng{ "execute": "quit" }
206fe509ee2SFam ZhengEOF
207fe509ee2SFam Zheng
208c75203c8SKevin Wolf# success, all done
209c75203c8SKevin Wolfecho "*** done"
210c75203c8SKevin Wolfrm -f $seq.full
211c75203c8SKevin Wolfstatus=0
212