#!/usr/bin/env bash
# group: rw auto backing quick
#
# Test case for relative backing file names in complex BDS trees
#
# Copyright (C) 2014 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=hreitz@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.copy"
}
trap "_cleanup; exit \$status" 0 1 2 3 15

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

# Any format supporting backing files
_supported_fmt qed qcow qcow2 vmdk
_supported_proto file
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat" \
                     "subformat=twoGbMaxExtentSparse"

TEST_IMG_REL=$(basename "$TEST_IMG")

echo
echo '=== Reconstructable filename ==='
echo

TEST_IMG="$TEST_IMG.base" _make_test_img 64M
_make_test_img -b "$TEST_IMG_REL.base" -F $IMGFMT 64M
# qemu should be able to reconstruct the filename, so relative backing names
# should work
# (We have to filter the backing file format because vmdk always
# reports it (as vmdk), whereas other image formats would do so only
# with the backing_fmt creation option, which neither vmdk nor qcow
# support)
TEST_IMG="json:{'driver':'$IMGFMT','file':{'driver':'file','filename':'$TEST_IMG'}}" \
    _img_info | _filter_img_info | grep -v 'backing file format'

echo
echo '=== Non-reconstructable filename ==='
echo

# Across blkdebug without a config file, you cannot reconstruct filenames, so
# qemu is incapable of knowing the directory of the top image from the filename
# alone. However, using bdrv_dirname(), it should still work.
# (Filter out the json:{} filename so this test works with external data files)
TEST_IMG="json:{
    'driver': '$IMGFMT',
    'file': {
        'driver': 'blkdebug',
        'image': {
            'driver': 'file',
            'filename': '$TEST_IMG'
        },
        'set-state': [
            {
                'event': 'read_aio',
                'new_state': 42
            }
        ]
    }
}" _img_info | _filter_img_info | grep -v 'backing file format' \
    | _filter_json_filename

echo
echo '=== Backing name is always relative to the backed image ==='
echo

# omit the image size; it should work anyway
_make_test_img -b "$TEST_IMG_REL.base" -F $IMGFMT

echo
echo '=== Nodes without a common directory ==='
echo

cp "$TEST_IMG" "$TEST_IMG.copy"

# Should inform us that the actual path of the backing file cannot be determined
TEST_IMG="json:{
    'driver': '$IMGFMT',
    'file': {
        'driver': 'quorum',
        'vote-threshold': 1,
        'children': [
            {
                'driver': 'file',
                'filename': '$TEST_IMG'
            },
            {
                'driver': 'file',
                'filename': '$TEST_IMG.copy'
            }
        ]
    }
}" _img_info | _filter_img_info | grep -v 'backing file format' \
    | _filter_json_filename


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