xref: /openbmc/qemu/tests/qemu-iotests/087 (revision e6ff69bf5edfb0475903456a8c7f785635986540)
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