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": "null-co" 86 } 87 } 88 } 89{ "execute": "blockdev-add", 90 "arguments": { 91 "driver": "$IMGFMT", 92 "node-name": "test-node", 93 "file": { 94 "driver": "null-co" 95 } 96 } 97 } 98{ "execute": "quit" } 99EOF 100 101echo 102echo === aio=native without O_DIRECT === 103echo 104 105run_qemu <<EOF 106{ "execute": "qmp_capabilities" } 107{ "execute": "blockdev-add", 108 "arguments": { 109 "driver": "$IMGFMT", 110 "node-name": "disk", 111 "file": { 112 "driver": "file", 113 "filename": "$TEST_IMG", 114 "aio": "native" 115 } 116 } 117 } 118{ "execute": "quit" } 119EOF 120 121echo 122echo === Encrypted image === 123echo 124 125_make_test_img -o encryption=on $size 126run_qemu -S <<EOF 127{ "execute": "qmp_capabilities" } 128{ "execute": "blockdev-add", 129 "arguments": { 130 "driver": "$IMGFMT", 131 "node-name": "disk", 132 "file": { 133 "driver": "file", 134 "filename": "$TEST_IMG" 135 } 136 } 137 } 138{ "execute": "quit" } 139EOF 140 141run_qemu <<EOF 142{ "execute": "qmp_capabilities" } 143{ "execute": "blockdev-add", 144 "arguments": { 145 "driver": "$IMGFMT", 146 "node-name": "disk", 147 "file": { 148 "driver": "file", 149 "filename": "$TEST_IMG" 150 } 151 } 152 } 153{ "execute": "quit" } 154EOF 155 156echo 157echo === Missing driver === 158echo 159 160_make_test_img -o encryption=on $size 161run_qemu -S <<EOF 162{ "execute": "qmp_capabilities" } 163{ "execute": "blockdev-add", 164 "arguments": { 165 "node-name": "disk" 166 } 167 } 168{ "execute": "quit" } 169EOF 170 171# success, all done 172echo "*** done" 173rm -f $seq.full 174status=0 175