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