This test has been broken since 3.0. It used TEST_IMG to influence the name of a file created during _make_test_img, but commit655ae6bb
changed things so that the wrong file name is being created, which then caused _launch_qemu to fail. In the meantime, the set of events issued for the actions of the test has increased. Why haven't we noticed the failure? Because the test rarely gets run: './check -qcow2 173' is insufficient (that defaults to using file protocol) './check -nfs 173' is insufficient (that defaults to using raw format) so the test is only run with: ./check -qcow2 -nfs 173 Note that we already have a number of other problems with -nfs: ./check -nfs (fails 18/30) ./check -qcow2 -nfs (fails 45/76 after this patch, if exports does not permit 'insecure') and it's not on my priority list to fix those. Rather, I found this because of my next patch's work on tests using _send_qemu_cmd. Fixes:655ae6b
Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Message-Id: <20191114213415.23499-2-eblake@redhat.com>
96 lines
2.6 KiB
Bash
Executable file
96 lines
2.6 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Test QAPI commands looking up protocol based images with relative
|
|
# filename backing strings
|
|
#
|
|
# Copyright (C) 2017 Red Hat, Inc.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
# creator
|
|
owner=jcody@redhat.com
|
|
|
|
seq=`basename $0`
|
|
echo "QA output created by $seq"
|
|
|
|
status=1 # failure is the default!
|
|
|
|
_cleanup()
|
|
{
|
|
_cleanup_qemu
|
|
rm -f "${QEMU_TEST_DIR}/image.base" "${QEMU_TEST_DIR}/image.snp1"
|
|
_cleanup_test_img
|
|
}
|
|
trap "_cleanup; exit \$status" 0 1 2 3 15
|
|
|
|
# get standard environment, filters and checks
|
|
. ./common.rc
|
|
. ./common.filter
|
|
. ./common.qemu
|
|
|
|
_supported_fmt qcow2
|
|
_supported_proto nfs
|
|
|
|
size=100M
|
|
|
|
BASE_IMG="${TEST_DIR}/image.base"
|
|
TOP_IMG="${TEST_DIR}/image.snp1"
|
|
|
|
TEST_IMG_FILE="${BASE_IMG}" _make_test_img $size
|
|
|
|
TEST_IMG_FILE="${TOP_IMG}" _make_test_img $size
|
|
|
|
echo
|
|
echo === Running QEMU, using block-stream to find backing image ===
|
|
echo
|
|
|
|
qemu_comm_method="qmp"
|
|
_launch_qemu -drive file="${BASE_IMG}",if=virtio,id=disk2
|
|
h=$QEMU_HANDLE
|
|
|
|
_send_qemu_cmd $h "{ 'execute': 'qmp_capabilities' }" "return"
|
|
|
|
_send_qemu_cmd $h "{ 'arguments': {
|
|
'device': 'disk2',
|
|
'format': '${IMGFMT}',
|
|
'mode': 'existing',
|
|
'snapshot-file': '${TOP_IMG}',
|
|
'snapshot-node-name': 'snp1'
|
|
},
|
|
'execute': 'blockdev-snapshot-sync'
|
|
}" "return"
|
|
|
|
|
|
_send_qemu_cmd $h "{ 'arguments': {
|
|
'backing-file': 'image.base',
|
|
'device': 'disk2',
|
|
'image-node-name': 'snp1'
|
|
},
|
|
'execute': 'change-backing-file'
|
|
}" "return"
|
|
|
|
_send_qemu_cmd $h "{ 'arguments': {
|
|
'base': '${BASE_IMG}',
|
|
'device': 'disk2'
|
|
},
|
|
'execute': 'block-stream'
|
|
}" "BLOCK_JOB_COMPLETED"
|
|
|
|
_cleanup_qemu
|
|
|
|
# success, all done
|
|
echo "*** done"
|
|
rm -f $seq.full
|
|
status=0
|