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 "options": { 65 "driver": "$IMGFMT", 66 "file": { 67 "driver": "file", 68 "filename": "$TEST_IMG" 69 } 70 } 71 } 72 } 73{ "execute": "quit" } 74EOF 75 76echo 77echo === Duplicate ID === 78echo 79 80run_qemu -drive driver=$IMGFMT,id=disk,node-name=test-node,file="$TEST_IMG" <<EOF 81{ "execute": "qmp_capabilities" } 82{ "execute": "blockdev-add", 83 "arguments": { 84 "options": { 85 "driver": "$IMGFMT", 86 "node-name": "disk", 87 "file": { 88 "driver": "file", 89 "filename": "$TEST_IMG" 90 } 91 } 92 } 93 } 94{ "execute": "blockdev-add", 95 "arguments": { 96 "options": { 97 "driver": "$IMGFMT", 98 "node-name": "test-node", 99 "file": { 100 "driver": "file", 101 "filename": "$TEST_IMG" 102 } 103 } 104 } 105 } 106{ "execute": "quit" } 107EOF 108 109echo 110echo === aio=native without O_DIRECT === 111echo 112 113run_qemu <<EOF 114{ "execute": "qmp_capabilities" } 115{ "execute": "blockdev-add", 116 "arguments": { 117 "options": { 118 "driver": "$IMGFMT", 119 "node-name": "disk", 120 "aio": "native", 121 "file": { 122 "driver": "file", 123 "filename": "$TEST_IMG" 124 } 125 } 126 } 127 } 128{ "execute": "quit" } 129EOF 130 131echo 132echo === Encrypted image === 133echo 134 135_make_test_img -o encryption=on $size 136run_qemu -S <<EOF 137{ "execute": "qmp_capabilities" } 138{ "execute": "blockdev-add", 139 "arguments": { 140 "options": { 141 "driver": "$IMGFMT", 142 "node-name": "disk", 143 "file": { 144 "driver": "file", 145 "filename": "$TEST_IMG" 146 } 147 } 148 } 149 } 150{ "execute": "quit" } 151EOF 152 153run_qemu <<EOF 154{ "execute": "qmp_capabilities" } 155{ "execute": "blockdev-add", 156 "arguments": { 157 "options": { 158 "driver": "$IMGFMT", 159 "node-name": "disk", 160 "file": { 161 "driver": "file", 162 "filename": "$TEST_IMG" 163 } 164 } 165 } 166 } 167{ "execute": "quit" } 168EOF 169 170echo 171echo === Missing driver === 172echo 173 174_make_test_img -o encryption=on $size 175run_qemu -S <<EOF 176{ "execute": "qmp_capabilities" } 177{ "execute": "blockdev-add", 178 "arguments": { 179 "options": { 180 "node-name": "disk" 181 } 182 } 183 } 184{ "execute": "quit" } 185EOF 186 187# success, all done 188echo "*** done" 189rm -f $seq.full 190status=0 191