xref: /openbmc/qemu/tests/qemu-iotests/133 (revision b11ce33f)
1#!/bin/bash
2#
3# Test for reopen
4#
5# Copyright (C) 2015 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_cleanup()
31{
32    _cleanup_test_img
33}
34trap "_cleanup; exit \$status" 0 1 2 3 15
35
36# get standard environment, filters and checks
37. ./common.rc
38. ./common.filter
39
40_supported_fmt qcow2
41_supported_proto file
42_supported_os Linux
43
44TEST_IMG="$TEST_IMG.base" _make_test_img 64M
45_make_test_img -b "$TEST_IMG.base"
46
47echo
48echo "=== Check that node-name can't be changed ==="
49echo
50
51$QEMU_IO -c 'reopen -o node-name=foo' $TEST_IMG
52$QEMU_IO -c 'reopen -o file.node-name=foo' $TEST_IMG
53$QEMU_IO -c 'reopen -o backing.node-name=foo' $TEST_IMG
54
55echo
56echo "=== Check that unchanged node-name is okay ==="
57echo
58
59# Explicitly repeated
60$QEMU_IO -c "open -o node-name=foo $TEST_IMG" -c 'reopen -o node-name=foo'
61$QEMU_IO -c "open -o file.node-name=foo $TEST_IMG" -c 'reopen -o file.node-name=foo'
62$QEMU_IO -c "open -o backing.node-name=foo $TEST_IMG" -c 'reopen -o backing.node-name=foo'
63
64# Implicitly retained
65$QEMU_IO -c "open -o node-name=foo $TEST_IMG" -c 'reopen'
66$QEMU_IO -c "open -o file.node-name=foo $TEST_IMG" -c 'reopen'
67$QEMU_IO -c "open -o backing.node-name=foo $TEST_IMG" -c 'reopen'
68
69echo
70echo "=== Check that driver can't be changed ==="
71echo
72
73$QEMU_IO -c 'reopen -o driver=raw' $TEST_IMG
74$QEMU_IO -c 'reopen -o file.driver=qcow2' $TEST_IMG
75$QEMU_IO -c 'reopen -o backing.driver=file' $TEST_IMG
76
77echo
78echo "=== Check that unchanged driver is okay ==="
79echo
80
81# Explicitly repeated (implicit case is covered in node-name test)
82$QEMU_IO -c 'reopen -o driver=qcow2' $TEST_IMG
83$QEMU_IO -c 'reopen -o file.driver=file' $TEST_IMG
84$QEMU_IO -c 'reopen -o backing.driver=qcow2' $TEST_IMG
85
86echo
87echo "=== Check that reopening works with non-string options ==="
88echo
89
90# Using the json: pseudo-protocol we can create non-string options
91# (Invoke 'info' just so we get some output afterwards)
92IMGOPTSSYNTAX=false $QEMU_IO -f null-co -c 'reopen' -c 'info' \
93    "json:{'driver': 'null-co', 'size': 65536}"
94
95# success, all done
96echo "*** done"
97rm -f $seq.full
98status=0
99