1c75203c8SKevin Wolf#!/bin/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 Wolfhere=`pwd` 28c75203c8SKevin Wolftmp=/tmp/$$ 29c75203c8SKevin Wolfstatus=1 # failure is the default! 30c75203c8SKevin Wolf 31c75203c8SKevin Wolf# get standard environment, filters and checks 32c75203c8SKevin Wolf. ./common.rc 33c75203c8SKevin Wolf. ./common.filter 34c75203c8SKevin Wolf 35c75203c8SKevin Wolf_supported_fmt qcow2 36c75203c8SKevin Wolf_supported_proto file 37c75203c8SKevin Wolf_supported_os Linux 38c75203c8SKevin Wolf 39c75203c8SKevin Wolffunction do_run_qemu() 40c75203c8SKevin Wolf{ 41c75203c8SKevin Wolf echo Testing: "$@" 42c75203c8SKevin Wolf $QEMU -nographic -qmp stdio -serial none "$@" 43c75203c8SKevin Wolf echo 44c75203c8SKevin Wolf} 45c75203c8SKevin Wolf 46c75203c8SKevin Wolffunction run_qemu() 47c75203c8SKevin Wolf{ 48*e6ff69bfSDaniel P. Berrange do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_qmp \ 49*e6ff69bfSDaniel P. Berrange | _filter_qemu | _filter_imgfmt \ 504dd7b8d3SMax Reitz | sed -e 's/\("actual-size":\s*\)[0-9]\+/\1SIZE/g' 51c75203c8SKevin Wolf} 52c75203c8SKevin Wolf 53c75203c8SKevin Wolfsize=128M 54c75203c8SKevin Wolf 55c75203c8SKevin Wolf_make_test_img $size 56c75203c8SKevin Wolf 57c75203c8SKevin Wolfecho 58be4b67bcSMax Reitzecho === Missing ID and node-name === 59c75203c8SKevin Wolfecho 60c75203c8SKevin Wolf 61c75203c8SKevin Wolfrun_qemu <<EOF 62c75203c8SKevin Wolf{ "execute": "qmp_capabilities" } 63c75203c8SKevin Wolf{ "execute": "blockdev-add", 64c75203c8SKevin Wolf "arguments": { 65c75203c8SKevin Wolf "options": { 66c75203c8SKevin Wolf "driver": "$IMGFMT", 67c75203c8SKevin Wolf "file": { 68c75203c8SKevin Wolf "driver": "file", 69c75203c8SKevin Wolf "filename": "$TEST_IMG" 70c75203c8SKevin Wolf } 71c75203c8SKevin Wolf } 72c75203c8SKevin Wolf } 73c75203c8SKevin Wolf } 74c75203c8SKevin Wolf{ "execute": "quit" } 75c75203c8SKevin WolfEOF 76c75203c8SKevin Wolf 77c75203c8SKevin Wolfecho 78f2d953ecSKevin Wolfecho === Duplicate ID === 79f2d953ecSKevin Wolfecho 80f2d953ecSKevin Wolf 81f2d953ecSKevin Wolfrun_qemu <<EOF 82f2d953ecSKevin Wolf{ "execute": "qmp_capabilities" } 83f2d953ecSKevin Wolf{ "execute": "blockdev-add", 84f2d953ecSKevin Wolf "arguments": { 85f2d953ecSKevin Wolf "options": { 86f2d953ecSKevin Wolf "driver": "$IMGFMT", 87f2d953ecSKevin Wolf "id": "disk", 8890d9d301SKevin Wolf "node-name": "test-node", 89f2d953ecSKevin Wolf "file": { 90f2d953ecSKevin Wolf "driver": "file", 91f2d953ecSKevin Wolf "filename": "$TEST_IMG" 92f2d953ecSKevin Wolf } 93f2d953ecSKevin Wolf } 94f2d953ecSKevin Wolf } 95f2d953ecSKevin Wolf } 96f2d953ecSKevin Wolf{ "execute": "blockdev-add", 97f2d953ecSKevin Wolf "arguments": { 98f2d953ecSKevin Wolf "options": { 99f2d953ecSKevin Wolf "driver": "$IMGFMT", 100f2d953ecSKevin Wolf "id": "disk", 101f2d953ecSKevin Wolf "file": { 102f2d953ecSKevin Wolf "driver": "file", 103f2d953ecSKevin Wolf "filename": "$TEST_IMG" 104f2d953ecSKevin Wolf } 105f2d953ecSKevin Wolf } 106f2d953ecSKevin Wolf } 107f2d953ecSKevin Wolf } 10890d9d301SKevin Wolf{ "execute": "blockdev-add", 10990d9d301SKevin Wolf "arguments": { 11090d9d301SKevin Wolf "options": { 11190d9d301SKevin Wolf "driver": "$IMGFMT", 11290d9d301SKevin Wolf "id": "test-node", 11390d9d301SKevin Wolf "file": { 11490d9d301SKevin Wolf "driver": "file", 11590d9d301SKevin Wolf "filename": "$TEST_IMG" 11690d9d301SKevin Wolf } 11790d9d301SKevin Wolf } 11890d9d301SKevin Wolf } 11990d9d301SKevin Wolf } 12090d9d301SKevin Wolf{ "execute": "blockdev-add", 12190d9d301SKevin Wolf "arguments": { 12290d9d301SKevin Wolf "options": { 12390d9d301SKevin Wolf "driver": "$IMGFMT", 12490d9d301SKevin Wolf "id": "disk2", 12590d9d301SKevin Wolf "node-name": "disk", 12690d9d301SKevin Wolf "file": { 12790d9d301SKevin Wolf "driver": "file", 12890d9d301SKevin Wolf "filename": "$TEST_IMG" 12990d9d301SKevin Wolf } 13090d9d301SKevin Wolf } 13190d9d301SKevin Wolf } 13290d9d301SKevin Wolf } 13390d9d301SKevin Wolf{ "execute": "blockdev-add", 13490d9d301SKevin Wolf "arguments": { 13590d9d301SKevin Wolf "options": { 13690d9d301SKevin Wolf "driver": "$IMGFMT", 13790d9d301SKevin Wolf "id": "disk2", 13890d9d301SKevin Wolf "node-name": "test-node", 13990d9d301SKevin Wolf "file": { 14090d9d301SKevin Wolf "driver": "file", 14190d9d301SKevin Wolf "filename": "$TEST_IMG" 14290d9d301SKevin Wolf } 14390d9d301SKevin Wolf } 14490d9d301SKevin Wolf } 14590d9d301SKevin Wolf } 14690d9d301SKevin Wolf{ "execute": "blockdev-add", 14790d9d301SKevin Wolf "arguments": { 14890d9d301SKevin Wolf "options": { 14990d9d301SKevin Wolf "driver": "$IMGFMT", 15090d9d301SKevin Wolf "id": "disk3", 15190d9d301SKevin Wolf "node-name": "disk3", 15290d9d301SKevin Wolf "file": { 15390d9d301SKevin Wolf "driver": "file", 15490d9d301SKevin Wolf "filename": "$TEST_IMG" 15590d9d301SKevin Wolf } 15690d9d301SKevin Wolf } 15790d9d301SKevin Wolf } 15890d9d301SKevin Wolf } 159f2d953ecSKevin Wolf{ "execute": "quit" } 160f2d953ecSKevin WolfEOF 161f2d953ecSKevin Wolf 162f2d953ecSKevin Wolfecho 163c75203c8SKevin Wolfecho === aio=native without O_DIRECT === 164c75203c8SKevin Wolfecho 165c75203c8SKevin Wolf 166c75203c8SKevin Wolfrun_qemu <<EOF 167c75203c8SKevin Wolf{ "execute": "qmp_capabilities" } 168c75203c8SKevin Wolf{ "execute": "blockdev-add", 169c75203c8SKevin Wolf "arguments": { 170c75203c8SKevin Wolf "options": { 171c75203c8SKevin Wolf "driver": "$IMGFMT", 172c75203c8SKevin Wolf "id": "disk", 173c75203c8SKevin Wolf "aio": "native", 174c75203c8SKevin Wolf "file": { 175c75203c8SKevin Wolf "driver": "file", 176c75203c8SKevin Wolf "filename": "$TEST_IMG" 177c75203c8SKevin Wolf } 178c75203c8SKevin Wolf } 179c75203c8SKevin Wolf } 180c75203c8SKevin Wolf } 181c75203c8SKevin Wolf{ "execute": "quit" } 182c75203c8SKevin WolfEOF 183c75203c8SKevin Wolf 184c75203c8SKevin Wolfecho 185c75203c8SKevin Wolfecho === Encrypted image === 186c75203c8SKevin Wolfecho 187c75203c8SKevin Wolf 188c75203c8SKevin Wolf_make_test_img -o encryption=on $size 189c3adb58fSMarkus Armbrusterrun_qemu -S <<EOF 190c3adb58fSMarkus Armbruster{ "execute": "qmp_capabilities" } 191c3adb58fSMarkus Armbruster{ "execute": "blockdev-add", 192c3adb58fSMarkus Armbruster "arguments": { 193c3adb58fSMarkus Armbruster "options": { 194c3adb58fSMarkus Armbruster "driver": "$IMGFMT", 195c3adb58fSMarkus Armbruster "id": "disk", 196c3adb58fSMarkus Armbruster "file": { 197c3adb58fSMarkus Armbruster "driver": "file", 198c3adb58fSMarkus Armbruster "filename": "$TEST_IMG" 199c3adb58fSMarkus Armbruster } 200c3adb58fSMarkus Armbruster } 201c3adb58fSMarkus Armbruster } 202c3adb58fSMarkus Armbruster } 203c3adb58fSMarkus Armbruster{ "execute": "quit" } 204c3adb58fSMarkus ArmbrusterEOF 205c3adb58fSMarkus Armbruster 206c75203c8SKevin Wolfrun_qemu <<EOF 207c75203c8SKevin Wolf{ "execute": "qmp_capabilities" } 208c75203c8SKevin Wolf{ "execute": "blockdev-add", 209c75203c8SKevin Wolf "arguments": { 210c75203c8SKevin Wolf "options": { 211c75203c8SKevin Wolf "driver": "$IMGFMT", 212c75203c8SKevin Wolf "id": "disk", 213c75203c8SKevin Wolf "file": { 214c75203c8SKevin Wolf "driver": "file", 215c75203c8SKevin Wolf "filename": "$TEST_IMG" 216c75203c8SKevin Wolf } 217c75203c8SKevin Wolf } 218c75203c8SKevin Wolf } 219c75203c8SKevin Wolf } 220c75203c8SKevin Wolf{ "execute": "quit" } 221c75203c8SKevin WolfEOF 222c75203c8SKevin Wolf 223fe509ee2SFam Zhengecho 224fe509ee2SFam Zhengecho === Missing driver === 225fe509ee2SFam Zhengecho 226fe509ee2SFam Zheng 227fe509ee2SFam Zheng_make_test_img -o encryption=on $size 228fe509ee2SFam Zhengrun_qemu -S <<EOF 229fe509ee2SFam Zheng{ "execute": "qmp_capabilities" } 230fe509ee2SFam Zheng{ "execute": "blockdev-add", 231fe509ee2SFam Zheng "arguments": { 232fe509ee2SFam Zheng "options": { 233fe509ee2SFam Zheng "id": "disk" 234fe509ee2SFam Zheng } 235fe509ee2SFam Zheng } 236fe509ee2SFam Zheng } 237fe509ee2SFam Zheng{ "execute": "quit" } 238fe509ee2SFam ZhengEOF 239fe509ee2SFam Zheng 240c75203c8SKevin Wolf# success, all done 241c75203c8SKevin Wolfecho "*** done" 242c75203c8SKevin Wolfrm -f $seq.full 243c75203c8SKevin Wolfstatus=0 244