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