#!/usr/bin/env bash
#
# Test change-backing-file command
#
# 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=kwolf@redhat.com

seq=`basename $0`
echo "QA output created by $seq"

status=1 # failure is the default!

_cleanup()
{
    _cleanup_test_img
    _rm_test_img "$TEST_IMG.mid"
}
trap "_cleanup; exit \$status" 0 1 2 3 15

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

_supported_fmt qcow2
_supported_proto file

do_run_qemu()
{
    echo Testing: "$@"
    $QEMU -nographic -qmp-pretty stdio -serial none "$@"
    echo
}

run_qemu()
{
    do_run_qemu "$@" 2>&1 | _filter_testdir | _filter_imgfmt | _filter_qemu \
                          | _filter_qmp | _filter_qemu_io \
                          | _filter_generated_node_ids
}

size=64M
TEST_IMG="$TEST_IMG.base" _make_test_img $size
TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base"
_make_test_img -b "$TEST_IMG.mid"

echo
echo "Change backing file of mid (opened read-only)"
echo

run_qemu -drive if=none,file="$TEST_IMG",backing.node-name=mid <<EOF
{"execute":"qmp_capabilities"}
{"execute":"change-backing-file", "arguments":{"device":"none0","image-node-name":"mid","backing-file":"/dev/null"}}
{"execute":"quit"}
EOF

TEST_IMG="$TEST_IMG.mid" _img_info

echo
echo "Change backing file of top (opened writable)"
echo

TEST_IMG="$TEST_IMG.mid" _make_test_img -b "$TEST_IMG.base"

run_qemu -drive if=none,file="$TEST_IMG",node-name=top <<EOF
{"execute":"qmp_capabilities"}
{"execute":"change-backing-file", "arguments":{"device":"none0","image-node-name":"top","backing-file":"/dev/null"}}
{"execute":"quit"}
EOF

_img_info

# success, all done
echo "*** done"
rm -f $seq.full
status=0
